Skip to content

v0.24.0

Compare
Choose a tag to compare
@flit flit released this 24 Dec 23:38
v0.24.0
e3d468d

New features

  • Support for legacy AP BASE register formats seen on early Cortex-A platforms. While Cortex-A cores are not supported yet, pyOCD can at least read the ROM tables and identify the cores now.
  • Support for the new SWJ sequences introduced in ADIv5.2 with SWJ-DPv2. These sequences transition between SWD and JTAG by going through a dormant mode. By default, pyOCD will first attempt the deprecated SWJ sequences, then if that fails it will attempt the new sequences.
  • New user options:
    • dap_protocol: One of swd, jtag, or default. (JTAG is still not fully supported, but is getting closer.)
    • dap_enable_swj: Whether SWJ sequences are sent (default True).
    • dap_use_deprecated_swj: Whether to attempt deprecated SWJ sequences (pre-ADIv5.2). Most Cortex-M MCUs do not support the new sequences.
    • probe_all_aps: Force a scan of all 256 AP addresses instead of stopping the AP scan at the first invalid AP.
    • xpsr_control_fields: Defines bitfields for XPSR and CONTROL registers when presented in gdb.

Boards and targets

  • Added board ID for Embedded Planet Agora platform.
  • Major refactoring of Cypress PSoC6 target support. (Thanks Cypress!)
  • Nordic nRF52 APPROTECT security and unlock support. This works for both builtin and CMSIS-Pack targets. (Thanks @nocko!)
  • Fixed NXP LPC1768 reset and halt.
  • Fixed Arm Musca-B1 software reset.
  • Added test binaries for a handful of STMicro Nucleo boards.

Changes

  • More debug log messages when operations like stepping are performed.

Fixes

  • Fixed uninitialized variable reference in FileProgrammer that appeared when attempting to load ELF files. (#782 and others. Thanks @samkearney!)
  • Fixed an issue where v8-M cores would cause the commander show cores command to raise an exception due to separate core type name lists for v6/7-M and v8-M. There is now a single core type name list.
  • Improved handling of probes with multiple USB HID interfaces when using the pyusb backends.

Python API

  • DebugProbe.swj_sequence() is added, plus supports_swj_sequence property indicating whether the probe can send arbitrary SWJ sequences using this API. Currently only CMSIS-DAP probes are capable of this.
  • Fixed the JTAG sequence API in pyDAPAccess. (Not exposed at higher layers.)
  • Renamed link attribute of DebugPort to probe.
  • Refactored MemoryMap region search methods.
  • Renamed FlashRegion.is_erased() to is_data_erased() which better reflects that it operates on passed-in data.
  • Changed all the constants in Target to be enums.
  • Removed the root context methods on Target that were unused.
  • Added Target.get_halt_reason() method.
  • Renamed FlashReaderContext to ElfReaderContext.
  • Some new GraphNode methods.
  • MemoryCache and RegisterCache were moved from pyocd.debug.cache to their own modules in a new subpackage pyocd.cache.
  • Moved GDBServerPacketIOThread to its own module.
  • Moved FileProgrammer and FlashEraser to their own modules under pyocd.flash.

Documentation

  • Documented MemoryMap methods.
  • New security features documentation. (Thanks @nocko!)
  • Split documentation of user options out from configuration documentation.
  • Various little fixes and improvements.