Skip to content

v0.33.0

Compare
Choose a tag to compare
@flit flit released this 23 Jan 23:13
· 259 commits to main since this release
v0.33.0
0a4b44c

Additions

  • Basic SEGGER RTT read/write support with an rtt subcommand. This subcommand streams stdio from/to the target. It works with all debug probe types, not only J-Link. (Thanks @mikisama, @ccattuto)
  • There is no longer a need to install libusb separately when installing pyocd. The libusb-package Python package was created so that an up to date libusb library can be automatically installed along with pyocd on all OSes.
  • Log output is now colorized by default when outputting to a tty. The --color command line argument controls this feature. Also simplified the log output formatting so it is easier to read.
  • Commander: Add -x/--execute argument to run commands from a file. Multiple command files can be run and mixed with -c commands.
  • Commander: Add -i/--interactive to stay in REPL after running commands from either a file or command line.
  • Commander: Introduce the @command decorator that can be used in user scripts to create user-defined commands, accessible from Commander and as gdbserver monitor commands. See the documentation for details.

Boards and targets

  • Add Maxim MAX32660 target and MAX32660EVSYS board. (Thanks @ozersa)
  • Correct RAM size of Maxim MAX32630 to 512 KiB.
  • Add several NXP board IDs: FRDM-K32L3A6, TWR-KM35Z75M, MIMXRT1160-EVK, FRDM-KW38, USB-KW38, KW38-ER-RD.
  • Add micro:bit v2 board IDs. (Thanks @mbrossard)
  • NXP LPC55xx family: re-unlock debug access after reset. (Thanks @LeBlue)

Changes and fixes

  • Cortex-M: Fix regression with writing CFBP and xPSR subregisters (CONTROL, FAULTMASK, BASEPRI, PRIMASK, and xPSR variants).
  • Gdbserver: While the target is running (continue command in gdb), retry reading target status within a timeout after the first fault on such a check. This is intended to primarily help with firmware putting the core to sleep. The debug.status_fault_retry_timeout session option controls the timeout; set it to 0 to disable this experimental feature.
  • Commander: Fix broken Python ("$") and system ("!") commands in certain cases.
  • Commander: The shell-like lexer for commands has been replaced with a custom lexer that is simpler and more predictable. It breaks words on all non-alphanumeric characters except dash (for instance, "mem-ap" is considered one word). Single and double quoted values with backslash-escapes are supported.
  • Commander: If a user script has been loaded, Python '$' commands share the user script's namespace.
  • Commands: Add flushprobe command that ensures all outstanding transfers on the probe have been completed.
  • Commands: Fix reg output so it is properly redirected when called as a gdbserver monitor command.
  • Commands: reg and wreg' improvements. -poption to force lookup as peripheral register.regwill print any number of registers. Addrrandwr` aliases.
  • User scripts: print() calls from user scripts get routed through any output direction, for example, such that the output will appear in the gdb console when a user-defined command is called as a gdbserver monitor command.
  • Flash: Change default value of keep_unwritten session option to false.
  • CMSIS-DAP: Better handling of protocol versions.
  • CMSIS-DAP: All USB backends have a USB packet trace logger.
  • CMSIS-DAP: Add cmsis_dap.prefer_v1 session option that forces pyocd to use the CMSIS-DAP v1 interface on a debug probe that provides both v1 and v2. (Naturally, the default is to choose v2, since it is faster.) This is intended primarily for testing.
  • CMSIS-DAP: Introduced timeouts for USB reads.
  • CMSIS-DAP: Limit number of outstanding command packets to 30 on macOS using hidapi for CMSIS-DAP v1. This fixes a failure that occurred when certain memory transfers due to an in-built limit on the queue size in the macOS version of hidapi.
  • CMSIS-DAP: Update list of known CMSIS-DAP probes; correspondingly update udev rules.
  • STLink: use JTAG_GET_BOARD_IDENTIFIERS command to read board ID faster than extracting it from the "mbed.htm" file on the MSD volume. Requires V2J36 or V3J6 firmware versions.
  • STLink: Setting the SWD frequency on an STLinkV3 was completely broken, and is now fixed.
  • STLink: Add stlink.v3_prescaler session option to control the internal HCLK prescaler on the probe, which affects the set of available SWD/JTAG and other I/O frequencies.
  • Probe server: Fix race causing server to terminate immediately is certain rare cases.
  • Probe server: Improve connect/disconnect log messages.
  • Session options: Probe-specific options in a config file takes precedence over global options.
  • Session options: A warning is logged if a multiple probe-specific option sections in a config file match the active debug probe's UID.
  • Session: Change the working directory to the project directory on session creation.
  • Gdbserver: Cleanup and fix connection disconnect code. This changes behaviour if the gdb disconnect command is used so that the persist option is honoured (disconnect previously would never cause the gdbserver to stop). (Thanks @claymation)
  • Gdbserver: exit monitor command that will shut down all gdbservers and quit pyocd.
  • Gdbserver: Handle connection aborted and reset errors more cleanly.
  • Gdbserver: Better logging of RTOS discovery issues, and only one log message is output when attempting to load RTOS plugins, in addition to a message on successful load.
  • CoreSight DAP: Unlock probe on error. (Thanks @claymation)
  • CoreSight: Don't read CoreSight registers for non-CoreSight components. (Thanks @j4cbo)
  • CoreSight: Set CSW.DBGSWEN for CSSoC-400 APB-AP to resolve an issue that caused DBGMCU (and other) peripherals to be inaccessible on certain STM32 devices, and likely similar issues on other devices.
  • Dependencies: Switch from naturalsort to natsort. (Thanks @dvzrv)

Python API

  • Introduced type annotations to a number of the most important parts of the pyocd source code.
  • Add CoreTarget class, a superclass of Target instances for CPU cores.
  • Ensure set_clock() works with float parameters for all probe drivers.
  • J-Link: Fix is_reset_asserted() method.

Testing

  • A new CI board farm is up and running the functional test suite with Azure Pipelines on macOS, Linux, and Windows. All test results are publicly accessible.
  • Improved command tests.
  • Fixed a number of small functional test failures in CI.
  • automated_test.py supports remote probes in its -b argument.
  • Fix issues in the semihosting unit test and restore telnet tests.

Other

  • scripts/generate_flash_algo.py: Removed the useless part of the standard flash algo blob header, leaving only the required breakpoint.

Many thanks to all the contributors who helped make this release possible! ❤️

Full Changelog: v0.32.3...v0.33.0