Additions
- Firmware images and data will be loaded to RAM regions in addition to existing flash programming, using the same programming methods as before.
- The new `load` subcommand is an alias of `flash`, and is now the default name for that subcommand.
- The `load` (and `flash`) subcommand will program multiple files passed on the command line. Binary files can have a `<address>` suffix added to the file name to supply the base address at which they should be programmed.
- Flash operations now have individual timeouts controllable with session options.
- Reset: If performing a reset of any type causes the connection to the target's debug interface to be lost, pyocd will automatically reconnect.
- Reset subcommand: `--core` and `--halt` arguments.
- Cortex-M: when using the default `cortex_m` target type, the Cortex-M architectural memory map is supplied instead of having an empty memory map.
- Config: Dashes are converted to underscores in the target type name, thus `cortex-m` is now equivalent to `cortex_m`.
- CMSIS-DAP: support for reading the debug probe firmware version with CMSIS-DAP v2.1. The firmware version is output at the debug log level.
- STLink-V3: add new USB product IDs.
- CoreSight: the product name is logged when listing CoreSight components during discovery.
- gdbserver: add 'init' monitor command, which is ignored and exists solely for OpenOCD compatibility to prevent a warning.
- Config: The effective target type is saved back into into session options. This mostly affects on-board debug probes that know their target.
- Packaging: transitioned to PEP517 style packaging.
- Flash: programming progress bar widened.
Targets
- STM32L475: fix address of `DBGMCU.APB1FZR2` and `DBGMCU.APB2FZR` registers.
- Musca-B1, Musca-S1: enable SYSRESETREQ from both cores.
Fixes
- Resolve an issue where running pyocd in the background from the shell, i.e. by the `&` operator, would cause a hang.
- CMSIS Packs: use RAM addresses specified in algorithm elements. This fixes a programming on a few devices, including the Nordic nRF5340.
- Commander: fix printing of D core register values.
- Commander: fix Python expression output formatting for int and str values.
- CMSIS Packs: make flash region names unique when splitting by sector size.
- `load` subcommand: tildes in file name paths are resolved.
- Subcommands: fix and improve command line argument usage text.
- Memory map: names of memory regions are made unique if necessary.
- Cortex-M: add a few checks to hopefully prevent an exception seen once when listing IRQ names.
- Flash: correct arguments passed to flash exceptions.
- CoreSight: only identify unknown APs as MEM-APs if the designer is Arm. This prevents some proprietary APs as being incorrectly reported as a MEM-AP.
- CMSIS-DAP: send only concrete SWD/JTAG port for connect, so that the "default" port type is never requested. This fixes connect for some versions of Microchip EDBG.
Documentation
- Correct remote probe access documentation regarding remote access to the server and the `--allow-remote` argument.
Python API
- `MemoryMap` now adheres to the Sequence ABC.
- `MemoryRegion.clone_with_changes()` added.
- `DebugPort.disconnect()` added.
- `FlashLoader` class renamed to `MemoryLoader` to reflect RAM loading support. The old name is still available as an alias, but is deprecated.
- `Timeout` class adds `start()` and `clear()` methods.
Thanks to all contributors, supporters, and users! ❤️