Skip to content

v0.18.0

Compare
Choose a tag to compare
@flit flit released this 14 Mar 22:26
6294dc8

Boards and targets

  • Added MAX32620 target and MAX32620FTHR board.
  • Added MAX32630 target and MAX32630FTHR board.

Changes

  • Sector erase is now the default mode for all flash programming since it is a safer default, especially with so many IoT projects now storing data on internal flash.
  • Made the warning for an unknown board ID more helpful and less scary. It now says, ""Board ID XXXX is not recognized; you will be able to use pyOCD but not program flash."
  • The SWV reader supports 16- and 32-bit ITM channel 0 events that send multiple characters.
  • pyOCD only attempts to read the board ID from the probe's USB serial number if it knows the probe is running DAPLink, by comparing the USB VID and PID. This prevents unknown board ID warnings for other CMSIS-DAP compatible probes.
  • pyOCD is now aware that a board ID of "0000" means the DAPLink is generic, so it won't try to look up the matching board.
  • Removed websocket support.

Fixes

  • Fixed a failure to start SWO transfers from the probe by sending the command to stop SWO before starting it. The failure could happen if the probe was left with SWO running when pyOCD exited, and then pyOCD was started again.
  • Updated Argon RTOS support to match the latest version.
  • Fixed an issue that prevented SWO from working with CMSIS-DAPv1.
  • The SWV reader checks that the probe supports SWO before attempting to enable it.
  • The trace_start() delegate and user script method will be called by the SWV reader if the target is reset.
  • Fixed memory cache bugs that caused duplication of cache contents. This most often appeared as extra data being sent by the gdbserver in response to a gdb read memory command, though it was not visible to users.
  • Fixed the FlashReaderContext class' usage of a removed intervaltree API. This problem would be triggered if you passed pyocd gdbserver an ELF file.
  • Any enabled watchpoints are removed on disconnect.
  • The list of valid APs is saved only after the full AP scan completes, to prevent a partial list being saved.
  • Rewrote gdbserver memory read command handler to use a much simpler and more efficient hex encoding method.
  • Catching NotImplementedError exceptions raised on Windows by the CMSIS-DAPv2 interface code.

Python API

  • Memory map API now allows empty memory ranges, but not empty memory regions.
  • Removed has_fpu attribute from the Target class. This attribute is only supported on CortexM now.
  • is_float_register() returns true for both single and double precision float registers.
  • Added a setter for the CoreSightTarget.selected_core property. The select_core() method is now deprecated.
  • Changed the name of the format parameter of FileProgrammer.program() to file_format so it doesn't shadow the builtin function.
  • Refactored GDBSocket into pyocd.utility.socket.ListenerSocket.
  • Renamed pyocd.utility.py3_helpers module to pyocd.utility.compatibility.
  • Removed unused Flash_cortex_m class.
  • A few remaining timeouts were changed to use the Timeout class.
  • Got rid of a pointless mutex in GDBServer.
  • Removed reading of flash related user options from GDBServer since these are now handled elsewhere.

Documentation

  • Renamed files in the docs/ folder to all lower case.
  • Started process of converting doxygen comments to doxygen-enabled doc comments.
  • Added some missing user options to docs.
  • Fixed some errors and typos in user_scripts.md and delegate method doc comments.
  • Converted license headers to use single-line comments, mostly so they don't show up in Doxygen output.

Testing

  • Set up tox for running functional tests under Python 2.7 and 3.7. This will soon be used in our CI system to test on both Python versions.
  • Moved unit tests from the pyocd Python package to the test/ folder in the repo root.
  • Added tests to cover memory cache bugs mentioned above.
  • flash_loader_test.py tests hex file programming.
  • speed_test.py tests cached memory accesses and records the ROM read speed.
  • cortex_test.py reports test metrics.
  • Removed use of test_boards.yaml file in favour of the now-standard pyocd.yaml config file.
  • Fixed blank_test.py.
  • New debug_context_test.py.