I just saw the most amazing demonstration of an incredible tool -- µC/Probe from Micriµm. This little rascal is perfect for seeing what's going on inside the application(s) running on your microcontroller.
Things have certainly come a long way since I was a young engineer. In those far-off times, debugging an application could be a real pain in the nether regions. We were limited to some fairly pedestrian techniques, such as flashing LEDs on the board and/or using "printf()" statements, all of which were intrusive because they required modifications to the code and recompilation. There's also the fact that -- in certain situations -- modifying the code can change the behavior you're trying to debug in the first place.
Another alternative is to use a debugger, to set breakpoints, to run until a breakpoint is reached, and to then single-step through the code. After many years of this, I've come to the conclusion that debugging using these techniques is not as much fun as you might think.
And then we have µC/Probe, which does things in a completely different way. One big point to note here is that µC/Probe is completely orthogonal to whatever debugging techniques you are currently using. It doesn't replace anything -- it's just another tool in your arsenal.
One way to think of this is like PowerPoint. Suppose you had been creating presentations using only Microsoft Word, and then someone introduced you to PowerPoint. You would still continue to use Word for many tasks, but once you'd gotten used to creating your presentations in PowerPoint, you wouldn't want to go back to not using it. Well, this is pretty much the way you'll view µC/Probe.
µC/Probe is a universal embedded system monitoring tool for use at run-time. By means of an associated Windows application, you can monitor and modify the values of any variable, any memory location, and any I/O port on the fly while your application is running.
This little beauty works with any compiler that can generate an industry-standard ELF/DWARF file. It also works with any 8-bit, 16-bit, 32-bit, or 64-bit MPU, MCU, or DSP, and it's truly OS-agnostic because it will work with any OS or RTOS. Having said this, if you happen to be working with Micri&mocro;m's µC/OS-III RTOS, then µC/Probe has what they describe as "Kernel Awareness," which means you can track the status and activity on all of your tasks in real-time as illustrated below.
µC/Probe can interface to the target processor and application via a mind-boggling array of techniques, including RS232C, TCP/IP, USB (requires target resident code, which is provided by Micrium), Segger J-Link, and JTAG (through debugger proxy: IAR C-Spy, ARM DS-5, Eclipse). The folks from Micriµm showed me a variety of demonstrations, including the power meter illustrated below. Using their GUI running on the PC, you can drag-and-drop things like dials and sliders and suchlike, and then connect them to variables, memory locations, and I/O ports in the target system.
There were so many amazing things about this that my mind boggles. For example, in addition to monitoring variables and suchlike that modified the state of the displays in real-time, you could also change the values of those variables using sliders and/or simply typing in new values.
Another amazing thing was that they kept on changing the mechanism by which µC/Probe was talking to the test system, switching from RS232C to TCP/IP to USB to J-Link to proxy (all of the techniques noted above). The thing that blew my mind was that the RTOS and its tasks were up and running throughout the entire demonstration -- we didn't have to stop or pause anything while swapping from one connection mechanism to another or whilst monitoring or modifying variables -- everything took place on-the-fly in real-time.
To Page 2 >