Codescape Debugger

Features
  • Simultaneous multiple debug probe connections to multi-SoC, multi heterogeneous cores, multi-VPE with multi-OS task support.
  • OS-aware debug support for Linux®, FreeRTOS, Nucleus™, ThreadX®, RIOT, Zephyr™, MyNewt and MEOS™.
  • Ultra-fast debugging performance using intelligent, low latency probes e.g. < 1 sec single step even with multiple connections, VPEs, TCs & threads. > 1 MByte/sec binary load.
  • Configurable, modern, real-estate conscious GUI.
  • Fully scriptable; from creating regression tests to creating your own debug region.
  • Run external tools such as make and user scripts at a key press.
Benefits
  • Free to use.
  • Powerful system for all members of the SoC and application development team.
  • Single environment for the entire development cycle.
  • Mature solutions that minimize design risk and reduce time to market.
  • Proven technology over 20+ years and used by major SoC manufacturers.
  • Created entirely by MIPS.
Applications
  • IP evaluation.
  • SoC design.
  • SoC bring-up.
  • Driver development.
  • Application development.
  • Code optimization.

Host Environments
Debug Environments

The Codescape Debugger Development System

Codescape Debugger forms the hub of a system that facilitates all stages of development alongside a low-level command-line console, built-in scripting, intelligent debug probes, emulators and simulators. For pre-hardware application development, Codescape Debugger works with the MIPS Instruction Accurate Simulator (IASim), QEMU emulator and RTL Simulators. For silicon bring-up, application development, and testing on real hardware, Codescape Debugger can connect to MIPS’s range of debug probes supporting JTAG, cJTAG and EJTAG equipped targets or use virtual connections to Emulators or Cloud FPGA. Host connection via USB or Ethernet enables remote debugging across networks.

How the components fit together…

The Codescape Debugger User Interface

Codescape Debugger is driven from its own powerful GUI, running natively on Windows and Linux hosts. For fast, efficient debugging, it provides a host of useful debug views and features such as editable memory, drag and drop between views and real-time OS-aware debugging. For more advanced product development, Codescape Debugger has many state-of-the-art features such as built-in graphical scripting, a fully-annotated memory mapped peripheral inspector, real-time event tracing and support for multi-SoC, multi-core, multi-VPE and multi-OS task development and debugging.

What Can Codescape Debugger Debug ?

Codescape Debugger has been designed from the ground up to have simultaneous multiple connections to multiple, heterogeneous, multi-core SoCs with hardware threads, virtual processors (VPEs), hardware thread contexts (TCs), and multiple software threads.

Linux Application Debug

Linux applications can be debugged via gdbserver running on Linux on the target. Connecting to gdbserver over a specified port, Codescape Debugger displays gdbserver as a target, and when debugging Linux user code with multiple threads, each pthread can be debugged.

Semi-hosting

The MIPS Toolkit and Codescape Debugger provide support for semi-hosting functions from a target via a built-in API in the toolkit. The Codescape Debugger allows you to set a root directory for semi-hosting operations so that programs running on a target can use relative address paths for file operations. No additional libraries or function calls are required. Semi-hosting operations supported include file operations such as fopen, fwrite, fread and fclose and outputs such as stdout, stderr and printf.

Debug Regions

Codescape Debugger provides a host of useful debugging regions to display data, and using the extensive scripting support you can create bespoke regions and plug-ins to display your data in unique ways. Regions can be tied to specific threads, or the current thread, can be docked, floating or stacked in tabbed groups. Data can be dragged between regions and targets using intelligent, contextual drag-and-drop.

Source Fully featured syntax highlighted editor.
Hex Editor Edit and display binaries in many formats.
Disassembly Can show interleaved source and disassembly.
Register Layout is user definable and can display in different radices/formats.
Callstack Can unwind through interrupt handlers. Uses code reading and debug info.
Memory Shows all types of memory (RAM, DSP, CORE etc.) in many different formats.
Breakpoint Shows breakpoint state for all, current, or specific threads.
Watch Watch and edit values of variables or complex expressions.
Local Watch Automatically populated with variables in the current scope.
Peripheral Watch Populated with the peripheral registers. Bit fields shown/edited as mnemonics.
RTOS Watch Automatically populated with RTOS data e.g. threads, mutexes, events etc.
RTOS Trace Graphically displays the Task execution captured by the RTOS.
TLB Displays all TLB in raw or decoded format.
ICache Displays the ICache in a raw or decoded format.
DCache Displays the DCache in a raw or decoded format.
Script Create your own region using wxWidgets & Python.
Terminal VT100 emulator. Stream output to file.
Profiler Low impact PC capture. Data shown next to code.
Realtime Trace Graphical representation of Real Time Trace data.
MIPS Realtime Trace Setup / Display MIPS iFlow/PD Trace data.
Overlay Shows the current status of Overlays.

Make Manager

Codescape Debugger’s Make Manager provides a quick and simple way to call ‘make’ and see your build output without exiting the Codescape Debugger. Multiple configurations for ‘make’ can be specified with individually-specified parameters for each one. A  set of make configurations can be set per directory. Double click on errors listed in the Build Output Pane to locate to the source code.

Scripting and Customization

MIPS supplies advanced Python-based scripting interfaces; A high level debugger scripting library and low level command-line console/library called Codescape Console.

Scripting can be used for…

  • Processor connection.
  • Post reset setup.
  • Processor boot.
  • Complex ELF loading.
  • Visualising data.
  • Creating custom debug regions.
  • Perform an action after hitting a breakpoint.
  • Automation of complex debug setup.
  • Creating regression test suites.

Codescape Console enables direct access to MIPS debug probes from your host PC without using the Codescape Debugger user interface. This provides an ultra-low-level, non-intrusive, scripting layer that is ideal for target bring-up and allows you to perform such tasks as read/write memory and registers, or manually control JTAG signals, with predictable impact on the target.

In addition to this external scripting environment, Codescape Debugger has its own internal, fully-configurable, script region that supports standard wxPython to enable advanced graphical scripting for data visualization, input/output device emulation, and the creation of bespoke debug regions (see picture below). Note: you can create scripts that run both internally and externally to the debugger.

As a testament to what can be achieved with Codescape’s scripting libraries; Codescape Debugger is a Python script, based on the MIPS high level debugger scripting library.

Example scripts…

Profiling & Coverage

Enables you to collect statistical profiling data using a variable sample rate running at approximately 50k samples/second. Shows the number of times a source line or address is executed. The data can be displayed alongside the standard Source and Disassembly regions. Multiple runs can be merged to create a code coverage profile.

Realtime Trace

The MIPS Realtime Trace Region enables you to capture, read and decode trace data created by the saved by the MIPS iFlowTrace or PDTrace on-chip tracing hardware. Capture the trace data using either the processor’s own trace memory or by using one of our dedicated trace probes (Debug Probes).  The data captured is configurable and includes processor-specific information captured from each pipeline and from non-processor-specific blocks such as the Coherence Manager block in a coherent multi-processor system.

RTOS Support

Codescape Debugger supports debug and trace of several common real-time operating systems, including FreeRTOS, Nucleus™,  ThreadX®, RIOT, Zephyr™, MyNewt and MEOS™.

RTOS Watch Region

Displays the available RTOS specific information e.g. Extended Thread information, Mutexes, Semaphores, Pools, Flags, Events etc…
You can drag and drop items or values to other debug regions.

RTOS Trace Region

If the RTOS supports an RTOS trace mechanism, the region will read, process, and display thread execution data.

Codescape Debugger is free to use and is provided as part of the Codescape MIPS SDK.

For the range of MIPS debugger probes please click here.

Customer support and user forums and can be found on the MIPS Insider page.