v0.33.0
Additions
- Basic SEGGER RTT read/write support with an
rttsubcommand. 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
--colorcommand line argument controls this feature. Also simplified the log output formatting so it is easier to read. - Commander: Add
-x/--executeargument to run commands from a file. Multiple command files can be run and mixed with-ccommands. - Commander: Add
-i/--interactiveto stay in REPL after running commands from either a file or command line. - Commander: Introduce the
@commanddecorator 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 (
continuecommand 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. Thedebug.status_fault_retry_timeoutsession 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
flushprobecommand that ensures all outstanding transfers on the probe have been completed. - Commands: Fix
regoutput so it is properly redirected when called as a gdbserver monitor command. - Commands:
regandwreg' 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_unwrittensession 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_v1session 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_IDENTIFIERScommand 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_prescalersession 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
disconnectcommand is used so that thepersistoption is honoured (disconnectpreviously would never cause the gdbserver to stop). (Thanks @claymation) - Gdbserver:
exitmonitor 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.DBGSWENfor CSSoC-400 APB-AP to resolve an issue that causedDBGMCU(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
CoreTargetclass, a superclass ofTargetinstances 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.pysupports remote probes in its-bargument.- 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