Skip to content

Releases: pyocd/pyOCD

v0.13.0

09 Nov 17:23
a2c9a04
Compare
Choose a tag to compare

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.

v0.13.0b2

09 Oct 16:31
d3cac4c
Compare
Choose a tag to compare
v0.13.0b2 Pre-release
Pre-release

Fixes and changes

  • 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.
  • Settings name and handle attributes in the gdbserver threads XML report. These attributes are supported in gdb 7.10 and later, and are ignored in earlier versions.
  • setup.py now uses environment markers on dependencies.
  • 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.
  • Worked around an intermittent assertion caused by flash programming progress being greater than 1.0. Insert of asserting, it now logs a debug message.

Testing

  • gdb_test.py functional test fixes. ST boards will now pass the test.

v0.13.0b1

07 Oct 21:30
9726149
Compare
Choose a tag to compare
v0.13.0b1 Pre-release
Pre-release

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.
  • Major 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 classe hierarchy under pyOCD.probe adds architectural support for multiple debug probe types and separates probe and board functionality.
    • Moved pyDAPAccess under pyOCD.probe.
    • Refactored Board and MbedBoard classes.

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.

Fixes and 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".
  • Fixed the lsbreak command in pyocd-tool by adding missing get_breakpoints() method to BreakpointManager.
  • Python 3 fix: disassembly in pyocd-tool.

Testing

  • automated_test.py accepts a --board option to select boards to test by unique ID.
  • Python 3 fix: flash algo debug mode.

v0.12.0

12 Sep 19:48
59bb653
Compare
Choose a tag to compare

New features

  • Added thread awareness support for the RTX5 RTOS, available as CMSIS-RTOS2 and used in Mbed OS.
  • ELF file support.
    • You can now load ELF files into target flash using pyocd-flashtool.
    • Two new commands were added to pyocd-tool: where and symbol.
    • pyocd-gdbserver and pyocd-tool have a --elf command line option now.
    • Sets the stage for many future features.

Boards and targets

  • Added NXP FRDM-KW36 (kw36z4)
  • Added ST STM32F412xE (stm32f412xe) and STM32F412xG targets (stm32f412xg), plus three modules (on the Module Test Board):
    • MXChip EMW3166 (stm32f412xg)
    • Advantech WISE-1530 (stm32f412xg)
    • USI WM-BN-BM-22 (stm32f412xg)
  • Corrected problems with the TI CC3220SF reset sequence.
  • Improvement to NXP Kinetis connect logic. This fixes rare incorrect detection of a device as secured, which usually happens on specific devices that seem to have slightly different timing of flash controller initialization.

Fixes and changes

  • pyOCD will retry reading the DP IDCODE register if the first read fails, as recommended in the Arm documentation. It's possible the DP is in a state where it sees the SWJ sequence as an invalid transfer.
  • Major refactoring of connect and initialization sequence.
  • Cleanup of RTOS support log messages.
  • Made GDB server checksum calculation code compatible with Python 3.4.
  • Fixes examples in README to be compatible with Python 3.
  • Corrected trove classifiers in setup.py to list supported Python versions.
  • Fixed support for installing from GitHub archives. Starting with this version, you can download the .zip or .tar.gz from the release on GitHub and successfully run setup.py from the extraction.

Testing

  • Added makefiles to analyzer and gdb_test_program under the src/ directory.
  • The functional tests write a JUnit-style test report XML file.
  • Functional tests can be run in parallel using the --jobs option on automated_test.py. There are still occasional occurrences on Windows and Linux of a failure to open a device, so this is not yet being used in CI.

v0.11.2

28 Jul 20:43
b2a31be
Compare
Choose a tag to compare

Fixes

  • Fix flashing of hex format files using pyocd-flashtool. Broken when Python 3 support was added.
  • Fixed halt on connect and disconnect resume. This was a regression that caused connect to always halt the target and disconnect to always resume.

v0.11.1

25 Jul 00:08
de700db
Compare
Choose a tag to compare

Fixed Python 3 issues:

  • Fixed gdb server vFlashWrite command that was causing flashing via gdb to fail. The gdb server test has been extended to cover flash programming.
  • Fixed gdb server set vector-catch monitor command. Added unit test case.
  • Fixed hex dumps in pyocd-tool.

Other fixes:

  • Corrected problem with color escape sequences appearing in non-TTY outputs, and not working for Windows, by inserting missing init of colorama.
  • Merged the two MAX32600 targets that were exactly the same. There are still the two Maxim boards.

v0.11.0

17 Jul 22:25
d7d0904
Compare
Choose a tag to compare

Major new features:

  • Python 3 support!
  • Zephyr RTOS support.
  • Basic multicore debug. pyocd-gdbserver will now start up a GDB server for every core in the target, using sequential port numbers. See #325 for more.

New boards (targets):

  • CC3220SF_LaunchXL (cc3220sf)
  • FRDM-K32W042 (k32w042s)
  • FRDM-KW24D512 (kw24d5)
  • RedBearLab-BLE-Nano2 (nrf52)
  • Seeed 96Boards Nitrogen (nrf52)
  • u-blox EVK-NINA-B1 (nrf52)

Other changes:

  • Added timeouts for Kinetis mass erase and device unlock.
  • New internal event notification API. Objects can subscribe to notifications on the target objects and be informed of target state changes (reset, run, step, etc).
  • Introduced a workaround for stale RTOS data. This mostly eliminates occurrences of garbage thread lists when loading a new ELF, but device RAM still has valid RTOS structures from the previous version of the code.
  • Improvements to pyocd-tool.
    • set/show help will print appropriate list of available keys.
    • Support for help set <name> and help show <name>.
    • show fault, show step-into-interrupt, show vector-catch
    • pyocd-tool no longer waits for SVD loading before showing the first prompt.
    • new initdp and makeap commands.
    • A few small bug fixes related to print hex values or hex dumps.
  • Added example udev rule for Linux to readme, and a debug log message when lack of permissions seem to be preventing device access.
  • Flash programming progress improved for non-TTY output streams, such as Eclipse.

v0.10.0

25 May 01:55
Compare
Choose a tag to compare

Changes

  • Added LPCXpresso54608 board and LPC54114 target support.
  • Improved command line board selection interface when multiple boards are connected and a specific board is not specified using the --board= option.
  • The --board= option now performs a contains match instead of requiring the full board ID. Only the unique part of the board ID needs to be specified.
  • Moved board ID table to its own source file (board_ids.py).

Fixes

  • Fixed support for LPC54114 target.
  • Fixed an issue in the gdb test.
  • Fixed an exception on disconnect if init_board=False was passed to chooseBoard().
  • Corrected KW41Z memory sizes and RAM start address.
  • Changed board ID 1080 to be the correct mBuino (LPC11U24).
  • Removed duplicate board ID 1090, leaving only the correct RedBearLab-nRF51822.

v0.9.0

08 May 21:32
Compare
Choose a tag to compare

This release contains a huge number of changes.

  • Support for CMSIS-DAP packets greater than 64 bytes.
  • Fixed occasional corrupted reads of AP ROM tables due to DEMCR.TRCENA not being set.
  • Major reorganization of the package structure.
  • Support for all vector catch options.
  • Many improvements to pyocd-tool.
  • RTOS support for FreeRTOS and Argon.
  • Register and memory caching.
  • New targets: KL82Z, K82F, K28F, KW41Z, K22FA12, LPC54114, RTL8195AM, mbed 6LoWPAN Border Router HAT, VBLUno51, NRF52840.
  • Plus many smaller changes.

v0.7.1

23 May 21:03
Compare
Choose a tag to compare

Fixed lockup of gdbserver on hardfault of target.