pyOCD 0.40.0 released
Oct 24, 2025
Teo Mahnic
Version 0.40.0 of pyOCD has been released and is available from PyPI. This release includes a number of improvements, bug fixes and some smaller changes. The complete list is shown below.
To upgrade pyOCD, just run pip:
pip install --upgrade pyocd
This release introduces significant improvements and stability fixes across debugging, reset management, and flashing workflows. The GDB server now supports multiple concurrent client connections with enhanced logging and accurate target architecture reporting, while Cortex-M coverage expands with additional secure and non-secure core registers. Reset management has been streamlined with a clearer API, improved debug sequence error handling, and support for custom CMSIS-Pack reset sequences. Flashing operations are more reliable through optimized reset handling and a clean hardware reset after programming.
Thanks again to all the contributors who helped make this release possible! ❤️
v0.40.0 on GitHub
v0.40.0 on PyPI
Improvements
- GDB Server:
- Add support for multiple concurrent GDB client connections to the same GDB server
- Improve logging with support for multiple concurrent GDB clients
- Report correct target architecture and align registers with GDB feature names
- Cortex-M:
- Add missing secure/non-secure core registers (CONTROL, FAULTMASK, BASEPRI, and PRIMASK)
- Reset Management:
- Update ResetType API for clearer reset handling
- Remove reset fallback mechanism for CMSIS-Pack based targets to prevent unintended behavior
- Support custom reset sequence execution defined in CMSIS-Pack
- Refine debug sequence error handling and breakpoint management across resets
- Load (Flashing):
- Remove implicit resets between loading multiple application files
- Set Reset Catch on all cores when performing primary-core reset before flashing
- Perform a hardware reset (nSRST) after flashing to ensure a clean post-load state
- CMSIS-Toolbox Run and Debug Management integration:
- Add CMSIS-Pack related commands to
commanderinterface
- Add CMSIS-Pack related commands to
Fixes
- ST-Link: correct reported length on memory read/write failures
- JLink: block unsupported memory access commands
- CMSIS-DAP: fix
jtag_sequencereturning no data (@NorbertHipfl) - SWO: correct thread exit flag handling in the SWO read thread (@crypto-lars)
- Fix caching of banked SP registers to prevent stale values
- Fix memory region filtering for multi-core targets
- RTOS: handling for banked PSP registers
- RTX5:
- Fix incorrect thread priority offset
- Relax requirement for target in halted state in RTOS operations
Other
- Remove dependency on
sixpackage (@a-detiste) - CI: remove deprecated GitHub Actions command (@CubikingChill)
- Update Capstone disassembly engine to version 5 (@Hoohaha)
New Contributors
- @NorbertHipfl made their first contribution in https://github.com/pyocd/pyOCD/pull/1820
- @crypto-lars made their first contribution in https://github.com/pyocd/pyOCD/pull/1824
- @CubikingChill made their first contribution in https://github.com/pyocd/pyOCD/pull/1834