Open source Python library for programming and debugging Arm Cortex-M microcontrollers
Full Changelog: https://github.com/pyocd/pyOCD/compare/v0.32.1...v0.32.2
jlink.non_interactive
option.lpc55s36
. (thanks @Hoohaha!)jlink.device
is set.Full Changelog: https://github.com/pyocd/pyOCD/compare/v0.32.0...v0.32.1
load
subcommand is an alias of flash
, and is now the default name for that subcommand.load
(and flash
) subcommand will program multiple files passed on the command line. Binary files can have a @<address>
suffix added to the file name to supply the base address at which they should be programmed.--core
and --halt
arguments.cortex_m
target type, the Cortex-M architectural memory map is supplied instead of having an empty memory map.cortex-m
is now equivalent to cortex_m
.DBGMCU.APB1FZR2
and DBGMCU.APB2FZR
registers.&
operator, would cause a hang.load
subcommand: tildes in file name paths are resolved.--allow-remote
argument.MemoryMap
now adheres to the Sequence ABC.MemoryRegion.clone_with_changes()
added.DebugPort.disconnect()
added.FlashLoader
class renamed to MemoryLoader
to reflect RAM loading support. The old name is still available as an alias, but is deprecated.Timeout
class adds start()
and clear()
methods.Thanks to all contributors, supporters, and users! ❤️
pyocd pack
subcommand to be subcommands, such as pyocd pack install --update nrf53
, both as a UX improvement and a test of the new command line handling internals. The original options will still work but are deprecated.-L
/--log-level
argument to easily control the log level of individual module loggers without needing a full logging config. Example: -L*.cmsis_dap_probe=debug
.PYOCD_PROJECT_DIR
environment variable. (#1172 @g-arjones)m2354kjfae
) built-in target. (#1132 #1167 @ychsu-tf)lpc5526
) (#1139 @stephendpmurphy)lpc55s36
) and MKE17Z256xxx7 (ke17z
) targets. (#1174 @Hoohaha)nrf52833
) target.set_reset_catch()
when there was an invalid vector table address. (#1175 @Hoohaha)pyocd.subcommands
package.A big thanks to all contributors! ❤️
This release of pyOCD makes some big changes!
pyocd-flashtool
and pyocd-tool
commands. pyocd-gdbserver
has been held back from the chopping block for another time, since it is still used by some debugger integrations.rp2040_core0
or rp2040_core1
target type. The rp2040
target type is an alias for rp2040_core0
. Both cores cannot currently be debugged simultaneously.lpc845
. (Thanks @Hoohaha!)hc32f160xa
and hc32f160xc
. (Thanks @lennvn!)hc32f460xc
and hc32f460xe
to HC32F460 series, and changed hc32m423
to hc32m423xa
. (Thanks @lennvn!)GDBDebugContextFacade
: Fix misspelled warning()
method.wire_protocol
property converter handling of a None value.DP_SELECT
register at the J-Link probe plugin level since it is now handled in the higher DP layer.pyocd list
.FlashDevice
struct in .FLM files.CMSISDAPProbe
: trace logging.Flash
: trace logger for flash algo operations.--project
alias for -j
/ --dir
.swd_sequence()
and jtag_sequence()
APIs.probeserver_test.py
functional test.TestTimeout.no_timeout
so it doesn't fail on certain systems.As a reminder, support for Python 2 is deprecated and planned to be dropped from an upcoming release. If this is a problem for you moving forward, please raise your concerns in the Dropping Python 2 support discussion.
swv_raw_enabled
option, the raw SWO data is served over TCP port 3443 by default. The port is changeable with swv_raw_port
option. (Thanks @patrislav1)--allow-remote
argument to enable remote access to the probe server, as it now defaults to serve local-only, like the other TCP servers.reset
command accepts optional reset type.show aps
command to list DAP Access Ports.DebugPort.connect()
can be called multiple times and it will do the right thing.swo_read()
so it only locks and flushes when using the DAP_SWO_Data
command instead of a dedicated SWO EP (which is supported by CMSIS-DAPv2).MEM_AP.init()
to use a single read and restore of the CSW register.probeserver
command by wrapping the DebugProbe
instance in the shared probe proxy.wreg
on peripheral registers.DebugPort
object to perform resets, except for certain cases when the DebugPort
doesn't exist yet (mostly "no-init" mode of Commander), so that pre- and post-reset notifications are sent.DebugPort.init()
to connect()
.adi.v5.max_invalid_ap_count
session option.scripts/generate_flash_algo.py
tool, copied from the FlashAlgo project and simplified.adding_new_targets.md
.gdb_script.py
to gdb_test_script.py
.test/output/
directory.ElfReaderContext
test to debug_context_test.py
.commander_test.py
.