Skip to content

v0.26.0

Compare
Choose a tag to compare
@flit flit released this 02 May 20:08
v0.26.0
860b61c

New features

  • Experimental SEGGER J-Link probe support.
    • Uses the J-Link driver via the pylink-square package, which will find the driver if installed in the standard location on all three supported OSes.
    • Added jlink.power user option to control the J-Link's power output. Defaults to enabled.
  • New reset subcommand.
  • pack subcommand option --find prints an "Installed" column showing whether the containing CMSIS-Pack is already installed and the target is available.
  • pack subcommand options --find and --install match the given part number pattern anywhere within the part number (contains match).
  • Commander improvements:
    • st alias for status.
    • Results from Python expressions are pretty printed.
    • show locked prints whether the target is locked (for NXP Kinetis and Nordic nRF52 devices).
    • show graph print the object model graph.
  • Added reset.hold_time and reset.post_delay user options to fine tune hardware reset timings.

Boards and targets

  • Fixed NXP i.MX RT1052 HyperFlash and QuadSPI flash programming. (Thanks @jhqian!)
  • Fixed reset vector catch clearing on LPC1768. (Thanks @rafl!)

Changes

  • Support for accessing banked DP registers.
  • Improved DP power up and power down sequences to match the recommendations and add timeouts.
  • The associated core number is printed for gdb and semihost servers when the port number is logged.
  • An empty logging.loggers yaml key in the config file is ignored instead of reporting an error while attempting to configure logging.
  • Commander changes:
    • status only reports the core status now.
    • reg only shows peripheral register fields if the -f option is passed.
    • wreg -r option to perform a post-write read-back and print of the peripheral register value. The read-back is no longer performed automatically.

Fixes

  • Fixed several cases where exceptions were incorrectly created.
  • Fixed a missing import of six in coresight_target.py.
  • Fixed FileProgrammer import issue for user scripts that appeared in certain cases.
  • Corrected a "null internal" error when using certain ELF files.
  • Solved a name error in CortexM._map_from_vector_catch_mask().
  • Fixed name error regression in Breakpoint repr() implementation.
  • Commander always flushes after wdp, wap, and wreg commands.
  • The gdb server ensures the target is halted when gdb first connects, to prevent gdb from failing to read the target state (i.e., core registers that cannot be read by the core is running).
  • Fixed incorrect exception handlers in DebugPort that caused certain faults and timeouts to not be cleared in the DP.
  • Corrected a number of naming and typing issues identified by pytype.
  • Resolved a KeyError exception that would be raised by the RTX5 RTOS support when generating the thread description if a thread has an invalid state.

Internals

  • DebugPort init uses a call sequence.
  • Refactored DP connection into a DPConnector class.
  • Refactored SWJ sequences into an SWJSequenceSender class
  • Refactored CoreSight discovery to use a new CoreSightDiscovery class hierarchy. This allows the init sequence to be modified by an ADI version-specific subclass. These changes are preparatory work for ADIv6 support.
  • Added a CoreSightTarget.post_connect_hook() method that can be overridden by builtin targets without having to modify the init sequence.
  • CortexM and CortexM_v8M classes gained an architecture property that is a CoreArchitecture.ARMv6M enum of the Arm Cortex-M architecture: ARMv6M, ARMv7M, ARMv8M_BASE, ARMv8M_MAIN. Correspondingly, the arch attribute was removed from the classes.
  • PMU halt reason support was moved to CortexM_v8M.

Testing

  • New ROM table parser unit test.
  • Basic user script functional test.

Documentation

  • Fixed user_script.md reference to old MemoryMap.get_region_by_name() method that was replaced with get_first_matching_region().