7 Tools Everyone in the Embedded Systems Industry Should Be Using

For those unfamiliar, an embedded system is a combination of computer hardware and software. Like all computers, embedded systems run on a hardware platform that is built around a microcontroller or a microprocessor. They also include other features like a power supply, timers, internal memory, and serial communication ports that allow them to interface with other systems. Embedded systems are highly modular in their structure and applications, but all serve the same core purpose: to coordinate and execute tasks according to a predefined set of rules.

Given that, an embedded systems engineer has two jobs:

  • Build a hardware system with the required components to facilitate the desired task
  • Program the microprocessor to produce the correct output for a given input

What Makes Tools Essential

In this blog, we're focusing on the essential tools that engineers working with embedded systems should be using. Together, these tools will allow engineers to consistently produce, test, analyze, improve, and deploy software for embedded systems.

Embedded Systems Engineer Glasses Placed on Desk Looking at Computer Data

1. Integrated Development Environment

If we're talking about integrated development environments as a necessary tool for embedded systems engineers, we're playing a clever trick that should be noted before we continue. An Integrated Development Environment, or IDE, is available as a single piece of software, but it's actually several important software development tools combined into one. An IDE contains all of the most important tools that are necessary for embedded software development.

Major software companies have all released IDE software, such as Android Studio, Microsoft Visual Studio, and Adobe Flash Builder. While IDEs vary in their features and benefits, they all contain at least three common elements: a code editor, a debugger and a compiler.

2. Engineers Create Code with a Code Editor

If you're programming an embedded system, you'll need to use a code editor to start developing the code. Source code editors are a fundamental tool for computer scientists. Just like word processors allow users to create written content in a literary format, a code editor enables a program to write code in a suitable form for use in embedded systems software.

Source code editors can be used with a variety of programming languages, including C, C++, Visual C++, and Java. Some code editors include special features like syntax highlighting, indentation, autocomplete and brace matching functionality that make it easier for programmers to write code more quickly with fewer mistakes. Programmers or engineers can use a word processor to write code, but they won't benefit from any of the tools and features provided by source code editing software. The features and integration offered by source code editor software are what makes code editors and IDEs so important for embedded systems engineers.

3. IDEs Include a Code Compiler

Compiler software plays a vital role in embedded systems development. When an engineer or a programmer creates a piece of code using one of the common programming languages, such as Java or C++, something important must happen before the computer can use the code. Once the source code is finalized, compiler software is used to convert the source code into a different kind of code called Object Code.

Object Code is a sequence of statements or instructions in a language that the computer can understand, usually either binary or register transfer language (RTL). Because it is difficult for humans to program in binary, we program our embedded systems in C++ or Java, then use a compiler to translate the source code into an object code that our computer is ready to use.

Compiler software is typically included in an IDE, but it can also be purchased on its own. A professional quality compiler can apply optimizations that minimize the size of your code in your embedded system's internal memory and reduce RAM usage, meaning that you can use smaller and less expensive components to cut costs.

4. A Debugger Tool is Used to Investigate Code Errors

Mistakes are bound to happen, even for programmers and engineers who program and test embedded systems. A debugger is a software tool used by programmers to test and debug other programs, including those used to power embedded systems. Debuggers offer a unique set of features that help programmers detect and isolate different types of errors. A debugger can be used to run a program step-by-step, enabling the programmer to investigate how each line of code impacts output values and to detect errors that lead to incorrect outputs.

Debuggers also include a functionality called breakpoints that allow the user to measure whether the code is working correctly. If a developer inserts a breakpoint on Line 22 of their code editor, the debug tool will compile the program, execute it up to that line, and then stop so the user can check that output values are correct, and the program is functioning correctly.

Embedded systems developers should prioritize selecting hardware components with features that support debugging. Some microprocessors are equipped with a trap flag, allowing the processor to operate in a single-step mode so the user can run programs one line at a time to check for errors.

5. Simulators Help Developers Model and Test Embedded Systems

Simulation software plays an essential role in the development of embedded systems software. It's used whenever it would be inconvenient, costly, dangerous or impractical to conduct a test on embedded system software using real hardware.

When engineers don't have real hardware available, or they need to be sure that a piece of hardware can execute a program within its memory and power supply constraints, a simulator is used. Simulators are also used to debug programs without running them directly on embedded systems hardware.

Simulators allow developers to confirm whether their code really works by modifying conditions in a simulated environment and ensuring that the correct output is produced. Developers can simulate their hardware setup, input from sensors and input from the human user interface to determine whether their code generates the correct output.

6. A Protocol Analyzer Helps with Manual Troubleshooting

Embedded systems are frequently used inside other devices and expected to run on their own for years with minimal interference or maintenance. As a result, embedded systems engineers must pursue an extensive troubleshooting strategy to ensure that the systems the design are free of errors or bugs and can run entirely on their own for the foreseeable future.

A protocol analyzer is the ultimate troubleshooting and debugging tool for embedded systems engineers. Protocol analyzers are a hardware-and-software tool used to analyze data traffic across a communication channel or bus directly. Engineers must choose a protocol analyzer that is compatible with their chosen communication protocol for the embedded system, whether it be I2C, SPI, MDIO, or something different.

Protocol analyzers make it easier to debug embedded systems by allowing engineers direct insight into the movement of data packets on the bus. This makes it easy to detect, isolate and correct hardware and software bugs that cause the system to function incorrectly or unexpectedly.

7. Host Adapters Facilitate Electronic Communication with Embedded Systems

Programmers that are developing embedded systems need tools that facilitate communication using the most common communication protocols for embedded systems: Inter-Integrated Circuit (I2C) protocol and Serial Peripheral Interface (SPI) protocol. The I2C protocol was developed to connect a CPU to peripherals chips in television sets in 1982, while the SPI originated in 1979 with the first microcontroller.

Today, products like the Aardvark I2C/SPI Host Adapter are used by developers who need to facilitate communication and data transfer between their own Mac, Windows, or Linux machine and a downstream embedded system. The adapter, which plugs into your computer's USB port, allows the transfer of serial messages between systems using the I2C and SPI communication protocols.

For developers who wish to simultaneously communicate with their devices while monitoring them in real time, the Beagle I2C/SPI Protocol Analyzer can be used in conjunction with the Aardvark adapter.


Numerous hardware and software tools can play a role in embedded systems development, but we've picked seven that all developers should get their hands on. If you're developing a product with embedded systems, you'll need an IDE that includes a source code editor, a code compiler, and a debugger.

You'll also want simulation software for your project so you can test your embedded system virtually without using any hardware. Once you've configured the hardware for your embedded system, a logic analyzer can help track the execution of your program in real time and improve your error detection. Finally, developers need a host adapter that enables them to communicate between their own computer and a downstream embedded system.

Need more information? Have questions to ask? Feel free to email us at sales@totalphase.com. You can also request a demo specific for your application.

Request a Demo