C/C++ Display

C/C++ compilers are available for most embedded microprocessors. More and more embedded system code is written in a high-level language rather than assembly. Our C/C++ Display Plug-Ins display data captured from an embedded microprocessor processor using the original, high-level source code.

The GoLogic™ demonstration software includes a C/C++ example created using a Keil® compiler and trace data captured from an 8051. The demo software is available on our Downloads page.

C/C++ Display Plug-Ins

$500.00 (includes 2 Plug-Ins)

  • Source Code Display PlugIn

  • Function Profiler PlugIn

All prices in US dollars. Shipping and taxes not included. Price and specifications subject to change without notice. GoLogic™ sold separately.

What is the purpose of the source code tools?
  • A software break-point in a debugger halts the microprocessor. In contrast, logic analyzers do not interfere with the real-time execution. When the logic analyzer detects a trigger, the processor’s execution is captured until the logic analyzer memory is full. This provides an unobtrusive, real-time, "snap-shot" of the program execution. The captured data is downloaded from the logic analyzer to the PC where it is mapped back to the original source code.
     
  • Software debuggers often cannot determine why your target system is "locking up". Placing a break point immediately before the crash determines its location, but you can't see what’s going wrong because the target has crashed. In contrast, a logic analyzer's real-time "snapshot" of the crash continues even after the target system fails. The logic analyzer exposes the code leading up to the crash and what section of memory the processor was accessing.
     
  • Real-time embedded systems often need precise verification of how long a function takes to execute. Logic analyzers reveal exactly how much time is spent in each function with nanosecond resolution. Software profilers and emulators cannot provide such precision.
     
  • Software debuggers and emulators do not expose how hardware interrupts affect real-time program execution.
How do I use the source code tools?

#1) Load a symbol table
Load a symbol table into the channel group which represents the address bus...

In order for the source code tools to work, a special debug symbol file must be loaded. The symbol file must contain a line-map. This database maps each line of source code to a specific address bus value. This database is created by your high-level language compiler (C/C++). The database includes the file name and the line number for any given address bus value.

#2) Trigger on source code
Once a symbol file containing line-map data is loaded into the address channel group, you can select a line of source code to trigger the GoLogic...

Triggers can be placed on any source code line with a single mouse click just like a debugger...

Once the source code line is selected, the GoLogic software automatically adds the correct address bus value to the TriggerForm...

#3) Source Code Display
Once a trace has been captured, the Source Code PlugIn maps the address bus values back to the original source code. When an address bus value in the trace data matches an entry in the line-map database, we open the original source code file and scroll to the correct line of text. The effect is that the source code can be scrolled forwards and backwards to animate the program execution...

See more details in the plugin's online help documentation.

#4) Source Code Profiler
The Source Code Profiler PlugIn displays statistical information on the functions captured in the trace data. All address values in the trace capture are compared to the symbolic debug information. The PlugIn sums the statistics any time an address values falls inside a function's range. When this process is complete, a bar graph is displayed showing which functions appeared in the trace data, the number of calls made to each function, the average time spent in each function, and the total time spent in each function...

 

See more details in the plugin's online help documentation.

Which microprocessors and programming languages are supported?

Any programming language and processor is supported if the following considerations are met...

  • The GoLogic must be able to capture your processor's address bus values. If the address pins are not physically available to the GoLogic, or the processor's clock speed exceeds the GoLogic's 125 MHz maximum State Analysis clock rate, then we cannot support your processor.
     
  • The GoLogic™ must have enough channels to capture the address bus. The GoLogic-36™ is adequate to capture 8 or 16-bit processors while the GoLogic-72™ is needed for 32 or 64-bit processors.
     
  • Your compiler must create a symbolic debug file which the GoLogic software can read. The file formats we support are listed below. If your compiler's debug file format is supported, our source trigger and display tools support any programming language including C, C++, Pascal, Fortran, ADA, etc.
Which compilers are supported?

The following compilers have been tested with our software. Other compilers may work if they output the ELF/DWARF 2.0 debugging file formats...

ELF/DWARF 2.0 Format

MetaWare's High C/C++/EC++ Embedded Development Tool Suite supports ARC, ARM, PowerPC, MIPS, x86 and other processors.
The ARM Ltd. ARM Developer Suite (ADS) supports all ARM core processors.
Green Hills Optimizing C++ Compiler supports ARM, PowerPC, 68K, x86, CPU32 and other processors.
The IAR Embedded Workbench supports ARM, 68HC11, Z80, and other processors.
Mentor Graphics Microtec C and C++ Compilers from supports the ARM, PowerPC, ColdFire, 68K and other processors.
Wind River's Diab C/C++ compiler suites supports PowerPC, MIPS, 68K and other processors.
Texas Instruments Code Composer Studio supports their C6000, C5000 DSP and microprocessors.

OMF-51 Format

Keil compilers support the 8051, 251, and C66/ST10 micro-controller families.
 
]Home