Skip to content

v0.27.0

Compare
Choose a tag to compare
@flit flit released this 01 Jul 21:06
v0.27.0
bb6302d

v0.27.0 on PyPI

New features

  • Support for Arm ADIv6. This is a new version of the Arm Debug Interface used with Cortex-M55 and in some advanced platforms. Cortex-M microcontrollers are expected to slowly transition to ADIv6, but most new MCUs will continue to use ADIv5.2 for quite some time.
  • Recognizing the Arm SC000, SC300, and Cortex-M35P secure cores and Cortex-M55.

Boards and targets

  • Added support for new revisions of secure Cypress PSoC64 devices. (Thanks @bohdan-tymkiv and Cypress.)
  • Added Arm Musca-S1 board ID.
  • Added board IDs for Arm MPS3 AN522 and AN540.
  • Fixed vendor name for LPC55S69 target.
  • LPC55S69 target supports the single-core configuration (technically LPC55S66).
  • Added 'lpc55s28' built-in target.
  • New STMicro STM32F767 target. (Thanks @bartek-w.)
  • Added Samsung s5js100 target. (Thanks @vince-zeng and Samsung engineers.)
  • Fixed reset and connect issues with a sleeping target for the NXP i.MX RT1052. (Thanks @jhqian.)

Changes

  • CMSIS-Packs: Removed the debug log message for every target loaded from a pack, which could get annoying very quickly.
  • User scripts: Improved logging of errors. (Thanks @bartek-w.)
  • Commander: The selected MEM-AP changes when the selected core is changed with the core command.
  • Commander: Help text is wrapped to the terminal width.
  • Commander: Reading memory with a size misaligned to the read width is disallowed.
  • Gdbserver: Added --core argument to run the gdbserver for a subset of cores.
  • General: The warning about cortex_m target type being selected is not logged if the target type was explicitly set.
  • General: Added --probe as an alias for --uid on the command line.
  • General: The --frequency argument accepts floating point values, and allows "Hz" (case-insensitive) to follow the value in addition to the previously supported metric scale suffixes. For example, --frequency=2.2MHz now works as expected.
  • Commander: The set clock command accepts the same values as the --frequency argument.
  • J-Link: The device type passed to the J-Link driver can be specified with the jlink.device option. (By default, "Cortex-M4" is used. This doesn't cause any problems except a warning in the J-Link log because pyOCD uses its own target discovery rather than the J-Link's.)
  • DAP: Code cleanup and some small improvements in MEM-AP initialization.
  • DAP: A GeneralMemAPTarget class was added that provides a target object for MEM-APs without a connected core. This handles the case where a MEM-AP provides access to either the system memory bus or an isolated memory bus, independent of MEM-APs for the core(s). (Thanks @bohdan-tymkiv and Cypress.)
  • STLink: Banked DP registers can be accessed on recent STLink firmware (V2J32 or V3J2 and above).
  • Tests: Added concurrency_test.py functional test.
  • Tests: Improve logging in some tests. (Thanks @bartek-w.)
  • Tests: Add process timeout for gdb_test.py on Python 3. (Thanks @bartek-w.)

Fixes

  • DAP: Solved some long-standing concurrency issues with targets being accessed from multiple threads. Only the DAP (DP and AP) layer and below are locked. This means that the target and other high level layers are not locked. For instance, two threads attempting to set breakpoints on the same core would be unpredictable. The underlying DAP accesses and memory transfers will not fail, but the FPB component registers may get into an invalid state.
  • Documentation: Corrected instructions in readme for installing from the git repo.
  • CMSIS-Packs: Fixed problems creating the memory map for certain cases of multiple sector sizes in flash regions or regions belonging to individual cores.
  • General: ANSI flags are always cleared after the list of available probes is printed.
  • General: Memory addresses are masked to 32-bits. The most visible result of this is that you will see only a 32-bit value reported in the error if you accidentally pass a larger-width value to a read or write command (because Python intrinsically supports arbitrary-width integers).
  • udev rules: Fixed line endings and remove symlink directives in the STLink udev rules included in the pyOCD repo.
  • General: Resolved a deprecation warning for the Thread.isAlive() method from the Python threading module.