New features
- pyOCD now supports managed CMSIS-Packs. A new `pack` subcommand has been added to the `pyocd` tool that lets you install packs to add target support with a single command. See 610 and the new [target support documentation](https://github.com/mbedmicro/pyOCD/blob/master/docs/target_support.md) for details.
- Target auto-detection is supported for STLinkV2-1 probes (those with a USB MSD volume containing an "mbed.htm" file), enabling the same ease of use provided by the DAPLink firmware.
- SVD support is now built-in. Most built-in targets have SVD files integrated into pyOCD, and all pack targets should support SVD. The main use right now is through the commander, where you can `show peripherals` and read or write peripheral registers by name.
- The gdbserver supports the range step command from gdb. This may improve step performance slightly.
Boards and targets
- Fixed a number of built-in targets where the flash algo was accidentally dropped from the flash region definition in the 0.19.0 release: lpc11xx_32, lpc11u24, lpc1768, lpc54114, lpc54608, lpc824, kl28z, stm32f429xx, stm32f439xx.
- Adjusted Musca targets' memory map to work around chip errata.
- Fixed page size and enabled double buffering for some built-in STM32 targets: stm32f412xx, stm32f429xx, stm32f439xx, stm32l031xx.
Changes
- Logging more information about the DP and AP types and versions.
- More changes to reduce the amount of libusb related log messages. Many debug messages were removed, and warnings about possible permissions issues are only logged once per device per process.
- Added `debug.log_flm_info` user option to log debug messages with details of .FLM flash algorithms.
- Commander `show map` command prints both sector and page sizes.
- A universal wheel of pyOCD is now released to PyPI in addition to the source distribution.
Fixes
- Flash programming will not attempt to read data from flash regions that are marked as non-readable.
- Fixed the `get_probe_with_id()` APIs on debug probes.
- Correctly decoding the USB serial number for certain versions of STLinkV2 where the serial number is incorrectly encoded.
- Catching additional errors that could be thrown by USB devices when checking to see if they provide a CMSIS-DAPv2 interface.
- Commander `savemem` command inits the flash algo when accessing flash regions with `is_powered_on_boot` flash set to false.
- High level flash erase operations, e.g. via `pyocd erase`, correctly deal with sector and page sizes being different.
- Invalid CMSIS-Pack paths are handled gracefully with a warning log message, but pyOCD continues executing (unless the selected target type is in the missing pack, in which case you'll get an unknown target type error).
- Removed websocket-client and future packages from requirements.
Python API
- The most recently created `Session` instance is accessible via `Session.get_current()`.
Testing
- Fixed `basic_test.py` for flash regions with small number of sectors.
- `flash_loader_test.py` fixes.