Skip to content

Releases: pyocd/pyOCD

v0.16.0

03 Feb 23:20
95c3839

Choose a tag to compare

New features

  • Initial enablement of target support through CMSIS Device Family Packs. Pass the --pack argument to the pyocd tool, or set the pack session option in a config file. Any devices defined in the specified pack(s) become available as targets.
  • "erase" gdbserver monitor command. It accepts the same arguments as the pyocd erase subcommand.

Boards and targets

  • Cypress PSoC6 CY8C6xx7 and CY8C6xxA targets and related boards.
  • Maxim MAX32625 target and related board.
  • Added STM32L031x6 target. (Thanks @michieldwitte!)
  • Fixed the memory map for STM32F412xG. (Thanks @anthrax-0!)

Changes

  • New Target.ResetType enumeration.
  • Much improved reset configuration. CortexM has default_reset_type and default_software_reset_type properties. Software reset is used by default, and the default software reset depends on whether the core is the primary or a secondary core.
  • New emulated software reset type for v6-M and v8-M devices that don't support VECTRESET.
  • Presenting a standard VFP view to GDB.
  • Nonstandard erased flash value can be set on a FlashRegion object with the erased_byte_value attribute.
  • Builtin targets were moved to pyocd.target.builtin.

Fixes

  • Fixed an issue with STLink communication by forcing the probe out of DFU mode on connection. (Thanks @michieldwitte!)
  • Addressed a potential divide-by-zero error in FlashLoader if no data was written to flash.
  • Invalid addresses in hex files will be ignored rather than raise an exception. Some vendors put metadata in hex files as invalid addresses.

v0.12.1

29 Jan 21:50

Choose a tag to compare

Fixes

  • Backported setup.py fixes to before incompatible API changes were introduced.

v0.15.0

15 Jan 21:36
fee3ca7

Choose a tag to compare

New features

  • Added thread priority to RTX5 thread descriptions.

Changes

  • Refined gdb target description register types and groups.
  • CortexM uses the architecture and MVFR2 register to determine core features instead of the core type.
  • Updated intervaltree dependency to version 3.0.2, which fixes a warning reported on Python 3 about a deprecated API.

Fixes

  • Corrected how the FPB revision was used to determine supported breakpoint address ranges.
  • Fixed regression when accessing memory through APs with an APSEL > 0.
  • Fixed renaming issue where read_core_register_raw() and write_core_register_raw() were accidentally renamed to the non-raw version, resulting in two methods with the same name. This happened to not cause problems when using the gdbserver.
  • Set the encoding to UTF-8 when setup.py reads the README.md file, which fixes issues on systems that have an incompatible default system encoding.
  • Pinned all dependencies that have stable APIs (version >=1.0).
  • Corrected the flash algorithm call sequence to match the specification. This means calling Init() with the operation to be performed (erase or program), and calling Uninit() then Init() again prior to performing a different operation. Unfortunately, this change affects flash programming performance, slowing it down by approximately 5 kB/s. This performance degradation will be addressed soon.

Testing

  • Expanded cortex_test.py to cover both the raw and non-raw versions of the read/write register APIs.

v0.14.3

19 Dec 17:32
8da5dd6

Choose a tag to compare

Fixes

  • Fixed serving on localhost only in the semihosting telnet server. The gdbserver would still serve localhost only by default (unless --allow-remote was set), but a bug was introduced in version 0.14.0 that caused the telnet server to always allow remote access.

v0.14.2

17 Dec 18:38
89b7cd1

Choose a tag to compare

Fixes

  • Pinned intervaltree version to 2.1.0. This is a work around for an issue in the newly released version 3.0.0 where it fails to install under Python 2.7. See chaimleib/intervaltree#77 for details.

v0.14.1

14 Dec 21:19
243a97e

Choose a tag to compare

Fixes

  • Corrected documentation and readme to reference combined pyocd tool.
  • Fixed handling of chip_erase and trust_crc parameters in FlashLoader. This also corrects the behaviour of the --erase and --trust-crc command line arguments to pyocd flash. The most noticeable effect of the bug was that the sector erase option was not honoured.
  • Fixed Python3 regression with Intel hex files in FileProgrammer where they needed to be opened in text mode.

v0.14.0

08 Dec 22:53
0575286

Choose a tag to compare

New features

  • The three pyOCD command line tools have been merged into a single pyocd tool with subcommands. The legacy tools are now deprecated and will print a warning about this when run. They will be removed in the 1.0 release.
  • Cortex-M7 and FPBv2 support.
  • Flash programming algorithms are now associated with a specific flash memory region instead of being global for the target. This will allow for different flash algos to be used for different memory regions, although there are currently no targets that take advantage of this.
  • New pyocd.flash.loader module that provides some high level flash related classes: FileProgrammer, FlashEraser, and FlashLoader.

Boards and targets

  • NXP i.MX RT1050 and RT1020 targets and corresponding EVK boards were added. However, there are known issues with flash programming on these devices. Debugging code in RAM works without issue.

Changes

  • Reduced clutter in the RTOS thread descriptions.
  • The name of the current core exception or interrupt (if an SVD file is available) is shown in the Handler mode pseudo-thread's description.
  • All options passed to the GDBServer class are now handled as session options and are documented as such.

Fixes

  • Corrected issues with RTOS thread register views, particularly for when the FPU is active.
  • When the gdbserver and/or telnet port is set to 0 to use a dynamic port, the actual port number is read back and logged.
  • Normalised gdbserver and telnet server startup log messages.
  • Fixed descriptions of writedp and writeap commands in pyOCD commander (previously pyocd-tool).

Testing

  • New flash_loader_test.py functional test that performs bare bones testing of the classes in pyocd.flash.loader.
  • Updated functional tests to use combined tool and FileProgrammer.

v0.13.2

16 Nov 21:32
820d02a

Choose a tag to compare

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

Fixes

  • Correct naming error in code to show exception names in the Handler mode thread description that caused an exception.

v0.13.1

15 Nov 00:17
f29c141

Choose a tag to compare

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

Fixes

  • Corrected issue in the PyPI source distribution tarball where the pyOCD package folder had not been successfully renamed from pyOCD to pyocd. This caused installation or upgrade failures that differed depending on the OS.
  • Fixed an invalid reference to self in pyocd-flashtool, a copy-paste error brought in with the config file changes.

v0.13.0

09 Nov 17:23
a2c9a04

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.