This article describes about the requirements, features and usage of Intel(R) System Debugger.
JTAG debugging requires a target – host environment. Intel® System Studio must be installed on the host system. To connect the host to a Silvermont or Haswell target an Intel® debug probe ITP-XDP3 must be used as other models are currently not supported for these platforms (please consult the release notes for details on processor support against probe types). The following photo shows what is delivered when you order an ITP-XDP3.If you cannot use the US power cable you will need to get a standard IEC-60320 C13 cable as usually used with desktop PCs:
Each target platform must be enabled to support JTAG debugging, esp. there must be an XDP connector on the PCB such as on this board:
Consult your system vendor's documentation for details about the XDP connector and enabling of JTAG debugging.
On the host computer both Linux and Windows operating systems are supported. Detailed and up-to-date software and hardware requirements for the host and target environments are described in the Intel® System Studio release notes (links are in the reference section below) and the Intel® JTAG Debugger User and Reference Guide installed with Intel® System Studio.
An in-depth view into Intel® processors supporting silicon specific features, including - architectural registers - Intel® Streaming SIMD Extensions - as well as graphics chipset registers for Atom™ Processor chipsets You will find the graphical representation of peripheral registers, corresponding bit fields and their online documentation from within the debugger GUI very helpful when examining or altering a system configuration.
View execution history and gain a deep understanding of the system wide executed code flow. Find errors by analysing the execution path and identifying the root cause of exceptions.
The Source Files Window shows, within a tree structure, all source files loaded for the target. At top level the libraries, below that the folders and as leaf nodes the source files itself are displayed. Use the search field to filter the displayed files. Double click on a source file in this tree to open the file in a Source Window.
Debugging a Linux* system is much easier with the Intel® JTAG debugger. It shows all currently active kernel threads and a list of all currently loaded kernel modules with status information and the memory location of the initialization and clean-up methods. To debug a kernel module set breakpoints on module load, initialization or clean-up/exit. On reaching a breakpoint the module source code is displayed - now single step through your code. Unloaded kernel modules are debugged by entering the modules name and then defining breakpoints just as with modules already loaded into the OS.
If a target is reset or powered-off the debugger retains the setup and once power is restored the debugger will attempt to halt the target at the reset vector.
It is very easy to translate any address between the physical and virtual address spaces. Use this to identify what physical memory areas your code is actually accessing or running from.
A rich set of powerful debugging commands are available for debugging in a non-interactive mode. Results can be logged and analysed on completion. This feature is ideally suited for regression testing. Here is a simple example I used after resetting the target to get over the initial start-up code and load symbols for the EFI firmware I was debugging:
! creation date: Wed Nov 06 14:56:30 2013 STEP /ASSEMBLER 38 efi "loadthis 0x00000000FFFFB5D8" run until @line 1409
The Intel JTAG Debugger not only allows source code debugging of your UEFI firmware / BIOS, it also has some nice features to help you find your modules! One of the difficulties is locating the modules and assigning the correct source code to the assembly code. Once you have stepped into your code type this command into the debugger console:
. This tells the debugger to look for a module header starting at the current IP. Once the header is found the debugger will load the source code for that module and display your source! This function is especially nice to have once the BIOS has moved itself to RAM and all the addresses are wrong again - a simple
will find the module header once again and you are back into your source code! Here is a screen shot of what you see after the header has been found. You can see the command in the console window and that the debugger has loaded the C-source code.
Selected Intel® Atom processor types allow flash memory programming through the JTAG debugger probe. Please consult the release notes for details on supported processors and Flash devices.
In future Intel® System Studio will support new microarchitectures and CPU products as they are launched into the market. With this release Intel® System Studio continues to be the excellent choice for embedded application and system software developers on Intel® based platforms.
Webinar -"Intel® System Studio: Embedded application development and debugging tools"
System Software Debug with JTAG and Event Trace
How to Find and Fix System Software Issues Fast - Intel® System Studio's Intel® JTAG Debugger
Intel® System Studio release notes
Intel® System Studio main page
Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.
Notice revision #20110804