With increasing complexity of microcontrollers and circuits, debugging is becoming increasingly important. But which diagnosis and debug functions are really needed and what is unnecessary? The following are 10 tips on what to pay attention to when selecting a suitable debug tool.
1. Do not skimp on the debug interface. The debug interface allows monitoring of hardware and software as well as their interaction, and is one of the most important possibilities to test a microcontroller system not only as a black box.
2. Advantages of a trace interface. A trace is always essential whenever the program flow or the change of program data must be completely reconstructed to find the cause of a problem. However, besides that, an additional high-performance interface for code trace and/or data trace is highly recommended.
3. Use special emulation devices. For some of the very high-performance 16-bit and 32-bit microcontrollers there are special emulation devices, which have been available for a long time, that are 100 percent footprint compatible with the production chip. In addition to the production chip, these emulation devices have also implemented an additional debug logic and trace logic.
4. A picture tells more than a thousand words. To maintain an overview of a modern SoC application, the debug tool should contain a view of the system in various levels of abstraction. Typical examples of this are the graphical representation of data and process variables over time and in relation to each other, function runtimes and program flow.
5. A debugger is far too good to be used only for troubleshooting. Nowadays, modern debuggers are often far more than just an interactive tool for troubleshooting.
6. Software and hardware know-how are equally important. When developing a complex embedded application not only pure hardware or software specialists are required. At least one developer on the team should additionally also be very familiar with hardware-related software and possess appropriate knowledge of on-chip diagnosis capabilities.
7. Consider the complete runtime of the application. The debug interface not only plays an important role during development, but also in the production and diagnosis in the field. Unfortunately, this is still far too seldom taken into account during the application development.
8. Is monitor-based debugging out of date? Even in the age of standardized debug and trace interfaces, monitor-based debugging still continues to have its justification
9. Synchronization of multi-core SoCs. An increasing number of modern SoCs contain two or more microcontroller cores. In this regard, particular attention should be given to on-chip synchronization capabilities.
10. Pay attention to the architecture support. The entire environment of the microcontroller architecture also plays an important role. Admittedly, the latter is difficult to measure. However, if the tools offer support for architecture-specific features, this is usually a reliable indication that the respective tool vendor has in-depth system know-how and that there is a intensive cooperation with the respective MCU manufacturer.