Skip to content

Releases: pyocd/pyOCD

v0.44.0

01 Apr 11:38
8534a01

Choose a tag to compare

v0.44.0 on PyPI

New Features

  • Debug sequences:
    • Use default debug sequences as defined in the Open-CMSIS-Pack specification
    • Support debug sequences for hardware reset: ResetHardwareAssert and ResetHardwareDeassert
    • Support debug sequences for flash programming: FlashInit, FlashUninit, FlashEraseChip, FlashEraseSector, FlashEraseDone, FlashProgramPage, FlashProgramDone, and DebugCodeMemRemap
  • run subcommand:
    • Add SystemView Server mode to support SEGGER's SystemView Recorder via IP (TCP/IP connection)

Improvements

  • RTT:
    • Improve robustness and tolerate unexpected target halts
    • More flexible configuration
    • Increase transfer speed
    • Improve log messages
  • SystemView:
    • Improve log messages

Changes

  • Flash programming:
    • Split flash programming into separate erase and program operations
  • RTT Configuration:
    • Rename channel mode telnet to server

Fixes

  • GDB Server:
    • Fix thread information on subsequent client connection
  • Debug sequences:
    • Support inline control flow statements (if, while)
    • Fix predefined debug access variable contents for __protocol and __connection
  • Cortex-M:
    • Restrict PACBTI and PMU extension detection to Armv8.1-M targets
  • CoreSight:
    • Restore CSW value after pre-discovery

Targets

Full Changelog: v0.43.1...v0.44.0

v0.43.1

05 Mar 11:33

Choose a tag to compare

v0.43.1 on PyPI

Fixes

  • RTT: Fix control block detection via _SEGGER_RTT symbol on single-core devices when the control block configuration is not specified.

Full Changelog: v0.43.0...v0.43.1

v0.43.0

23 Feb 12:04

Choose a tag to compare

v0.43.0 on PyPI

New Features

  • run subcommand:
    • Add support for SEGGER's RTT and SystemView (configured via *.cbuild-run.yml)
    • Support per-channel RTT configuration with the following modes:
      • Standard I/O: All data received from the target on this channel will be printed to the sdtout, and all user input from the stdin will be sent to the target
      • Telnet: A Telnet server is started on the specified port, creating a bridge between the TCP connection and the corresponding RTT channel
      • SystemView: Capture the trace data from the specified RTT channel and save it to a user-defined file
    • SystemView integration:
      • Support for automatic start and stop command handling
      • Captured trace data (*.SVDat file) can be directly opened using SEGGER's SystemView analysis tool

Improvements

  • Flash programming:
    • Re-enable double buffering mechanism for internal targets, except STM32H7xx (known to have issues)
    • Migrate all internal target support to use page_buffers instead of begin_data in flash algorithms
    • Remove begin_data from the algorithm template
  • GDB Server:
    • Improve log message when client gets disconnected from the server
  • Standard I/O:
    • Enable non-blocking read of the STDIO console
  • CMSIS-DAP v2:
    • Send ZLP instead of a dummy byte to terminate OUT transfer
  • CoreSight:
    • Always unlock ITM (do not check SLI and SLK bits in LSR register)

    Cortex-M7 (AT610) and Cortex-M7 with FPU (AT611) Software Developer Errata Notice
    513195: Lock Status Indication incorrectly reads as one

Fixes

  • Flash programming:
    • Fix LPC4088 flash algorithm page_size
  • CMSIS-Packs:
    • Fix raised exception on filename property access when using extracted packs (@timll-mchp)
  • RTT:
    • Fix retrieval of available/free bytes for up/down channels
    • Fix control-block not found when the first character of the control-block ID was not present in the read memory (@HaoYDai)

Other

  • CI: add nightly workflow that builds PyInstaller artifacts from the develop branch

New Contributors

Full Changelog: v0.42.0...v0.43.0

v0.42.0

16 Dec 13:42

Choose a tag to compare

v0.42.0 on PyPI

New Features

  • run subcommand:
    • Introduce a new run subcommand capable of running targets until a time limit or EOT (suited for CI/CD workflows)
    • Supports semihosting console output/input and SWV output

Improvements

  • Standard I/O routing:
    • Add new abstraction layer to unify STDIO routing for each core
    • Routing support for console, telnet, file and off

Note: Currently only output is supported

  • CMSIS-Toolbox Run and Debug Management integration:
    • Add configuration layer in session options, which sits below command line arguments
    • Disable *.cbuild-run.yml processing if the target_override option is set
    • Improve port assignment logic for multi-core GDBServer and telnet configurations
    • Add processing for connect mode configuration
    • Add processing for pre-reset and post-reset options in load-setup configuration
    • Improve error messages for missing or invalid *.cbuild-run.yml file
    • Improve checking for required files
      • Raise a warning instead of an error for missing SVD files
      • Load SVD files only when available and when used by the subcommand
  • Flash programming:
    • Add new session options for configuring pre-reset and post-reset type in load subcommand
    • Relax flash algorithm requirement to require only RO section
  • RTOS:
    • Update Zephyr thread state definitions to match modern versions (@mathieuchopstm)
  • CoreSight and Cortex-M:
    • Add support for Cortex-M52 and Star-MC3 based devices (@Liu-Gu)
    • Skip adding cores not described in the debug topology while retaining direct AP access

Fixes

  • Cortex-M:
    • Fix incorrect reset type used in the fallback mechanism when the requested DebugSequence doesn't exist
  • CMSIS-DAP:
    • Fix HID report sizing logic across platforms
  • CMSIS-Packs:
    • Correct path normalization inside pack archives to support .. in file paths (@xoriath)

Other

  • Minor documentation updates related to session option usage

New Contributors

Full Changelog: v0.41.0...v0.42.0

v0.41.0

11 Nov 14:43

Choose a tag to compare

v0.41.0 on PyPI

Improvements

  • Probe:
    • Enable STLINK-V3PWR probe

Fixes

  • GDB Server:
    • Fix RTOS support for Zephyr (thread detection)
  • CMSIS-DAP:
    • Improve robustness of HID read thread

Full Changelog: v0.40.0...v0.41.0

v0.40.0

24 Oct 09:57
cc1ae68

Choose a tag to compare

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 commander interface

Fixes

  • ST-Link: correct reported length on memory read/write failures
  • JLink: block unsupported memory access commands
  • CMSIS-DAP: fix jtag_sequence returning 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 six package (@a-detiste)
  • CI: remove deprecated GitHub Actions command (@CubikingChill)
  • Update Capstone disassembly engine to version 5 (@Hoohaha)

New Contributors

Full Changelog: v0.39.0...v0.40.0

v0.39.0

11 Sep 12:14
2db39e1

Choose a tag to compare

v0.39.0 on PyPI

Improvements

  • CMSIS-Toolbox Run and Debug Management integration:
    • Set debugger protocol based on information from *.cbuild-run.yml file
    • Set output file type based on information from *.cbuild-run.yml file
    • Raise critical error if *.cbuild-run.yml file path is invalid
    • Show warning when packs required by*.cbuild-run.yml file are missing
  • CMSIS-DAP:
    • Improve TransferError Exception messages to be more descriptive
    • Increase number of transfer retries after WAIT response
  • Probe: more reliable probe detection when probe is connected after pyOCD is started
  • CI: Append version information to release build artifacts

Fixes

  • CMSIS-DAP probe: fix support for USB HID probes which don't have a serial number
  • Semihosting: fix read when no data is available

Full Changelog: v0.38.0...v0.39.0

v0.38.0

31 Jul 11:47
bd673c1

Choose a tag to compare

v0.38.0 on PyPI

Improvements

  • Add CoreSight AP specific CSW handling for AHB-AP, AXI-AP, APB-AP
  • Add more debug logging information for cbuild-run targets
  • Add support for SW breakpoints when cache is present
  • Cortex-M: configure AP for cacheable access when cache is present
  • Flash algorithms: relax memory layout rules and add RAM alignment and minimum stack size checking

Fixes

  • CMSIS-DAP probe: fix macOS HID read/write
  • cbuild-run: use cbuild-run.yml parent folder as working directory for relative paths
  • Flash region builder: remove flash algorithm page size adjustment
  • Docs: fix remove_breakpoint call in elf API example (@laurensmiers)

New Contributors

Full Changelog: v0.37.0...v0.38.0

v0.37.0

04 Jul 07:59
8925666

Choose a tag to compare

v0.37.0 on PyPI

Important note

With this release, Python 3.7 is no longer supported. The minimum Python version is now 3.8.0.

Improvements

  • CMSIS-Toolbox Run and Debug Management integration:
    • add a --cbuild-run option across subcommands
    • select target based on cbuild-run
    • debugger-clock setting from cbuild-run
    • default memory map
    • primary-core and GDB server port selection based on cbuild-run
  • GDB server:
    • add option for stetting soft breakpoints as hard
    • add option for resetting and running the target without halting
    • stricter qC command handling (@tlyu)
  • Coresight:
    • add apid handling
    • add AP CSW register SPROT bit handling
    • fix offset for APv2 in discovery step
  • Loader: generate reset when loading to RAM
  • RTOS: add hint for Zephyr’s thread info configuration
  • RTT: allow no down-channels (@laurensmiers)
  • Debug sequence: increase robustness
  • Memory map: add pname based filtering
  • Probe: filter out Cypress KitProg3 bridge

Fixes

  • Fix progress bar reprinting the same value when no progress is made
  • Typing: fix typing of chip_erase from bool to str (@NilsIrl)
  • pytest: use assert_not_called instead of not_called
  • target: disable reads of erased sectors if Verify function is provided in the algorithm
  • flash:
    • disable builder double buffering by default
    • write XPSR register on init on Cortex-M devices

Targets

  • Add MPS2 AN521 target
  • Add Ambiq Apollo3 target and NM180410 board (@joshua-nmi)
  • Add RP2350 target (@konkers)
  • Add nRF54L15 target (@maxd-nordic)
  • Add STM32H750 target (@nattgris)
  • Add HC32F115/155/334/467/472 targets (@wuze)
  • Update HC32F448/45x/460/4A0(2) targets (@wuze)
  • Fix sector size and RDP check on STM32H743 and H723 (@nattgris)

Other

  • Docs:
    • fix incorrect documentation for default GDB server port (@FredeHoey)
    • document cbuild-run support
    • enhance load subcommand guidance
  • CI:
    • drop Python 3.7 and add 3.12 and 3.13
    • update upload-artifact following deprecation
    • update CodeQL workflow
    • add workflow for generating standalone binaries using PyInstaller
  • Session: add missing return in UserScriptFunctionProxy
  • Optional use of libusb-package with fallback to pyusb (@dvzrv)

New Contributors

Full Changelog: v0.36.0...v0.37.0

v0.36.0

08 Oct 19:54
975fe95

Choose a tag to compare

v0.36.0 on PyPI

Improvements

  • Allow FlashBuilder to work when program page size is larger than sector erase size (@BrianPugh)
  • Very basic implementation to get a "connect" LED status display (@rgrr)
  • Add Trace Funnel Coresight component (@rapgenic)
  • Cortex-M CPU type detection improvements
  • Debug sequences: support pname on DebugPort* sequences

Targets

  • Add MAX32666FTHR board (@ozersa)
  • Add STMicro STM32 H743 and H723 targets (@unsanded)
  • nRF91 family improvements (@maxd-nordic)
  • Add HDSC HC32F448 hc32a460xe and hc32a4a0xi. (@lennvn)
  • Add airm2m air001 target (@kaidegit)
  • Add airm2m air32f103 target (@HalfSweet)
  • Add STMicro STM32H7B0 Target (@BrianPugh)
  • Add NXP S32K344 target (@PetervdPerk-NXP)
  • Add Realtek RTL8762C (@suphammer)
  • Add some missing ST and NXP board IDs
  • Fix HC32l130 32k+ flash error (@kaidegit)
  • Fix HC32L13x size and enable double buffering (@kaidegit)
  • Infineon PSoC6: remove unnecessary sleep during reset (@te-johan)
  • Remove part number match for NXP MIMXRTxxxx series family

Fixes

  • RTT: fix CB not found (@tdasika)
  • CMSIS-DAP: Windows performance regression fix
  • Debug sequences: fix assignment expressions.
  • flash: fix some type errors, sort imports
  • Removed extraneous space character in the default cortex_m target warning message (@BenjaminSoelberg)
  • Flash loader: fix missing import of RamRegion
  • coresight: adiv5 discovery: increment invalid AP count on exception
  • cortex-m: reset_halt: just warn about invalid T-bit, don't automatically fix
  • commands: reset: fall back to reset via probe if context has no selected core
  • Only create one session to access options when there's no current session, to reduce debug log message output.

Miscellaneous

  • docs: fix example (@liux-pro)
  • Update copyright section for Maxim (@ozersa)
  • probe: cmsis-dap: use test binary from builtin board data for v2.1 based board info
  • Use annotations future in several source files
  • Update built-in targets and commands documentation

❤️ Special thanks to new contributors!

Full Changelog: v0.35.1...v0.36.0