Embedded software is the term given to computer code that operates in tandem with hardware. It’s usually pretty small and specific, rather than as broad and adaptable as general-purpose software like you might use on a PC or Mac. This makes embedded software something of an anomaly from a developer’s perspective: it needs to be very specific in scope, but also very adaptable to the particular hardware for which it’s intended. Indeed, this is why so many different approaches to development have sprung up for embedded software. The trick is knowing which tools are best suited to your needs. Here we take a look at 6 of the best embedded systems software tools out there right now.
Kicking off: KiCad
KiCad has long been the defacto open source CAD tool for PCB design. It’s a great choice for anyone building or debugging hardware, or involved in the design of electronic products. The open source nature of KiCad means that it’s well supported and there are libraries available for a huge range of components. You can also export your designs in a number of formats, such as to the net or gerber to create your own printed circuit board (PCB). KiCad is also pretty easy to get started with and is available on both Windows and Mac. While there are a range of CAD tools that offer similar functionality to KiCad, KiCad has the advantage of being free and open source.
Firmware development: Buildroot and Open-source Integration Platform
Buildroot is a very popular embedded systems software tool for building firmware. It’s a great choice for anyone working with a mega32 microcontroller, such as the Arduino Uno, or other common and well-supported chips. Buildroot is simple to use and doesn’t require a lot of technical knowledge to implement. You can also use Buildroot to create an integrated development environment (IDE) for your code, or to generate a firmware update system (FUS) for your product. Buildroot is cross-platform and supports a range of processors and components. The downside, however, is that Buildroot isn’t open source, and is therefore harder to customize. If you’re looking for an open-source alternative, you’ll want to try Open-source Integration Platform (OP-IDS). This is a cross-platform embedded systems software tool available for a range of processors and architectures. OP-IDS is very flexible and supports a wide range of features and components.
Firmware testing: Espressif ESP SDK and NeoEDA
NeoEDA is a great embedded systems software tool for testing and debugging firmware. It includes a simulator that lets you model and test, even if your firmware isn’t yet complete. The NeoEDA debugger lets you step through your code on the fly, and also offers a wide range of tools for inspecting variables. NeoEDA is available on a number of different platforms and is also open source, so if you need to tinker with the source code you can do that too. Normally, NeoEDA is used with the ESP SDK, which is Espressif’s official embedded systems software tool for working with ESP8266-based products. The ESP SDK is very flexible, and lets you configure a wide range of hardware options.
Debugging: adb and ngrok
The ADB (Android Debug Bridge) is an embedded systems software tool that lets you connect to an Android device over a USB cable, and debug it remotely. This makes it an essential tool for working with mobile applications, and it’s also useful for embedded systems software development. ADB is a core part of the Android operating system, so you can find it on most devices running Android 2.2 or higher. The Android Debug Bridge is available as part of the Android Software Development Kit (SDK), and can be installed on Windows, Mac, or Linux. You can use ADB to inspect a device, view logs, and send commands. You can also use it to install or uninstall apps, or even to sideload an app onto a device. ADB is very simple to use and can be extremely useful for embedded systems software developers.
Integrated development environment: Eclipse with the GNU ARM Eclipse plugin
Embedded systems software development often involves running an IDE, such as the Eclipse IDE. The Eclipse IDE is cross-platform, open source, and extremely flexible. It’s also the go-to tool for many embedded systems developers, thanks to the wide range of extensions available. The best thing of all is that the Eclipse IDE is free and open source, and also supports a wide range of processors and architectures. Eclipse also works well with other embedded systems software tools, such as the GNU ARM Eclipse plug-in, which provides project and build management. The plug-in also lets you search and download libraries, and offers code navigation and analysis features. The GNU ARM Eclipse plug-in is a must-have for any developer working with embedded systems software in the ARM architecture.
Automated testing: Hammer Test Framework and Shimmer
If you’re building a piece of embedded systems software that will be used in the wild, you’ll want to include some kind of automated testing. One of the most popular options for embedded systems software testing is the Hammer Test Framework, developed by Facebook. Hammer is based on C++ and is designed for testing software that runs on embedded systems. It lets you create automated tests, and it also has some support for testing embedded systems software. If you’re looking at testing embedded systems software, you might also want to try Shimmer, which is designed specifically for this purpose. Shimmer is built on top of C++, and is available on a wide range of processors.
Embedded systems software is a fascinating world, and a great place to be a developer. There are lots of challenges and new technologies to explore, and embedded systems software is always evolving. While development can be challenging, it’s also rewarding, as you get to see your code in action, and maybe even change the world.