Imagine you’re a software manager and are in charge of developing an embedded system. What tools will you use to debug? In this post, I will cover the common tools and instrumentation for embedded system debugging.
Host Machine with Test Scaffold
We do not want to begin our troubleshooting on the target system. Troubleshooting on the target system present a lot of complications. We need a host machine with test scaffold because the hardware might go through several iterations and is often replete with bugs and unstable early in the development process. It is also hard to create repeatable tests on the target system.
Think of a test scaffold as a test site on your host computer that mimics what would occur on the target hardware. Just like a construction scaffold, it is a temporary work area.
Finally, since embedded systems do not often contain a permanent storage medium, it can be difficult to keep track of the results of the debugging process. There is no “GitHub”-like system that can be implemented on an embedded target system.
Instruction Set Simulators
I need instruction set simulators in order to measure response time and throughput as well as to debug the startup code.
The assert macro will help me to test my assumptions since it stops as soon as one of those assumptions is false.
Mechanism to Get the Software into the Target System
The locator output file needs to get into the target system somehow. We have a lot of options: PROM programmers, ROM emulators, In-circuit emulators, flash memory, and monitors. My personal choice would be PROM programmers since this is the “classic” way to get software into the target system. Using PROM programmers means that we are able to make changes to the software when we deem necessary.
A multimeter is a must-have tool for testing hardware. The kinds of multimeters that exist nowadays are a voltmeter, ohmmeter, and ammeter all-in-one tool.
Oscilloscopes are another useful tool for testing the hardware. Oscilloscopes enable us to receive and display analog signals.
Logic analyzers enable us to receive and display digital signals instead of analog signals. This tool is useful for hardware debugging.
This tool is used as a replacement for the actual microprocessor on the target system. With the in-circuit emulator, you can to debug like you would with a normal debugger in a desktop environment.