|
| 1 | +--- |
| 2 | +title: "pyOCD 0.37.0 released" |
| 3 | +date: 2025-07-04 |
| 4 | +categories: |
| 5 | + - release |
| 6 | +tags: |
| 7 | + - news |
| 8 | + - release |
| 9 | + - release-patch |
| 10 | + - pyocd |
| 11 | +author: Teo Mahnic |
| 12 | +excerpt: "Introducing support for CMSIS-Toolbox Run and Debug Management." |
| 13 | +--- |
| 14 | + |
| 15 | +Version 0.37.0 of pyOCD has just been released and is available from PyPI. It's been several months since a feature |
| 16 | +release, and this one includes a major new addition. Some smaller changes and bug fixes have also been |
| 17 | +included in this release. The complete list is shown below. |
| 18 | + |
| 19 | +To upgrade pyOCD, just run `pip`: |
| 20 | + |
| 21 | +``` |
| 22 | +pip install --upgrade pyocd |
| 23 | +``` |
| 24 | + |
| 25 | +This release marks a significant milestone by introducing a built-in support for [CMSIS-Toolbox Run and Debug Management](https://open-cmsis-pack.github.io/cmsis-toolbox/YML-CBuild-Format/#run-and-debug-management), |
| 26 | +enabling a standardized, YAML-driven workflow for specifying debug targets. By passing the new `--cbuild-run` |
| 27 | +command-line option followed by the path to a `*.cbuild-run.yml` file, the following is imported directly into the |
| 28 | +active debug session: |
| 29 | +- target selection, |
| 30 | +- flash algorithms, |
| 31 | +- memory layout description, |
| 32 | +- device debug topology, |
| 33 | +- debug sequences |
| 34 | + |
| 35 | +Because each YAML file fully describes a single target type, explicit use of `--target` is no longer required. |
| 36 | +This implementation integrates seamlessly with [Arm CMSIS Debugger](https://marketplace.visualstudio.com/items?itemName=Arm.vscode-cmsis-debugger) |
| 37 | +extension for VS Code, streamlining end-to-end debug setup for CMSIS-Pack based projects. |
| 38 | + |
| 39 | +Thanks again to all the contributors who helped make this release possible! ❤️ |
| 40 | + |
| 41 | +[v0.37.0 on GitHub](https://github.com/pyocd/pyOCD/releases/tag/v0.37.0) \ |
| 42 | +[v0.37.0 on PyPI](https://pypi.org/project/pyocd/0.37.0) |
| 43 | + |
| 44 | +---- |
| 45 | + |
| 46 | +## Important note |
| 47 | +With this release, Python 3.7 is no longer supported. The minimum Python version is now 3.8.0. |
| 48 | + |
| 49 | +## Improvements |
| 50 | +- [CMSIS-Toolbox Run and Debug Management](https://open-cmsis-pack.github.io/cmsis-toolbox/YML-CBuild-Format/#run-and-debug-management) integration: |
| 51 | + - add a `--cbuild-run` option across subcommands |
| 52 | + - select target based on `cbuild-run` |
| 53 | + - debugger-clock setting from `cbuild-run` |
| 54 | + - default memory map |
| 55 | + - primary-core and GDB server port selection based on `cbuild-run` |
| 56 | +- GDB server: |
| 57 | + - add option for stetting soft breakpoints as hard |
| 58 | + - add option for resetting and running the target without halting |
| 59 | + - stricter `qC` command handling (@tlyu) |
| 60 | +- Coresight: |
| 61 | + - add `apid` handling |
| 62 | + - add AP CSW register SPROT bit handling |
| 63 | + - fix offset for APv2 in discovery step |
| 64 | +- Loader: generate reset when loading to RAM |
| 65 | +- RTOS: add hint for Zephyr’s thread info configuration |
| 66 | +- RTT: allow no down-channels (@laurensmiers) |
| 67 | +- Debug sequence: increase robustness |
| 68 | +- Memory map: add `pname` based filtering |
| 69 | +- Probe: filter out Cypress KitProg3 bridge |
| 70 | + |
| 71 | +## Fixes |
| 72 | +- Fix progress bar reprinting the same value when no progress is made |
| 73 | +- Typing: fix typing of chip_erase from bool to str (@NilsIrl) |
| 74 | +- pytest: use assert_not_called instead of not_called |
| 75 | +- target: disable reads of erased sectors if Verify function is provided in the algorithm |
| 76 | +- flash: |
| 77 | + - disable builder double buffering by default |
| 78 | + - write XPSR register on init on Cortex-M devices |
| 79 | + |
| 80 | +## Targets |
| 81 | +- Add MPS2 AN521 target |
| 82 | +- Add Ambiq Apollo3 target and NM180410 board (@joshua-nmi) |
| 83 | +- Add RP2350 target (@konkers) |
| 84 | +- Add nRF54L15 target (@maxd-nordic) |
| 85 | +- Add STM32H750 target (@nattgris) |
| 86 | +- Add HC32F115/155/334/467/472 targets (@wuze) |
| 87 | +- Update HC32F448/45x/460/4A0(2) targets (@wuze) |
| 88 | +- Fix sector size and RDP check on STM32H743 and H723 (@nattgris) |
| 89 | + |
| 90 | +## Other |
| 91 | +- Docs: |
| 92 | + - fix incorrect documentation for default GDB server port (@FredeHoey) |
| 93 | + - document `cbuild-run` support |
| 94 | + - enhance load subcommand guidance |
| 95 | +- CI: |
| 96 | + - drop Python 3.7 and add 3.12 and 3.13 |
| 97 | + - update upload-artifact following deprecation |
| 98 | + - update CodeQL workflow |
| 99 | + - add workflow for generating standalone binaries using PyInstaller |
| 100 | +- Session: add missing return in UserScriptFunctionProxy |
| 101 | +- Optional use of libusb-package with fallback to pyusb (@dvzrv) |
| 102 | + |
| 103 | + |
| 104 | +[**View Full Changelog**](https://github.com/pyocd/pyOCD/compare/v0.36.0...v0.37.0) |
0 commit comments