We also have a printable brochure listing the available development tools
» Find Out MoreRVD takes the hassle out of debugging an ARM+DSP chip, at least provided the DSP is one of those supported by RVD. RVD can control both of these at the same time, i.e. simultaneous multi-core debugging.
Some chips even have more than one ARM core, and RVD supports debugging of these in the same GUI environment as well.
So what does it mean to debug more than one core at the same time?
RVD improves productivity by allowing development of different parts of the system to occur in parallel. For example, you could develop a message passing protocol between an ARM and a DSP by alternatively writing and debugging code in each processor. Bugs which crop up in either processor can be quickly fixed. Problems which require a complex setup to repeat can be handled by logging the commands from the GUI into a file, and replaying the file each time after resetting the system.
RVD supports OS Aware debugging. Basically this means you can look at your RTOS resources and data structures, and set breakpoints at the process/task level rather than the system level.
RVD can display various of useful resources, including Threads, Processes, Libraries, Semaphores, Timers, Event Flags and queues.
Popular RTOSs ATI Nucleus and ThreadX are supported at present. Others will follow, with Symbian OS high on the list. RTOS vendors supply an OS Abstraction library for RVD which you can connect up to allow RVD to see inside your RTOS.
Do you wish your debugger could decode memory-mapped peripheral registers and display them in human-readable format, rather than just as numbers? RVD can do this, decoding bit fields and displaying values according to a configuration file you supply.
ARM supplies configuration files for common Integrator boards, so if you are using an Integrator platform RVD provides this functionality out of the box.
With this feature RVD can also handle programming of flash memory automatically. Simply load a program or file into the region of memory which is flash and RVD will automatically program the flash for you.
With RealView ICE (or MultiTrace) you can capture a historical trace of instructions and data accesses in real time, without affecting the target. RVD allows you to view this information within the same GUI environment as your other debugging activities. Profiling views show you where your system is spending its time.

You can set simple 'trace points' simply by right-clicking in the code window - you can even select regions of code to be traced with the mouse. More complex trace facilities are accessed through dialogues.
Every operation you initiate in the RVD GUI has an equivalent on the command line and RVD displays it as you click. It also provides a command line entry line, so you can type commands if you like. Sometimes it is faster to type a command like 'break do_fft' rather than browsing for the do_fft function and setting a breakpoint.
Also, commands can be logged to a file. This file can then be used as a script to repeat the commands again. This is useful when you take a large number of steps to get your program to a particular stage which you need to repeat again and again. Redoing all those steps with the GUI would be painful - running a script takes seconds.
RealMonitor allows you to debug foreground tasks while interrupt tasks continue to run. This does not happen with the usual RealView ICE or Multi-ICE usage. RealMonitor works by putting a small program on the target (under 2 KB in size) which communicates with the host computer using the Debug Communications Channel. It still uses the ICE unit to transfer the data, but does not force the core into debug mode (thus halting execution) when communication takes place.
Breakpoints in the foreground application cause an exception which is handled by the RealMonitor program rather than the ICE unit. Since interrupts are still enabled and the core is running, interrupt tasks continue to operate. The foreground task can be stepped or continued and memory can read and written. You can also set and clear breakpoints.
RealMonitor also supports reading and writing of memory while the target is running. To do this, the controller forces a processor exception, jumping into the RealMonitor program to handle the request.
RealMonitor is great for changing variables to test adjustments without having to stop the processor, for example in motor control applications where stopping the processor might cause a component malfunction.
RealMonitor makes use of the EmbeddedICE-RT logic present in newer ARM cores. For those which don't have these, RealMonitor can still operate provided your code is in RAM. If the code being debugged is in ROM, then you need to have a core with EmbeddedICE-RT to allow RealMonitor to work.
RVD is sold as a base product with a number of add-on components. Once you have the base product you can add any of the following features simply by purchasing a license for it: