JTAGjet Emulatorwww.unimax.co.krwww.signum.com 2004. 03. 18 Unimax Information Systems Co., Ltd.
SIGNUM SYSTEMS JTAGjet Emulator & Multi-Core Chameleon Debugger for ARM 7 & ARM9 cores Robert Chyla VP of R&D
JTAGjet Emulator • ARM7, ARM9, other CPUs, DSPs in SoC • LPT and USB 2.0 • Ultra fast download (1060KB/sec.) • JTAG clocks from 1Khz to 30Mhz • Small and portable • Exceptional power-up and reset handling • Works with ARM debuggers and CCS • Dedicated customer support
ARM/OMAP Support CCS for ARM+DSP Chameleon Multi-core debugger for ARM+DSP RDI 1.51 GNU GDB debuggers (ARM only) Signum Drivers USB 2.0 OMAP ARM JTAGjet JTAG
Chameleon Debugger • Multi-Core support (homogeneous and heterogeneous CPUs) • Supports GNU, ARM, GHS, Tasking, MSFT, Borland, Keil, TI, IAR, NSC, Intel, Mentor Graphics, Palm and other C/C++ compilers • Works on Win98, NT, 2000, ME, XP • Trace window with filtering and timestamp • Access to debugger commands from TELNET
Chameleon Features • Hardware and Software breakpoints • Fly-by display of variables and CPU registers • Drag and drop of variables/functions between windows • Customizable Watch windows • Different memory window formats • Full C level debugging in macro files • Access on the fly to variables and registers if permitted by the CPU
Flash Programming • Automatic type and geometry detection for new CFI (Common Flash Interface) devices. • No need to write or customize the algorithm for future devices. • 100% Trace32 compatibility (ELF programmer prepared for T32 can be used directly). • External command line application for programming only (for production).
Flash Programming - CFI CFI geometry detected: =============================================================================== Query memory device capabilities =============================================================================== Flash at address ....................... 0x0 Manufacturer: Sharp (0xb0), device ID: 0xb1 I/O interface .......................... 16-bit device in 16-bit mode CFI compatible device at address ....... 0x0 Primary vendor command set ............. 0x3, (Intel Standard Command Set) Alternative vendor command set ......... 0x0 Device size ............................ 0x800000 bytes Device interface code .................. 0x1 Device max buffer write ................ 0x20 bytes Erase regions .......................... 2 0x8 sectors of 0x2000 bytes 0x7f sectors of 0x10000 bytes ===============================================================================
Trace32 compatibility • Existing ELF programmer prepared for T32 can be used directly in Chameleon • CMM conversion utility to convert CMM files into Chameleon macros Before (CMM file): ; Set GPIO36 to support mainboard NOR flash device (rom2_cs_n) d.out &GPIO_PAGE %byte 36. d.out &GPIO_CFG %byte 0x4 After (MAC file): ; Set GPIO36 to support mainboard NOR flash device (rom2_cs_n) sb $$GPIO_PAGE = 36 sb $$GPIO_CFG = 0x4 ;CMMCONV_End: Conversion (50 lines) finished successfully. • Whole, complex MSM6000 set of NAND scripts was successfully converted
Compatibility with debuggers • The only emulator working with Code Composer Studio and all major ARM debuggers (using RDI interface) • eBinder (eSol) compatibility for OMAP and other ARM cores • API to integrate with own tools (testing, flash programming, etc.) • API available on Linux for more script-based testing
Road Map for Q2 2004 • Enhancing the T32 functional compatibility • Faster NAND programming • DCC (Data Communication Channel) for non-intrusive monitoring without stopping the CPU • Access to the same device from different debuggers in same time (CCS, ADS, RealView, Palm Universal Debugger) • Eclipse based IDE (new emerging standard) - Q3 2004
CPU Status Window CPU status Click to change flag CPU core registers with bits and fields. Change hex value by overtyping ... … or double-click to edit in a dialog box (to use any C expression). Recent changes in red.
Source Window Current PC Software breakpoint Hardware breakpoint Toggle breakpoint by clicking Fly-by display (decimal & hex formats) Breakpoint attributes control (right-click on breakpoint)
Source Window - Operations Display mode Source: C/C++ source Mixed: source and ASM Disassembly: ASM only Viewing (display changes) + drag&drop feature Running (CPU control) Breakpoints control Text search and editor call Options/settings
Source Window - Viewing Drag&drop address or function (here dropping delay function to the same source window) Pick the module to view from the list View at any C/C++ or CPU address (with history) Optional view at desired source line
Source Window - Mixed Mode Source window may display program in mixed mode (source + corresponding code) Address Contents in hex, ARM, Thumb, Data coloring ASM mnemonics C/C++ source line Fly-by display for CPU registers too Addresses shown as symbols
Watch Window Watch windows can be customized to display variables and any C/C++ expressions. Any C/C++ expression Full C/C++ variable types Expanding/ collapsing structures, arrays, pointers, C++ classes ASCII strings Type-dependent display Changes in red Enum type name and value Memory address for variables/members
Watch Window - Operations Adding variables by drag & drop Selective deleting (single members of structures/arrays) Adding by entering any C/C++ expression Display format control - type-dependent, - hex, decimal, binary For single item or all. CPU suspend control (only if non-intrusive access is not possible) Write/re-read on demand (possible when CPU is running) Editing by double click or ENTER. Easy increment/decrement (+/-).
Locals Window Locals window is a kind of Watch window that automatically displays current set of C/C++ function/block level local variables. Complex variables are shown with + icon at left column. Clicking on the + icon expands and shrinks complex variables.Values changed since last display are shown in red.
Registers window Name (click to edit definition) Value (click to change value) Address Attributes (RdWr, Rd, Wr, Volatile) Adding & Grouping Registers Value with fields (tool-tip) Menu with all operations
Registers Window (editing) Advanced editing (with fields) Simple editing Editing of definition
Call Stack Window Shows current sequence of C/C++ functions and subroutine calls. Location (name+offset) Source file reference Physical CPU address Recent function on top Double-click on a function synchronizes source window (yellow marker).
Complex Events (HW breakpoints) Stop when writing data to the buffer from code range. Address (C expression) Both data address and data value. 8 bit write of data Break on an event Data value (with mask) Sequencing of events Corresponding commands Address (with mask) Operations (activate, name, save, load)
Command Window Command window allows text-based commands and macros. Over 200 commands!! Access to C/C++ symbols Access to CPU registers Built-in help Memory access Disassembler with C/C++ symbols Assembler CPU control Macros with parameters Conditional execution Automated testing Pseudo-variables Remote access Session logging
Command Window - Macros Macro toolbar - different docking Horizontal Vertical Floating Macro list and maintenance do command executes macros
Command Window - Testing Tbreak.tst - test called from test.mac Test.mac - testing macro Test t0.tst passed Call Expected register value Observed value different - error Test failed msg. Many tests in a single macro Test statistics Logging and control possible (not shown)
Command Window - Remote Access IP and port of Chameleon session Local debugger window Users may type at the same time Communication between users Telnet on remote station
Virtual IO (C runtime functions) scanf call and text entered by the user. C/C++ program with console IO calls (printf/scanf). Virtual IO window. File IO (fopen/fread/etc.) and low level IO (open/ read/etc.) are handled in background (without display in window). Signum Systems can provide runtime functions for compilers which do not support C level IO.
Multi-Core Debugging Multi Control Tool Bar CPU #1 CPU #2
Signum Systems delivers Emulators and Debuggers since 1979 All systems and software are designed entirely in the USA in Moorpark, CA.