Hypervisor-awareness - a new debug extension of TRACE32
Since this year, Lauterbach provides the high performance capabilities of its new hypervisor support.
Virtualization in Embedded Systems
The virtualization concept allows multiple operating systems to be run in parallel on a single hardware platform. Currently, virtualization is being used more and more in embedded systems. For example, in the cockpit of a car, real-time applications that are monitored by an AUTOSAR operating system run on the same hardware platform parallel to Android based user interfaces. A hypervisor, which is the core of virtualization, ensures that everything works reliably and efficiently.
Extended Debugging Concepts
TRACE32 was systematically extended in 2016 by Lauterbach to provide its customers unlimited debugging capability with a hypervisor. The following extensions were added:
The most important objective for all extensions was seamless debugging of the overall system. This means that when the system has stopped at a breakpoint, you can check the current state of every single process, all VMs, plus the current state of the hypervisor and of the real hardware platform. In addition, you can set a program breakpoint at any location in the code.
- A so called machine ID" was added to virtual addresses. The machine ID allows the debugger to access the context of the active VM as well as the context of all inactive VMs.
- Using the new hypervisor-awareness, the debugger detects and visualizes the VMs of the hypervisor.
- Instead of only being able to debug a single operating system, it is now possible to debug several operating systems at the same time.
Like the OS-awareness functionality, there is now a hypervisor-awareness functionality. This functionality provides the debugger with all information on the hypervisor running on the hardware platform. The awareness for the particular hypervisor is created by Lauterbach and provided to its customers.
The operation of a debugger must often resolve contradicting requirements. One user group wants simple and intuitive operation while another group demands maximum flexibility and full scripting capabilities. The basic idea is actually very simple: if the debugger stops at a breakpoint, then the GUI visualizes the application process that triggered the breakpoint. If you are interested in a different application process, then you simply open the TRACE32 global task list. All tasks executing on the overall system are listed there. You can select the task you want to display in the GUI by double-clicking on the task. The global task list also offers a simple way to set program breakpoints for a specific task. Functions and variables can be addressed by name as per usual when debugging. Maximum flexibility and full scripting capabilities can be obtained using the TRACE32 commands.