unleashed-firmware/scripts/debug/PyCortexMDebug
あく f57f0efc48
Debug: revert cortex debug to lxml and drop DWT (#2651)
* Debug: revert cortex debug to lxml

* Debug: update PyCortexMDebug readme

* fbt: moved "debug" dir to "scripts" subfolder

* ufbt: added missing debug_other & debug_other_blackmagic targets; github: fixed script bundling

* lint: fixed formatting on debug scripts

* vscode: updated configuration for debug dir changes

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2023-05-09 03:31:44 +04:00
..
cmdebug Debug: revert cortex debug to lxml and drop DWT (#2651) 2023-05-09 03:31:44 +04:00
LICENSE Debug: revert cortex debug to lxml and drop DWT (#2651) 2023-05-09 03:31:44 +04:00
PyCortexMDebug.py Debug: revert cortex debug to lxml and drop DWT (#2651) 2023-05-09 03:31:44 +04:00
README.md Debug: revert cortex debug to lxml and drop DWT (#2651) 2023-05-09 03:31:44 +04:00

PyCortexMDebug

SVD

ARM defines an SVD (System View Description) file format in its CMSIS standard as a means for Cortex-M-based chip manufacturers to provide a common description of peripherals, registers, and register fields. You can download SVD files for different manufacturers here.

The implementation consists of two components -- An lxml-based parser module (pysvd) and a GDB file (gdb_svd). I haven't yet worked out a perfect workflow for this, though it's quite easy to use when you already tend to have a GDB initialization file for starting up OpenOCD and the like. However your workflow works, just make sure to, in GDB:

source gdb_svd.py
svd_load [your_svd_file].svd

These files can be huge so it might take a second or two. Anyways, after that, you can do

svd

to list available peripherals with descriptions. Or you can do

svd [some_peripheral_name]

to see all of the registers (with their values) for a given peripheral. For more details, run

svd [some_peripheral_name] [some_register_name]

to see all of the field values with descriptions.

You can add format modifiers like:

  • svd/x will display values in hex
  • svd/o will display values in octal
  • svd/t or svd/b will display values in binary
  • svd/a will display values in hex and try to resolve symbols from the values

All field values are displayed at the correct lengths as provided by the SVD files. Also, tab completion exists for nearly everything! When in doubt, run svd help.