Skip to content

v0.13.0

Choose a tag to compare

@flit flit released this 09 Nov 17:23
a2c9a04

Note: this release contains major breaking changes to the Python API!

New features

  • Support for STLinkV2 debug probes!
    • STLinkV2 probes appear in the list of available devices just like CMSIS-DAP probes.
    • Currently, the board associated with an STLinkV2-1 probe is not detected and you must always use the --target option to manually specify the target type.
    • To run the functional tests on STLink targets you need to create a test/test_boards.yaml config file that sets the target_override and test_binary session options for each probe to test. See the session options documentation for details on config files.
  • Reasonable start on documentation for pyOCD in the docs/ folder.
  • Breaking changes to board-related classes.
    • New Session class is now the object graph root. This class holds references to the debug probe and board instances, and owns session user options.
    • New ConnectHelper class with static methods previously in MbedBoard.
    • New DebugProbe class hierarchy under pyocd.probe adds architectural support for multiple debug probe types and separates probe and board functionality.
    • Moved pyDAPAccess under pyocd.probe.
  • Breaking changes to API names, to bring names into PEP8 compliance. Even the package name changed from pyOCD to pyocd.
  • Support for YAML config files and --config option for tools. See the session options documentation for details.

Boards and targets

  • Corrected LPC54608 flash size to 512 kB and correspondingly updated flash algorithm.
  • Added board ID and test binary for ST Nucleo-F412ZG board.
  • Added STM32L475xC, STM32L475xE, STM32L475xG target and ST-Discovery-L475E-IOT01A board.
  • Added STM32F439xG, STM32F439xI target and u-blox EVK-ODIN-W2 board.

Changes

  • In cases where the CPU ID cannot be read, such as locked STM32 devices, the CPU type is reported as "unknown" rather than throwing an exception.
  • The CPU revision and patch are reported along with the CPU type, i.e. "CPU core is Cortex-M4 r0p1".
  • Added -O command line option to all three pyOCD tools, which allows passing arbitrary session options.
  • The Board class logs the selected target type, in particular to help users identify when pyOCD is using a generic cortex_m target for ST and other boards.
  • Cleaned up thread descriptions. Thread names are now provided by the name attribute in the gdbserver threads XML report rather than the thread description. This attribute is supported in gdb 7.10 and later, and is ignored in earlier versions.
  • RTX5 thread status for blocked threads uses "Waiting" terminology rather than "Blocked".
  • Zephyr thread names will now be reported.
  • xPSR registers (apsr, iapsr, eapsr, ipsr, epsr, iepsr) can be read and written with core register APIs.
  • Made DebugContext and Target both subclasses of MemoryInterface.
  • The active exception or interrupt is shown in the Handler mode thread description. For targets with an SVD file, the interrupt name is used.

Fixes

  • Fixed the lsbreak command in pyocd-tool by adding missing get_breakpoints() method to BreakpointManager.
  • Python 3 fix: disassembly in pyocd-tool.
  • setup.py now uses environment markers on dependencies, and limits installation to supported Python versions.
  • Excluding enum34 dependency on Python version 3.4 or later.
  • If gdb sends a vFlashDone command without having sent a vFlashWrite, pyOCD will no longer raise an exception.
  • Corrected mask used to read IPSR from 0xff to 0x1ff.
  • Disabled asserts in flash programming progress reports that were occasionally triggered depending on previous flash contents.
  • Removed unused elf_files directory.

Testing

  • automated_test.py accepts a --board option to select boards to test by unique ID.
  • Python 3 fix: flash algo debug mode.
  • gdb_test.py functional test fixes. ST boards will now pass the test.
  • RecordingLogHandler correctly handles unicode for Python 2.