Skip to content

Visual Studio Code extension for enhancing debug capabilities for Cortex-M Microcontrollers

License

Notifications You must be signed in to change notification settings

microwavesafe/cortex-debug

 
 

Repository files navigation

Cortex Debug

Visual Studio Code with Cortex-Debug Installed

Debugging support for ARM Cortex-M Microcontrollers with the following features:

  • Support J-Link, OpenOCD GDB Server
  • Partial support for PyOCD and textane/stlink (st-util) GDB Servers (SWO can only be captured via a serial port)
  • Initial support for the Black Magic Probe (This has not been as heavily tested; SWO can only be captured via a serial port)
  • Cortex Core Register Viewer
    • In some cases the st-util GDB server can report incomplete/incorrect registers, so there may be some issues here.
  • Peripheral Register Viewer (Defined through standard SVD file)
  • SWO Decoding - "console" text output and binary data (signed and unsigned 32-bit integers, Q16.16 fixed point integers, single percision floating point values)
    • The registers that are part of the DWT, TPIU, and ITM debug components will automatically be configured and do not need to be set in firmware.
    • Firmware may still need to enable the SWO output pin - as this part of the setup is microcontroller dependant.
    • Decoding ETM data over the SWO pin is not currently supported.
  • Support for Custom ITM Data Decoders:
    • Ability to define JavaScript modules to decode complex data formats streamed over one or more ITM ports. Data can be printed to a output window, or sent to the graphing system.
  • Live graphing of decoded ITM data.
  • Raw Memory Viewer ("Cortex-Debug: View Memory" command)
  • Ability to view and step through the disassembled binary. There are three ways that disassembled code will be shown:
    • Disassembly code will automatically be shown if it cannot locate the corresponding source code.
    • You can manually see the disassembly for a particular function ("Cortex-Debug: View Disassembly (Function)" command)
    • You can set the debugger to always show show disassembly ("Cortex-Debug: Set Force Disassembly" command)
  • Globals and Static scopes in the variables view
  • Initial support for Rust code (most functionality is working; disassembly views and variables view may still have issues)
  • RTOS Support (J-Link and OpenOCD - RTOS supported depends on GDB server support)
    • As a general rule do not try to use stepping instructions before the scheduler of your RTOS has started - in many cases this tends to crash the GDB servers or leave it in an inconsistent state.

Planned Features

  • Additional Graphing Options
  • Enhanced SVD Auto-selection
  • Semihosting Support

Installation

Requirements:

Usage

See https://github.com/Marus/cortex-debug/wiki for usage information. This needs some help from the community

Development

Clone the Git repository, open the folder in VSCode and open a terminal. Run $ npm install $ npm run-script compile Now hit F5 to open a new VSCode window with the development extension running, you can load an existing project and launch the debugger for testing.

Acknowledgments

Parts of this extension are based upon Jan Jurzitza's (WebFreak) code-debug extension (https://github.com/WebFreak001/code-debug). His project provided an excellent base for GDB MI parsing and interaction.

About

Visual Studio Code extension for enhancing debug capabilities for Cortex-M Microcontrollers

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 98.9%
  • Other 1.1%