# Changelog

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

Do not edit this file by hand. If you want to add a new entry, please follow the [Contribution Guidelines](https://github.com/probe-rs/probe-rs/blob/master/CONTRIBUTING.md#changelog-entries).

## [0.31.0]

Released 2026-01-17

### Added

- Ability to check chip/firmware compatibility for ESP chips. (#3660) by @bugadani
- Added `rtt_poll_interval` to flash algorithms. Defaults to 20ms. (#3713) by @bugadani
- Basic Zynq-7000 SoC support. QSPI flashing and RTT attaching supported. (#3720) by @adamgreig
- Added the `--prefer-flash-algorithm` CLI option which allows overriding the flash algorithms to use
  for different memory regions. (#3741) by @robamu
- Add support for ch32f1 (#3722) by @emeric-martineau
- Added support for the PIC32CXSG series of chips (#3644) by @rnd-ash
- Add support for ESP32-C5 (#3635) by @bugadani
- Added `MemoryInterface::execute_memory_operations` and associated types to support executing multiple memory operations in a single batch, which is useful for architectures that don't support background memory access. (#3728) by @bugadani
- Added the `test` command to the debug console, when running embedded-test firmware. (#3735) by @bugadani
- Add support for ESP32-P4 (#3649) by @xobs
- Add support for ESP32-C61 (#3646) by @bugadani
- Added `CoreInterface::spill_registers` method. (#3732) by @bugadani
- Check presence of app descriptor required by ESP-IDF bootloader (#3664) by @bugadani
- `cargo-flash` can now be compiled with the `remote` feature to support remote flashing. This feature enables the `--host` and `--token` flags to specify the remote server and authentication token. (#3706) by @bugadani
- Added `--read-flasher-rtt` CLI switch to enable reading RTT output from the flash loader.
  Added `FlashLoader::read_rtt_output` to enable reading RTT output during flasher operation.
  Added `read_flasher_rtt` parameter to `probe_rs::flashing::{erase, erase_all, run_blank_check}`. (#3713) by @bugadani
- Add ROM regions to the ESP32 memory maps. (#3630) by @lucasvr
- `cargo-flash`/`cargo-embed`: Added support for CLI presets via the probe-rs config file and the `--preset` flag. (#3706) by @bugadani
- Added support for the STM32WB0 series. (#3657) by @physgun
- Added support the STM32U3 family of processors. (#3689) by @graynode
- Add target support for MSPM0G511x and MSPM0518x (#3685) by @i509VCB
- Changed preset logic to fallback to "default" preset if present (#3597) by @rdnetto
- Added support for probes with multiple interfaces (#3690) by @JomerDev
- Added `--idf-flash-freq` and `--idf-flash-mode` options. (#3749) by @bugadani
- Add support for cw32l0 (#3682) by @WaitFme
- Add support for CH32V003 RV32EC RISC-V MCU (#3616) by @Oveln
- add Holtek vendor support for HT32F523x2 series (#3634) by @hitsmaxft
- Add support for the nRF54LM20A<br> (#3656) by @michal4132

### Changed

- Updated target for STM32C0 family with the new flashing algorithms in version 2.4.0 of STM32C0xx_DFP. This fixes the SwdDpWait warning during the erase phase (#3505).
  Also added support for the STM32C051 and STM32C091. (#3733) by @william-spinelli-one
- ESP32-specific flash size detection has been reimplemented as a custom flash algorithm function. (#3697) by @bugadani
- Function names now include the type name. (#3751) by @bugadani
- Changed the warning macro that is emitted when a CIDR value doesn't match to an info block since there's nothing probe-rs or the user can do about it. (#3642) by @xobs
- Change reset sequence for ESP32 Xtensa devices to improve reliability. (#3681) by @bugadani
- The flashing code now uses a A32-encoded BKPT instruction for ARMv7A targets. (#3720) by @adamgreig
- Updated nusb dependency to version 0.2.0 (#3562) by @thenewwazoo
- Update LPC55S16 Target (#3666) by @wt
- Change several RiscvCommunicationsInterface functions so that they are now `pub` rather than `pub(crate)`, bringing them in-line with the Xtensa architecture (#3651) by @xobs
- Changed ESP32-specific Xtensa and RISC-V `detect_flash_size` debug sequence function to take a `Core` reference instead of a `Session` reference. (#3678) by @bugadani

### Fixed

- Fixed an underflow in Xtensa register unwinding. (#3712) by @bugadani
- Fixed attaching to RISC-V cores when one or more hart is not enabled. (#3648) by @xobs
- Fixed some Xtensa performance issues. (#3729) by @bugadani
- Fixed support for onboard Digilent HS1 probes (#3692) by @craigjb
- Bug fixes for ARMv7A debug:
  - Only read MVFR0 when CP10/11 are enabled
  - Consider UND_L an abort alongside data/prefetch aborts
  - Disable ITR before sending RRQ as required by the architecture
  - Use reset vector catch for reset-halt instead of requesting halt then
    resetting
  - Warn if core isn't halted after reset-halt (#3720) by @adamgreig
- Fixed CH347 opening logic to account for both CH347T and CH347F (#3640) by @tylerwx51
- Fixed RISC-V tunneled JTAG transport for some probes (including Digilent HS1) (#3691) by @craigjb
- Fixed the RP235x reset sequence by giving it a timeout rather than a loop limit (#3699) by @xobs
- Add banked stack pointer registers for v8m targets, including TrustZone and non-TrustZone (#3546) by @ExplodingWaffle
- `preverify` is no longer ignored in cargo-embed. (#3709) by @bugadani
- Change CMSIS-DAP probe maximum packet size detection to speed up connecting to EDBG probes (#3744) by @adamgreig
- Fixed polling long-running Xtensa instructions. (#3641) by @bugadani
- CMSIS-DAP now passes the JTAG TAP index from the JTAG chain to DAP_Transfer and DAP_TransferBlock requests sent to the probe. (#3720) by @adamgreig
- Fixed RTT on 64-bit targets so all flag and offset fields are 32-bits (#3631) by @xobs
- Fixed flashing of ConfigROM and DataFlash regions for Renesas RA series targets by correcting memory map addresses and region types. (#3723) by @leocafonso
- Don't panic if the USB configurations for a ST-Link are not accessible, but return an error instead. (#3726) by @Tiwalun
- When enabling data tracing in a DWT unit, access matches on word size, not byte size. (#3643) by @mciantyre
- Revise the MIMXRT10xx reset approach to better support RAM loading. (#3653) by @mciantyre
- ESP32-S3: fixed flashing empty devices, added code to support octal flash. (#3636) by @bugadani
- Fixed incorrect group checks for the current user in linux help error message during setup. (#3698) by @ValouBambou
- Clear DP cache when disconnecting from an ARM communication interface (#3679) by @jnkr-ifx
- Fixed ATSAMV71 flash corruption by offsetting the flash algorithm instructions,
  see target file for details. (#3745) by @adamgreig
- Fixed memory inspectors crashing when reading memory with a negative offset. (#3717) by @bugadani
- Fixed nRF53 debug unlock failing after mass erase due to checking the wrong AP register. (#3701) by @avolmensky
- Fix DAP watch evaluations for static variables by loading only requested globals lazily while preserving fast value updates between steps. (#3632) by @HalfSweet
- Fixed a bug which caused some RISC-V processors to be halted unnecessarily. (#3728) by @bugadani

### Removed

- Removed `CoreInterface::on_session_stop` (#3721) by @bugadani
- Removed `{Core, CoreInterface}::debug_on_sw_breakpoint`. Architecture implementations should enable software breakpoints on connection. (#3721) by @bugadani

## [0.30.0]

Released 2025-10-31

### Added

- Added support for stm32wba65. (#3413) by @leftger
- Added support for reading embedded_test testcases directly from ELF file. (#3512) by @t-moe
- Added STM32N6 target (without flash algorithms) (#3436) by @xobs
- Added MIMXRT1052 target (without flash algorithms) (#3385) by @whitequark
- Added SF32LB58 Series target. (#3609) by @HalfSweet
- add the trace clock configuration for MCX VARIANT_A0 (register addresses taken from MCXA153 CMSIS pack's .pdsc file) (#3386) by @BKSalman
- Expand MIMXRT target memory maps to include all possible memory regions. Note that, based on your target's FlexRAM configuration, you may not be able to access all regions. (#3489) by @mciantyre
- Added `DebugRegisters::from_coredump` (#3371) by @bugadani
- Added an export of `arm::communication_interface::DapProbe` so external software can implement `ArmDebugSequence` trait functions that require that type (#3416) by @xobs
- Added STLink "Bad AP" error code (0x1D) to the error enum (#3451) by @Dirbaio
- Added support for GD32F30x series MCUs (#3390) by @romainreignier
- The debugger now handles some semihosting calls (#3373) by @bugadani
- Add probe support for ch347 (#3423) by @luckycyang
- Added Cortex-M33 TPIU part info (#3433) by @gdobato
- Added `step` debugger command to step one instruction. (#3558) by @bugadani
- Added (back) the `reset` command to the debugger. (#3558) by @bugadani
- Added `MemoryAccessConfig` to configure memory access methods based on access width and memory address.
  Added `RiscvCommunicationInterface::memory_access_config`
  Added `MemoryAccessMethod::WaitingProgramBuffer` and `MemoryAccessMethod::HaltedSystemBus`
  `riscv::communication_interface::MemoryAccessMethod` is now public (#3549) by @bugadani
- Added `--chip-erase` option to cargo-flash (#3554) by @bugadani
- Add RISC-V FPU registers to the GDB server so targets compiled with
  floating-point support correctly advertise the FP capability (`flen`). This
  prevents errors like: "bfd requires flen 4, but target has flen 0".<br> (#3592) by @ArthurHeymans
- Added support for EFR32MG24. (#3443) by @wtodd1
- Added an `big_endian` flag to flash algorithms to indicate if an algorithm should get a big endian header. (#3355) by @xobs
- Added ARMv8 fast memory writes for AArch32 mode (#3525) by @fdomke
- Added DCC Fast mode for ARMv7A to improve reading and writing speeds. As part of this, add a helper for banked register writes. (#3365) by @xobs
- Added large data support for AXI3/AXI4 MEM-APs. (#3482) by @fdomke
- Added support for saml21 series. (#3446) by @imrank03
- Added Glasgow Interface Explorer support (SWD only). (#3388) by @whitequark
- add MCXN947 specific sequence taken from CMSIS pack .pdsc file (#3386) by @BKSalman
- Added support for the gdb load command (#3394) by @eulerdisk
- Added `--semihosting-file` command line option. (#3534) by @paroga
- Added a target entry for the STM32C092RC (copying STM32C092CC). (#3591) by @AdinAck
- Added an export of `riscv::dtm::JtagDtmBuilder` so external software can implement `DebugProbe::try_get_riscv_interface_builder()` (#3416) by @xobs
- Added support for STM32C092CC device (#3434) by @brett-carpenter
- Added a Sequence to reset a Raspberry Pi RP235x using the Rescue DP. (#3497) by @xobs
- Added a Sequence to reset a Raspberry Pi RP2040 using the Rescue DP. (#3429) by @xobs
- Added option `--no-timestamps` to `probe-rs run` and `probe-rs attach` commands to suppress timestamps of String and Defmt messages. (#3542) by @tpambor
- Added support for EFM32PG26. (#3537) by @Spotigus
- Shutdown graceful when receiving SIGTERM (#3509) by @tpambor
- Add the ability to notify a multisubscription that an event has ended (#3456) by @jamesmunns (#3456) by @jamesmunns
- Add a --manual flag to the autocomplete install command<br>
  This flag prints the autocomplete script to stdout instead of installing it.<br>
  This feature is useful for distro maintainers or other special packaging requirements
  which install autocomplete scripts with their own mechanism. (#3579) by @Yatekii
- Added initial big endian support for ARMv7A (and therefore ARMv7R) (#3355) by @xobs
- Added hints on Linux that warn the user if their setup might be incorrect.<br>
  The hints cover the following cases:<br>
  - The user has no udev rule file containing the string `probe-rs`.
  - The `plugdev` group is missing
  - The `plugdev` group is not a system group (ie. the group has id >= 1000) and
    uses a recent systemd version (ie >= 258).
    See https://github.com/probe-rs/probe-rs/issues/3566 for more info.
  - The user does not belong to the `plugdev` group.<br>
    You can disable the hints if by setting the `PROBE_RS_DISABLE_SETUP_HINTS` variable. (#3577) by @nathansamson

### Changed

- De-assert reset before `enable_arm_debug` to support chips that power down cores under SRST assertion. (#3485) by @fdomke
- Changed `Probe::try_get_X_interface` to return architecture-specific errors. (#3375) by @bugadani
- Renamed configuration profile argument of `cargo-embed` from `CONFIG` to
  `CONFIG_PROFILE` to more clearly state its purpose. (#3361) by @sirhcel
- probe-rs no longer warns for potentially unintended `--format` use (#3442) by @bugadani
- cmsisdap: V1 is now behind a feature gate `cmsisdap_v1`, making the `hidapi` dependency optional. (#3473) by @darkwater
- Updated Glasgow Interface Explorer protocol version to `probe-rs,v01`. (#3395) by @whitequark
- Updated `JtagSequence` members so they are now `pub` rather than `pub(crate)`, allowing this struct to be used by library users. (#3590) by @xobs
- `FlashProgress` now wraps an `FnMut`.
  `FlashProgress` no longer implements `Clone`.
  Flasher APIs now take `FlashProgress` by mutable reference. (#3555) by @bugadani
- Normalized NXP chip names to omit redundant "NXP" prefix (#3611) by @tchebb
- BREAKING: Rename the `ArmProbeInterface` trait to `ArmDebugInterface`. (#3425) by @Tiwalun
- Changed `flashing::{erase,blank_check}` to work with address ranges instead of sector numbers. Renamed `erase_sectors` to `erase`. (#3459) by @Dirbaio
- Allow errors reported by the firmware to affect the CLI exit code (#3568) by @nilfit
- Updated espflash to v4. The default bootloader for ESP32 devices now requires an app descriptor to be present in the firmware. For esp-hal based firmware, you'll need to use add `esp_bootloader_esp_idf` to your project. (#3447) by @bugadani
- Clean up status output from `cargo-embed`. The configuration profile is
  reported as `Profile` now and status output is aligned with the one from
  flashing. (#3362) by @sirhcel
- probe-rs will fail with an outdated firmware error when trying to use an old Raspberry Pi debugprobe. (#3252) by @bugadani
- Removed typestate from `ArmCommunicationInterface` (#3382) by @bugadani

### Fixed

- Fixed an issue where the Black Magic Probe would always disable target power on reset rather than leaving it alone. (#3431) by @xobs
- Fix unwinding on thumb targets for functions that never return (#3543) by @ExplodingWaffle
- Fixed an issue where JTAG scans showed a large number of phantom BYPASS taps at the end of a scan that don't actually exist. (#3595) by @xobs
- gdb: Deduplicate flash regions in memory map before passing them to gdb (#3513) by @tdittr
- Fixed download speed of RISC-V devices (#3507) by @bugadani
- Fixed printing stack trace on ctrl-c (#3380) by @bugadani
- Fixed an issue where a MEM-AP whose BASE register did not have Present bit set (no ROM tables) would cause probe-rs to issue invalid memory accesses. This was discovered on an STM32H743. (#3404) by @whitequark
- Fixed incorrect DTR (DBGDTRTX/DBGDTRRX) read order and a bug where cached registers marked for clobber were not flagged for writeback in the Armv8a core implementation. (#3606) by @Natsu-B
- Fixed minor issues with resetting mimxrt6xx and mcx. (#3411) by @Wassasin
- Fixed MIMXRT1010 memory map: Added DTCM region, correct OCRAM region size. (#3475) by @SpinFast
- Fixed an issue where the show_timestamps property for RTT channels was ignored when using the String format in both the DAP server and `cargo embed`. (#3542) by @tpambor
- dap: Don't terminate the debug session if another request than `launch` and `attach` is received after the `initialize` request. Instead,
  ignore requests until we receive either a `launch` or `attach` request. (#3419) by @Tiwalun
- Fixed an issue where the endianness call on the core was not getting delegated to the inner core interface. (#3368) by @xobs
- Use the correct core when verifying flash content, do not always use the core with index 0. (#3491) by @Tiwalun
- Fixed the core status of ARMv7A when issuing a `reset()` so that the status is now updated to `Running` rather than staying at `Halted`. (#3387) by @xobs
- Fixed an issue when enumerating through access ports in `get_arm_components`. If an access port base address is not present is should be skipped. (#3596) by @alphamaster32
- - cargo-embed: Respect halt after reset even when flashing (#3449) by @Tiwalun
- Check for data aborts when executing instructions on ARMv7A and ARMv8A. (#3594) by @xobs
- Fixed setting the Program Counter on ARMV8 in AArch32 mode (#3418) by @fdomke
- Fixed nRF91xx memory map: set correct RAM size, added UICR memory region. (#3468) by @Dirbaio
- Detect and handle start_addr + len overflow in read_addrs by returning non-fatal EFAULT (14) when GDB issues wrapped requests (e.g., $mfffffffffffffffc,4), mirroring OpenOCD behavior and preventing the panic in aligned_to_32_split_offset while keeping valid reads unaffected. (#3605) by @Natsu-B
- Use a different flash algorithm for MIMXRT1040 targets that seems more reliable. (#3490) by @mciantyre
- Fixed panic in BlackMagicProbe introduced by 49ef7eb960e8a7148ed7a8d23a0c5b5c0cac9e26 (#3398) by @xobs
- Fixed ARMv8 instruction for debug halt from `BKPT` to `HLT`. (#3483) by @fdomke
- Fixed ARMv8 cpu core state detection after reset() (#3437) by @fdomke
- Fixed an issue where RTT channel modes weren't configured properly (#3364) by @bugadani
- Fixed the output format of `probe-rs read b16` (#3550) by @bugadani
- Fixed cortex-m `step()` erroring with "Timeout" if the single-step causes a lock-up. This fixes "timeout" errors trying to attach to certain chips with blank flash(no firmware). (#3452) by @Dirbaio
- Fixed a crash affecting RISC-V devices. (#3391) by @bugadani
- fix bitvec related problems with wlink (#3366) by @ArthurHeymans
- Added flash algo for MIMXRT1052 targets (#3412) by @Hoohaha
- Reset the EXTDCC mode (ARMv7A) or Memory Access mode (ARMv8A) when starting the debug core. (#3594) by @xobs
- Fixed path handling for local unzipped packs in `target-gen`. (#3561) by @decaday
- Fixed address mapping issue in sifli uart (#3610) by @HalfSweet
- Fixed support for mass-erase-unlock operations on nRF91x1 chips. probe-rs can now unlock a locked debug port on these devices. (#3458) by @reed-smout
- Relocate Microchip MEC-172x flashing routines and disable device interrupts after system reset (#3574) by @jeffglaum
- RISC-V: memory access via the program buffer should correctly wait for the program buffer to finish executing. (#3541) by @bugadani
- Fixed an issue where specifying the `--probe` parameter in the CLI would cause an error, Serialize DebugProbeSelector as a string. (#3617) by @HalfSweet
- Fixed flashing devices such as STM32WL with multiple cores where the algorithm wasn't correctly selected (#3417) by @xobs

### Removed

- Removed a step where all cores are halted when creating a Session for non-ARM targets. (#3510) by @xobs
- BREAKING: Removed the `get_dap_access` and `get_swd_sequence` functions from the `ArmMemoryInterface` trait. Calls to these functions can be replaced by `ArmMemoryInterface::get_arm_debug_interface` (#3425) by @Tiwalun
- Removed retries on CMSISDAP probe transfer faults, fixing IMXRT6xx and similar misbehaviour during reset. (#3466) by @Wassasin

## [0.29.0]

Released 2025-05-20

### Added

- Added the ability to write back the CPSR on ARMv7A and ARMv7R cores. (#3354) by @xobs
- Added initial support for TI TMS570. (#3312) by @xobs
- Added outputting to binary/hex to the read command (#3322) by @Eekle
- Added an `Endian` enum and an `.endianness()` call on `CoreInterface` (#3343) by @xobs
- probe-rs can now parse Xtensa and RISC-V coredumps from .elf format (#3293) by @bugadani
- Added `--probe` to the `test` verb for `target-gen` (#3344) by @xobs
- Added support for calling `BlankCheck` on a target to determine whether it has been erased for cases where a blank flash can't be determined by a simple memory compare, such as parts with ECC flash. (#3345) by @xobs
- Added the `MemoryInterface::read()` default implementation, which was missing in the calls that are delegated to the memory object (#3349) by @xobs

### Changed

- Always ensure that the ARMv7A core is halted when performing operations, since these require injecting instructions into the pipeline. (#3312) by @xobs
- Create helper functions for ARMv7A accesses. This allows Sequences to perform operations such as reading and writing main memory or halting the core. Update various `CoreInterface` calls to use these new helper functions. (#3312) by @xobs

### Fixed

- Fixed CMSIS-DAP probes incorrectly trying to scan the JTAG chain while using SWD. (#3350) by @bugadani
- Fixed flasher support for ARMv7A, which would otherwise have a misaligned `$lr` value on return (#3347) by @xobs
- Fixed jumping to loaded code on an ARMv7R, where `bx lr` doesn't work when the core is halted but `mov pc, r0` does. (#3354) by @xobs
- Fixed the implementation of `fn read()` in `ADIMemoryInterface` when reading byte values and other non-aligned data. (#3349) by @xobs
- Fixed passing extra fields such as `stack_size` in the `template.yaml` file when generating flash algorithms rather than dropping them (#3346) by @xobs
- Fixed polling RTT with the right core if the location is known upfront. (#3351) by @bugadani
- Fixed the command in the README for `smoke-tester`, which was missing the verb `test`. (#3349) by @xobs
- Fixed some RTT issues in the debugger. (#3351) by @bugadani

## [0.28.0]

Released 2025-05-16

### Added

- Added a remote server/client implementation (#3003) by @bugadani
- Added idf-target-app-partition for ESP IDF (#2837) by @dragonnn
- Added config presets. Define a set of values in the probe-rs config file, and activate them all by using `--preset name_of_preset`. (#3081) by @bugadani
- Added support for Texas Instruments MSPM0G151x/G351x/L122x/L222x series (#3106) by @i509VCB
- Added reset support for DPv0, where error conditions must be cleared by writing to Ctrl and not to Abort. (#3176) by @xobs
- Added support for dpv3 for Black Magic Probes (#3102) by @xobs
- - Added `--target-output-file` to `probe-rs run` and `attach`, allowing output to be stored in files or named pipes. (#3249) by @chrysn
- - Renamed `backtrace` to `bt`. The base command now prints a short backtrace only.
  - Implemented the following debugger console commands: `info break`, `info reg`, `clear`, `bt yaml`. (#3190) by @bugadani
- Added the ability to set speed and protocol in `smoke-tester` and `target-gen`. (#3111) by @seanmlyons22
- Added `verifyBeforeFlashing` and `verifyAfterFlashing` options to debugger configuration. (#3154) by @bugadani
- Debugger now handles DW_AT_type DebugInfoRef (#3278) by @bugadani
- CMSIS-DAP probes can now be used to connect to RISC-V and Xtensa MCUs. (#3230) by @bugadani
- Added OTP memory to STM32 targets (#3263) by @bugadani
- Added support for more NXP's MCXA MCUs. (#3093) by @Logiase
- Added `Core::set_hw_breakpoint_unit` to update a selected breakpoint unit. (#3306) by @bugadani
- Added support for SiFli uart debug probe. (#3150) by @HalfSweet
- Added probe-rs configuration file. (#3003) by @bugadani
- Added `Probe::attach_with_registry` and `attach_under_reset_with_registry` to allow working with a custom registry. (#3149) by @bugadani
- Added support for Microchip's MEC172x series. (#3247) by @jeffglaum
- Added catch-hardfault and catch-reset options to debugger configurations. (#3232) by @bugadani
- CMSIS-DAP: Added the nTRST pin for JTAG, and ensure it's deasserted at init (#3290) by @xobs
- Added a `probe-rs profile` option to measure the program counter via the ARM DWT program counter sample register (PCSR). (#3196) by @mciantyre
- Added support for NXP's LPC865. (#3129) by @Hoohaha
- Added API calls to automatically attach a Session with a provided Registry (#3289) by @xobs
- Added `--skip-section` option to flashing commands (#3275) by @jnkr-ifx
- - Added `ProbeLister::list`, `Lister::list` that accepts a device selector.
  - Added `ProbeFactory::list_probes_filtered` that accepts a device selector. This method has a default implementation that falls back to `list_probes`.
  - Added `DebugProbeSelector::matches_probe`. (#3195) by @bugadani
- Probe-rs now handles (and ignores) the ERRNO semihosting command. (#3115) by @bugadani
- Added support for TI's CC2340R5.<br>
  - Blank device programming of the CC2340R5 is not yet supported. A valid CCFG must be programmed using TI's uniflash. (#3111) by @seanmlyons22
- Added support for NXP's MIMXRT1160. (#3082) by @mciantyre
- Added support for Infineon PSOC 62 family. (#3110) by @jnkr-ifx
- Partially implemented `ExceptionInterface` for RISC-V. (#3283) by @bugadani
- Added support for all PSOC 6 and PSOC Control C3 devices. (#3208) by @jnkr-ifx
- Added multi-drop support for Black Magic Probes (#3102) by @xobs
- Added support for GD32F1x0 series MCUs (#2805) by @Serhii-the-Dev
- Flasher now reports progress for flash content verification (#3079) by @bugadani
- Added support for spawning gdb directly from `probe-rs gdb` using `--gdb gdb-multiarch`. (#3203) by @bjorn3

### Changed

- `DownloadOptions` and `FlashProgress` now have a lifetime `'p` to allow using short-lived `FlashProgress` objects. (#3148) by @bugadani
- The `probe-rs debug` command now uses the DAP server internally. The commands have been replaced by those available in the DAP server. (#3186) by @bugadani
- JTAG-specific operations have been removed from Probe and DebugProbe. Use `Probe::try_as_jtag_probe` to obtain a reference to a JTAG-capable probe. (#3287) by @bugadani
- The GDB server has been moved from the library into the binary (#3124) by @bugadani
- `JTAGAccess` has been renamed to `JtagAccess`.
  Added `JtagAccess::raw_sequence`.
  Added `probe_rs::probe::JtagSequence`. (#3284) by @bugadani
- Changed `auto_attach` to optionally set speed, protocol, and permissions via SessionConfig. (#3111) by @seanmlyons22
- The debugger now shows the name of the nearest symbol as the function name when debug info is not available. (#3303) by @bugadani
- ESP32 flash algorithms now use maximum CPU clock frequency. (#3096) by @bugadani
- The default defmt output format is now single line. The previous default can be activated by using the "twoline" log format. (#3049) by @bugadani
- The FlashLayout visualizer has been moved from the library into the CLI codebase. (#3003) by @bugadani
- - Changed the default reset and hardfault catch behavior from no-catch to catch for `probe-rs run` and `probe-rs attach`.
    The --catch-reset and --catch-hardfault flags still exist but now have no effect.
  - Added new --no-catch-reset and --no-catch-hardfault flags to turn off `catch-reset` and `catch-hardfault`, respectively (#3224) by @9names
- Changed SWD protocol probe interface with a type to allow passing single stream of enums instead of two streams of bits. (#3261) by @Cooler1989
- Use ubuntu-22.04 instead of ubuntu-20.04 in GitHub CI. This may affect the shared library versions required by generated binaries. (#3234) by @jannic
- The `select_target` function has been moved from RawJtagIo to JTAGAccess. (#3238) by @bugadani
- probe-rs-tools now prints RTT channel names if there are multiple. (#3140) by @bugadani
- - `Registry` is now a public structure instead of internally global configuration.
  - The `add_target_family, add_target_from_yaml, families, get_family_by_name, get_target_and_family_by_name, get_target_by_name, get_targets_by_family_name search_chips` functions have been removed in favour of `Registry` methods. (#3149) by @bugadani
- - Use Rust edition 2024. (#3192) by @Tiwalun
- Replaced `Probe::try_into_jlink` with generic `try_into`.
  Removed `DebugProbe::try_into_jlink`.
  `DebugProbe` now implements `Any`. (#3286) by @bugadani
- The `ProgressEvent` type has been reworked, different phases have now been unified. (#3079) by @bugadani
- The debugger now turns the data pointer in slices into arrays so that their data can be inspected. (#3276) by @bugadani
- Adding nRF9120 target which covers the nRF9161, nRF9151 and nRF9120. (#3258) by @jaredwolff

### Fixed

- ESP-IDF panics no longer print an infinite list of warnings. (#3172) by @bugadani
- Fixed a few STM32 part numbers which had repeated letters at the end (#3263) by @bugadani
- Fixed cargo-embed panicking when a core is disabled. (#3107) by @bugadani
- The debugger can now reflash non-ARM chips when restarting the session. (#3170) by @bugadani
- probe-rs now correctly disables the RTC WDT of ESP32-S3 (#3132) by @bugadani
- Fixed an ESP32-specific issue where sometimes `probe-rs run` reported Xtensa specific errors regarding register 44 or 45. (#3083) by @bugadani
- Removed stm32f7x_1024dual as default flash algorithm to eliminate multiple default flash algorithms error for many STM32F7xx chips. (#3273) by @mark-broadmeadow
- Fixed an issue where longer command sequences with j-link probes may be transmitted incorrectly. (#3155) by @bugadani
- Improved error handling within ARM acquire/reset sequences to better support chips with unusual reset behaviors (#3127) by @jnkr-ifx
- Fixed that the serial port dtr and rts of sifli debug devices may not be in the expected state when they are open (#3211) by @HalfSweet
- Fixed a crash during step operations while debugging Xtensa CPUs. (#3304) by @bugadani
- Fixed an issue where `probe-rs info` and NXP sequences were looking at the wrong enable bit for memory APs. (#3089) by @ryan-summers
- RTT channel modes should no longer be reset during a test run (#3134) by @bugadani
- Xtensa cores are now halted before modifying breakpoints and registers. (#3191) by @bugadani
- Fixed an issue where RTT channels show up as unnamed in the debugger. (#3169) by @bugadani
- Fix flashing mass-erased EFM32xG2 devices by using a custom reset sequence (#3076) by @sirhcel
- Fixed implemented custom deserialization for DebugProbeSelector to support direct conversion from a string (e.g., "0483:374b"). (#3202) by @HalfSweet
- Fixed an issue that caused stack unwinding to stop early. (#3209) by @bugadani
- Fixed an issue where halting an ESP-IDF based firmware caused WDT resets. (#3171) by @bugadani
- Fixed defmt not being able to read messages larger than the RTT buffer. (#3049) by @bugadani
- Fixed working with RTT when a channel has no name. (#3105) by @bugadani
- Fixed various breakpoint-related issues (#3304) by @bugadani
- Xtensa exceptions should no longer cause the debugger to crash. (#3221) by @bugadani

### Removed

- The `JtagChainItem` struct has been removed in favour of `ScanChainElement`. (#3230) by @bugadani

## [0.27.0]

Released 2025-02-10

### Added

- Added support for the Arm Debug Interface v6 (ADIv6). Support added for flashing RP235x targets.
  Development sponsored by osdyne. (osdyne.com) (#3005) by @ryan-summers
- Add a function to reinitialize the connection to the Black Magic Probe. This goes through the entire initialization process with the same sequence as it was originally started with. (#3032) by @xobs
- Added support for the MCXA series MCUs. (#3087) by @Logiase

### Changed

- Changed all functions in the `ArmMemoryInterface` trait that return something involving the `ArmCommunicationInterface` type and replace them with calls that return generic traits. Adapted all functions that relied on the old calls to use the new calls instead. (#3030) by @xobs

### Fixed

- Properly align addresses when reading registers and fields, and avoid reading out of the bounds of the registers (#3041) by @maximeborges
- Updates STM32H7 memory maps (#3036) by @bugadani
- Work around a possible infinite loop in stack unwinding (#3042) by @bugadani
- Fixed `probe-rs erase` for the ESP32-S2 (#3060) by @bugadani
- The Black Magic Probe stopped working when #2972 was merged, because it added a call to `try_as_parts()` that only worked for `ArmCommunicationInterface` probes and not for probes where the communications interface is handled by the probe itself. Replace this call with one to the new function `generic_status()`. This also fixes the issue reported in #2977. (#3030) by @xobs
- Inherit access configuration for registers and fields from device if any (#3040) by @maximeborges
- Fixed read_8 and read_16 in the recently added ADIv6 implementation, fixing semihosting. (#3070) by @jannic
- C-Language now properly supports 64bits variables (int, uint and double) (#3048) by @igiona
- Fixed an error in RTT pointer validation, which caused corrupted control block error messages. (#3056) by @bugadani

## [0.26.0]

Released 2025-01-17

### Added

- Add `run`/`flash`/`reset` support for NXPs programmable UWB controller, NXP Trimension OL23D0. Including RAM running. (#2984) by @korken89
- Added S32K14 series targets (#3026) by @liamkinne
- Added support for `--ignored` and `--include-ignored` libtest options (#2967) by @kaspar030
- Added extra checks for RTT control block integrity so partially trashed blocks are now more likely to be rejected as corrupted (#2978) by @diondokter
- Added a sequence for unlocking nRF54L15 devices. (#2987) by @Tiwalun
- Added support for NXP's MIMXRT1040. (#3016) by @mciantyre
- Add CMSIS-PACK sequences for LPC80x (#2999) by @9names

### Changed

- probe-rs now allows selecting debug probes that have no serial number by using `VID:PID:` (#3010) by @bugadani
- Move the low-level debugger code into a separate crate, probe-rs-debug.<br>
  This code was behind the `debug` feature previously. (#3004) by @Tiwalun
- Rename `psel` to `targetsel` in the target definition for chips using the ARM debug interface,
  and make it optional. This makes it clearer what the use of this field is. (#2992) by @Tiwalun

### Fixed

- ARM Debug interface: Clear sticky error bits after failed block transfers, so that future transfers can succeed. (#2982) by @Tiwalun
- probe-rs: Disassembly now takes the endianness of source files into account rather than relying on host endianness.(#2991) by @fg-cfh
- probe-rs-tools: Fixed disassembly of ARM Thumb v2 code in the DAP server (proper instruction decoding and offset in the disassembly view). (#2991) by @fg-cfh
- Fixed a problem with flaky flashing on MIMXRT when the firmware has
  changed the FlexRAM configuration from the POR fuse settings. (#3020) by @mciantyre and @SebKuzminsky
- Fixed a regression that prevented retries of the packet size query when connecting to CMSIS-DAP probes. (#3002) by @elfmimi
- Fixed a problem on ARMv7 where debugger couldn't be attached again after
  detaching it if the firmware spent most of the time in sleep mode. (#2852) by @inazarenko
- The progressbars are now properly reset at the right time to improve the accuracy of the speed and ETA. (#2970) by @diondokter
- probe-rs info: Check if memory access port is accessible before trying to use it. (#2972) by @Tiwalun

## [0.25.0]

Released 2024-12-16

### Added

- Added `--preverify` to skip flashing regions that are up to date.
  Added `probe-rs verify` that only verifies flash contents. (#2722) by @bugadani
- Add support for the Fujitsu/Cypress/Infineon FM3 high performance series. (#2566) by @jeffglaum
- Added an optional `ReadFlash` flash algorithm function. (#2727) by @bugadani
- Added support for new nRF54 chips: nRF54L15. (#2911) by @Dirbaio
- Added support for Texas Instruments MSPM0C series (#2811) by @i509VCB
- Added support for MIMXRT118x memory access (`probe-rs read/write`) (#2916) by @glaeqen
- `probe-rs` can now automatically detect XMC4xxx devices without `--chip` (#2608) by @bugadani
- Added `--name` option to `target-gen test` (#2597) by @bugadani
- arm: Add RAM boot feature which could also be extended to other architectures. This feature works
  by detecting in whether the entry point of an application is located inside the RAM region. If it
  is, it will execute a special ARM sequence to run the application directly. (#2680) by @robamu
- arm: Added jtag_tap option to ARM core access options. (#2924) by @robamu
- Added `Rtt::up_channel` and `Rtt::down_channel` (#2580) by @bugadani
- Added support for the Vorago VA108xx family of MCUs by adding a chip description file for the
  VA108xx family (#2673) by @robamu
- The core is now halted when flashing the RAM (#2672) by @robamu
- Added support for the MIMXRT118x (Cortex-M33 core only) (#2916) by @glaeqen
- Added debug sequences for STM32H7S/STM32H7R (#2884) by @a6f
- Add support for HPMicro's HPM5300 series of MCUs (#2575) by @andelf
- Added support for Digilent HS1, HS2, and HS3 FTDI probes. (#2793) by @craigjb
- Assign cores to NvmRegions created from flash algorithms (#2887) by @a6f
- Added support for GigaDevice GD32C1x3 series (#2737) by @guineawheek
- Added the option to register new debug sequences. To do this, users must implement `probe_rs::vendor::Vendor` and register it using `probe_rs::vendor::register_vendor()`. (#2471) by @bugadani
- MIMXRT: reset the FlexRAM configuration to the boot fuses when resetting the MCU. (#2510) by @mciantyre
- Add support for the MIMXRT685S series of chips. (#2560) by @felipebalbi
- Added progress bars to `probe-rs erase`. (#2724) by @bugadani
- Added the `Privileged` bit to APB4 and APB5 of the AMBA CSW register. (#2798) by @xobs
- Added support for tunneled JTAG access to RISC-V targets configured with a `RiscvJtagTunnel` in `Chip::jtag`. (#2794) by @craigjb
- target-gen: Added `reformat` command to reformat a YAML file or a directory of YAML files. (#2548) by @bugadani
- Added support for new STM32H5 chips: STM32H523CCTx, STM32H523CCUx, STM32H523CETx, STM32H523CEUx, STM32H523HEYxT, STM32H523RCTx, STM32H523RETx, STM32H523VCIx, STM32H523VCTx, STM32H523VEIx, STM32H523VETx, STM32H523ZCJx, STM32H523ZCTx, STM32H523ZEJx, STM32H523ZETx, STM32H533CETx, STM32H533CEUx, STM32H533HEYxT, STM32H533RETx, STM32H533VEIx, STM32H533VETx, STM32H533ZEJx, STM32H533ZETx, STM32H562AGIx, STM32H562IGKx, STM32H562IGTx, STM32H562RGTx, STM32H562RGVx, STM32H562VGTx, STM32H562ZGTx, STM32H563AGIx, STM32H563AIIxQ, STM32H563IGKx, STM32H563IGTx, STM32H563IIKxQ, STM32H563IITxQ, STM32H563RGTx, STM32H563RGVx, STM32H563VGTx, STM32H563VITxQ, STM32H563ZGTx, STM32H563ZITxQ, STM32H573AIIxQ, STM32H573IIKxQ, STM32H573IITxQ, STM32H573VITxQ, STM32H573ZITxQ (#2641) by @bugadani
- Added `AccessPort` a sum-type of all access port classes (#2683) by @ithinuel
- Added STM32F205RGEx target information (#2570) by @bugadani
- Added support to probe-rs-tools to print messages using `semihosting`. (#2740) by @bugadani
- Added a warning when refusing to read an RTT channel name because of the target description. (#2867) by @nilfit
- Added new `Error::CoreDisabled` variant. (#2713) by @bugadani
- Added support for GD32F10x (#2611) by @AlksB
- Added `MemoryAccess` attributes to `RamRegion`, `NvmRegion` and `GenericRegion` (#2581) by @bugadani
- arm: Fall back on SWDv2 wake from dormant on SWDv1 failure (#2914) by @seanmlyons22
- Add support for the Tiva-C series of chips. (#2792) by @BauerBank
- cargo-embed: use `ctrl+tab` and `ctrl+shift+tab` to move to next/previous tab. Use `ctrl+number` to switch to the `number`th tab.
  cargo-embed: `PageUp` and `PageDown` now scroll a half screen's worth of lines.
  cargo-embed: handle `Up` and `Down` arrows to scroll the list one line at a time. (#2618) by @bugadani
- Added API to disable PC sample in ARM (#2813) by @gdobato
- Added ADuCM302x target information from pack file (#2721) by @IoTPanic
- Added support for the Vorago VA416xx family of MCUs by adding a chip description file for the
  VA416xx family and a VA416XX specific ARM debug sequence (#2601) by @robamu
- `probe-rs` now has basic support to represent Access Port V2 address format. (#2600) by @ithinuel
- `probe-rs` can now automatically detect nRF, ESP32 and certain ATSAM devices without `--chip` (#2475) by @bugadani
- Added support for new STM32U5 chips: STM32U5F7VITx, STM32U5F7VITxQ, STM32U5F7VJTx, STM32U5F7VJTxQ, STM32U5F9BJYxQ, STM32U5F9NJHxQ, STM32U5F9VITxQ, STM32U5F9VJTxQ, STM32U5F9ZIJxQ, STM32U5F9ZITxQ, STM32U5F9ZJJxQ, STM32U5F9ZJTxQ, STM32U5G7VJTx, STM32U5G7VJTxQ, STM32U5G9BJYxQ, STM32U5G9NJHxQ, STM32U5G9VJTxQ, STM32U5G9ZJJxQ, STM32U5G9ZJTxQ (#2646) by @bugadani
- Added support for cli interactive probe selection when multiple probes are found (#2490) by @teburd
- Added support for new STM32F4 chips: STM32F401CCFx, STM32F412REYxP, STM32F412RGYxP, STM32F429ZGYx, STM32F439ZGYx, STM32F446ZCJx (#2629) by @bugadani
- Added ARM debug sequence for stm32-armv8 (#2697) by @gdobato
- Added `--path` option to cargo embed. (#2594) by @bugadani
- TI: Added support for the cc13x4_cc26x4 family of devices (#2532) by @seanmlyons22
- Added support for new STM32F7 chips: STM32F723VCTx, STM32F723VCYx, STM32F723VETx, STM32F733ZEIx, STM32F765VGHx, STM32F765VIHx, STM32F767VGHx, STM32F767VIHx, STM32F777VIHx (#2630) by @bugadani
- `cargo embed` now takes an optional --config-file parameter (#2846) by @chrysn
- Added initial support for the Black Magic Probe in bit-bang mode. (#2791) by @xobs
- Added the Cortex-M VTOR vector table offset core register definition (#2664) by @robamu
- Extended the ITM api to support configurable packet transmission settings.<br> (#2931) by @irina-nita
- Added `--chip` to `target-gen test` (#2592) by @bugadani
- Added support for STLink-V3PWR (#2719) by @trlim
- Add types for each type of `MemoryAp`. (#2683) by @ithinuel
- Add support for the LPC54102 family (only the primary Cortex-M4F is supported, not the secondary Cortex-M0+). (#2525) by @jfrimmel
- Added support for the CH32V305 variant (#2857) by @Dummyc0m
- Added support for MSPM0Gx targets (#2868) by @optlink

### Changed

- The `Core::dump` function has been replaced by `CoreDump::dump_core`, to make the interaction with the `debug` feature clearer. (#2634) by @Tiwalun
- Updated STM32L0 family information. (#2642) by @bugadani
- Rename ArmProbe to ArmMemoryInterface (#2704) by @ithinuel
- Reorganized exception handling code, introduce `debug` feature to allow
  disabling debug functionality. (#2634) by @Tiwalun
- Updated STM32L1 family information. Note that this changes the target names by adding a package-specific suffix (e.g. STM32L100RB became STM32L100RBTx) (#2644) by @bugadani
- Rename the trait `AccessPort` to `AccessPortType` (#2683) by @ithinuel
- Updated STM32WL family information. (#2647) by @bugadani
- Debug sequences are now available at `probe_rs::vendor::<VENDOR>::sequences` (#2471) by @bugadani
- Changed the type returned by `ArmCommunicationInterface` to a collection of addresses (#2683) by @ithinuel
- Register names are now lower-case when gdb-debugging through gdbstub. This makes probe-rs compatible with lldb. (#2879) by @danlehmann
- The `semihosting` module is now public, and the reexports have been removed from `probe_rs`. (#2740) by @bugadani
- Updated memory maps for most of STM32 chips. (#2556) by @bugadani
- Derive `PartialOrd`/`Ord` & `Hash` on addresses (#2683) by @ithinuel
- `Rtt::{up, down}_channels` now return an immutable slice of chanels. (#2580) by @bugadani
- Removed the `memory_map` argument from `Rtt::attach` and `Rtt::attach_region`. (#2595) by @bugadani
- Upgrade `defmt-decoder` to `v0.4.0` (#2809) by @Urhengulas
- Increased the potential throughput of J-Link and FTDI probes when communicating with ARM chips using JTAG. (#2681) by @bugadani
- `JtagCommandQueue::schedule` now takes a type that impls `Into<JtagCommand>`. (#2689) by @bugadani
- Updated STM32L4 family information. (#2649) by @bugadani
- arm: Use FullyQualifiedApAddress instead of MemoryAp and GenericAp in method (#2706) by @ithinuel
- probe-rs no longer reserves all remaining memory for the flash algorithm's stack. (#2577) by @bugadani
- Updated STM32H7 families. (#2643) by @bugadani
- Updated STM32C0 family information. (#2894) by @a6f
- Factorize the variants of `MemoryInterface` where only the return type changes into `MemoryInterface` with a generic type defaulting to `probe_rs::Error`. (#2705) by @ithinuel
- Renamed the `esp32-3.3v` target to `esp32` (#2755) by @bugadani
- Moved `RamRegion::is_boot_memory` to `MemoryAccess::boot` (#2581) by @bugadani
- Updated STM32L5 family information. (#2645) by @bugadani
- Added the option to refer to STM32 targets without their package suffix (#2754) by @bugadani

### Fixed

- Fixed RAM size of STM32F303VC chips (#2552) by @bugadani
- Fixed error while trying to write to RTT on a RISC-V chip (#2622) by @bugadani
- Fix broken timeout in `cortex_m_reset_system` (#2917) by @glaeqen
- probe-rs now correctly disables all watchdogs of ESP32-S2 and ESP32-S3 (#2902) by @bugadani
- Fixed file paths used for Rust's standard libraries by mapping the path to Rust's sysroot (#2635) by @staticintlucas
- Fixed error of creating RTTControlBlockHeader from memory slice (#2610) by @AlksB
- Fixed some cases where probe-rs would print "RTT control block corrupted". (#2547) by @bugadani
- Fixed connection on TrustZone capable MCUs when HNONSEC is set incorrectly. (#2875) by @felipebalbi
- Support swj_pins() when specifying --connect-under-reset (#2947) by @xobs
- Fixed crashes when processing flash algorithm data of devices with small RAM. (#2832) by @bugadani
- Fixed connecting to ESP32-C2 and C3 chips after flashing. (#2748) by @bugadani
- Improved unwinding Xtensa stack traces (#2831) by @bugadani
- Fixed detection of J-Link probes configured as CMSIS-DAP compatible probes, don't recognize them as J-Links. (#2954) by @Tiwalun
- Fixed the installation of bash completions. (#2804) by @rmsc
- Fixed ApType names & documentation (#2703) by @ithinuel
- Shell completions: Use correct install method for Bash completions. (#2880) by @johkra
- Improved ESP32, ESP32-S2 and ESP32-S3 support (#2738) by @bugadani
- For Black Magic protocol, write in chunks of length multiple of the word size. (#2942) by @blinxe
- Fixed progress bar display issues when programming multiple memory regions. (#2495) by @bugadani
- MIMXRT10xx: when loading the flash programming algorithm, reserve space for boot ROM's memory requirements in OCRAM. (#2510) by @mciantyre
- Fix excessive halting in `probe-rs attach` which may leave devices in a non-functional state (#2838) by @bugadani
- MIMXRT10xx: Increase stack sizes for flashing algorithms. (#2621) by @mciantyre
- Fixed warning printed for ESP32-C2/C3 devices when stopping `probe-rs run` (#2752) by @bugadani
- Improved compatibility with certain J-Link clones (#2732) by @bugadani
- Fixed a problem with semihosting on ARM targets affecting embedded-test. (#2604) by @t-moe
- The debug stack unwind will continue attempting an unwind when encountering a 0(zero) value for the Link Register (LR). (#2509) by @noppej
- Passing `--protocol jtag` when using an ST-Link probe will now actually use JTAG. (#2675) by @bugadani
- Fixed probe-rs-tools compilation panicing when "git" is not installed. (#2492) by @newAM
- Fixed a problem where CMSIS-DAP probes may cause a panic. (#2539) by @bugadani
- Fixed writing short unaligned data using `MemoryInterface::write` (#2873) by @bugadani
- Fixed an issue where some low-level JTAG commands may have been incorrectly rerun.
  Fixed an issue with Xtensa instruction busy check.
  Fixed an issue where probe-rs wasn't able to correctly read from the flash of ESP32-S3 devices. (#2841) by @bugadani
- Use `RUST_LOG` as the log filter if `Embed.toml` does not specify a level. (#2528) by @bugadani
- Improved unwinding RISC-V stack traces (#2829) by @bugadani
- Fixed listing some CMSIS-DAP probes twice. (#2723) by @bugadani
- Use `bool::is_some_and()` rather than an hand-crafted version with `bool::map_or(false, …)`. (#2853) by @samueltardieu
- Fixed flashing AT32F4 devices (#2561) by @bugadani
- Fixed an issue that could cause the chip to be erased in the middle of the flashing process. (#2495) by @bugadani
- NRF91 and NRF52 debug sequence has been fixed for Black Magic Probe (#2948) by @mfiumara
- Added guard to DPIDR read after reset to accomodate slow recovering chips. (#2900) by @mubes
- Fixed an error where running a non-elf firmware results in a defmt parse error. (#2825) by @bugadani
- Fixed an issue using JTAG with FTDI and J-Link probes (#2674) by @bugadani

### Removed

- Removed `rtt::Channels`, replaced with `Vec<T>` (#2580) by @bugadani
- Removed the majority of `ARM_FLASH_BLOB_HEADER`, replaced with two arm thumb `brkpt` instructions (#2883) by @bobrippling
- probe-rs should no longer emit `log` events via `tracing`. You can re-enable this by adding `tracing = { version = "0.1", features = ["log"] }` to your crate's Cargo.toml. (#2520) by @konkers
- Removed `ScanRegion::Range` and added `ScanRegion::range()` (#2616) by @bugadani

## [0.24.0]

Released 2024-05-22

### Added

- Added support to run embedded-test testcases (#2292) by @t-moe
- Added support for STM32U0 devices (#2366) by @Dirbaio
- Add support ELF64 to load programs for AArch64. (#2270) by @tnishinaga
- Added SAM3X target (ATSAM3X4C, ATSAM3X4E, ATSAM3X8C, ATSAM3X8E and ATSAM3X8H). (#2293) by @BadyJoke
- added enable/disable kickstart power for J-Link (#2163) by @zakimoo
- Added `verify` and `disable_double_buffering` options to Embed.toml (#2419) by @bugadani
- Added `SYS_EXIT_EXTENDED` and `SYS_GET_CMDLINE` semihosting operation decoding. (#2241) by @t-moe
- Update the `STM32WB_Series.yaml` targets with `target-gen arm --filter STM32WBxx_DFP` (#2248) by @kquinsland
- `cargo embed` and `cargo flash` now try to verify image compatibility (#2329) by @bugadani
- Add support for the HK32F030M series of chips. (#2281) by @prosper00
- probe-rs now has a machine interface (MI).<br>
  The machine interface can be accessed via `probe-rs mi` and is intended to have a set of
  machine operable & readable commands & responses.
  This will allow for example a CI to use probe-rs in predictable fashion or allows auto-updaters to install the most current version.<br>
  A separate crate with interface types called `probe-rs-mi` was added to let users easily parse the output of the MI. (#2459) by @Yatekii
- Add the `list_break` command to `probe-rs debug` to list the set breakpoints. (#2385) by @mciantyre
- Add support RTT for 64bit processor (#2296) by @tnishinaga
- Expose all probe options as environment variables (#2232) by @korken89
- Added autocompletion support for probe-rs<br>
  For zsh and bash, connected debug probes and loaded chips are autocompleted too for the respective arguments. (#1299) by @Yatekii
- Users can now specify IP address for dap-server to bind. (#2373) by @KOBA789
- Added semihosting support for Xtensa Architecture (#2292) by @t-moe
- Added `DebugProbeInfo::is_probe_type` to simplify filtering probe types (#2238) by @bugadani
- Added support for Renesas RA0, RA2, RA4, RA6, RA8 series chips (#2473) by @pdh11
- Users can now specify RTT channel operating mode for the debugger. (#2326) by @bugadani
- Armv8a: add fast memory access functions for AArch64 (#2271) by @tnishinaga
- Debug: When a "Reset Handler" is identifiable in the call stack, the stack unwind will include a handler frame, similar to those for other exception handlers. (#1935) by @noppej
- Added support for SWM341 (#2424) by @hysonglet
- Commands in the probe-rs util now have a `--report` flag which allows users to generate a ZIP with info about their error if the command leads to an error.<br>
  The ZIP is NOT uploaded. It is saved to disk and can be inspected and manually uploaded to e.g. Github. (#2472) by @Yatekii
- Report an error when the probe does not support the requested protocol (#2264) by @ithinuel
- Error out when a DPv3 is detected (#2264) by @ithinuel
- The MI now has a `meta` command that returns a bunch of meta info about the binary build, such as the version or the commit hash off which the binary was built. (#2459) by @Yatekii
- Autodetect the core to attach the RTT server by looking at which core can access the RAM where the RTT control block is (#2297) by @guissalustiano
- Added `into_iter()` to `rtt::Channels` (#2247) by @bugadani
- Added support for the EFM32PG22 series of chips (#2408) by @sirhcel
- Added the option to select which JTAG TAP a given RISC-V or Xtensa core belongs to. (#2386) by @bugadani
- Added support for the STM32H7Rx/STM32H7Sx (STM32H7 "bootflash line") series of chips (#2469) by @Dirbaio
- Support for Texas Instruments cc13x2_cc26x2 device family (#1729)<br>
  - Made JTAG scanning optional during configuration (#2215) (#1771) by @seanmlyons22

### Changed

- `Rtt::up_channels` and `Rtt::down_channels` are now public (#2247) by @bugadani
- - The `probe-rs dap-server` command now handles the `--log-to-folder` and `--log-file` CLI arguments.
  - When neither option is supplied, the default behaviour is that logs are written to the DAP client's "Debug Console" window.
    - In order to avoid adversely affecting the DAP client performance, we will disallow "trace" level logging when sending logs to the Debug Console. (#2457) by @noppej
- Reworked the `rtt` section in `Embed.toml`. (#2249) by @bugadani
- If no `RUST_LOG` environment variable is set, the probe-rs DAP server will now use a default logging configuration of `probe_rs=warn`. (#2457) by @noppej
- The `Run` cmd has been refactored to allow multiple different run modes in the future. (#2295) by @t-moe
- By default, `defmt` RTT channels are configured to `BlockIfFull`. (#2326) by @bugadani
- Only enumerate alternate multi-drop addresses if the Default address failed (#2352) by @ithinuel
- Renamed `--probe-selector` to `--probe` in `cargo embed` (#2262) by @bugadani
- `DebugProbeInfo::probe_type` is no longer public. You can use `DebugProbeInfo::is_probe_type` to filter.
  You no longer need to supply a `lister` to `DebugProbeInfo::open` (#2238) by @bugadani
- Renamed the `--format` argument to `--binary-format` for upcoming embedded-test integration. (#2240) by @t-moe
- The binaries `probe-rs`, `cargo embed` and `cargo flash` have been moved to a separate
  `probe-rs-tools` crate. This means that the installation method has changed as well.<br>
  See the probe-rs homepage at https://probe.rs or the README for the updated installation instructions. (#2364) by @Tiwalun
- RTT: defmt location information is no longer displayed by default.
  RTT: timestamps are now displayed by default, if available.
  RTT: `show_timestamps` and `show_location` can now only be set in the up channel configuration.
  RTT: channel names are no longer configurable. (#2377) by @bugadani
- Changed how architecture-specific core interfaces are accessed:
  - `probe::Probe::try_get_xtensa_interface` now takes an `XtensaDebugInterfaceState` object that should be saved and reused between interface accesses.
  - `probe::Probe::try_get_riscv_interface` has been renamed to `try_get_riscv_interface_factory` and returns a builder object to create state objects, and to attach the probe using such a state object.
  - The corresponding `DebugProbe` APIs have been changed. (#2386) by @bugadani

### Fixed

- Debug: During a stack unwind, incorrect processing of function identifiers, sometimes displayed incorrect function names and associated variable definitions in the stack. (#2302) by @noppej
- Prevent duplicate inputs being registered in cargo-embed on Windows. (#2260) by @calebfletcher
- - Fix breakpoint search for binaries using DWARF 4 debug information. (#2324) by @Tiwalun
- Provide a helpful error message when invalid `connectUnderReset` is used. (#2219) by @noppej
- Fix detection of the defmt timestamp functionality as reported by ELF symbols (#2267) by @Javier-varez
- Do not 'silence' errors that need to be reported to the user. Specifically errors during the `attach` and `launch` requests, where flashing can fail, and the user needs to know about it. (#2439) by @noppej
- Fix wlink detection fail. (#2273) by @andelf
- RISC-V: fixed an issue that accidentally disabled the debug module during certain operations (#2224) by @bugadani
- Fixed the most frequent `RTT: Control block corrupted` errors (#2340) by @bugadani
- Improved error reporting for CMSIS-DAP probes. (#2479) by @gtsiam
- - Add support for disabling debug power in the debug port when disconnecting. This fixes an issue with the RP2040 where it was stuck in reset, due to the Rescue DP. (#2282) by @Tiwalun
- The process of finding function DIE's assigned the `low_pc` and `high_pc` values based on only the last processed `gimli::Range` for the funciton DIE. (#2258) by @noppej
- The debugger can now handle nested arrays in C code (#2268) by @bugadani
- Fixed cargo-embed not processing defmt data correctly (#2323) by @bugadani
- Fixed selecting one of multiple ESP USB JTAG probes (#2382) by @bugadani
- Fixed flashing certain STM32F750 variants (#2312) by @bugadani
- ARMv8A: Fix a problem that RTT Attach fails because the core is not halted during memory access. (#2269) by @tnishinaga
- The debug unwind sometimes reported "unknown" for function names, when the DWARF encodes the name behind a `DW_AT_specification` reference. The fix will resolve any of the attributes, not just the name, which are in the DIE referenced by the `DW_AT_specification` tag. (#2291) by @noppej
- Probe-rs should now succeed more at flashing RISC-V ESP32 devices (#2365) by @bugadani
- fix `probe-rs attach` "Timeout occurred during operation." error. (#2259) by @eZioPan
- Fixed so that secure flash area on LPC55S69 can be loaded. (#2353) by @te-johan
- It is now possible to `probe-rs erase` ESP32 chips (#2279) by @bugadani
- ATSAMD devices should no longer fail to reset after a chip erase. (#2325) by @bugadani
- Revise the MIMXRT1170 reset sequence to perform a system reset. Fixes #1971.<br>
  Reserve space for the MIMXRT1170 boot ROM's memory in OCRAM. (#2387) by @mciantyre
- Debug: When the stack unwind encounters stack frames with no return register (LR/RA) values, it will not try to unwind them. This happens when reset handler trampolines (e.g. cortex-m-rt) explicitly clears those values to prevent debuggers from unwinding past the `main_trampoline`. Attempting to unwind past these frames results in undefined behavior. (#1935) by @noppej

### Removed

- `target-gen` no longer generates `stack_size` for flash algorithms (#2307) by @bugadani
- Removed `drain()` from `rtt::Channels` (#2247) by @bugadani
- Removed `halt_afterwards` from Embed.toml (#2419) by @bugadani
- The MIMXRT1170 target does not contain anything for a Cortex M4. The MIMXRT1170 target continues to only support the Cortex M7. (#2387) by @mciantyre
- Removed the `rtt` cargo feature (#2348) by @bugadani

## [0.23.0]

Released 2024-02-24

### Added

- Added option to specify load address for flash algorithm data pages (#2099) by @bugadani
- Added multidrop support for J-Link probes (#2079) by @bugadani
- Added support for 16bit reads and writes. (#2018) by @Dirbaio
- probe-rs info now supports Xtensa devices (#2022) by @bugadani
- Added `chipDescriptionPath` to debug server configuration
  rtthost: Small refactor to reuse code (#2050) by @bugadani
- It is now possible to configure the speed of FTDI probes (#2075) by @bugadani
- Allow specifying a chip via environment variable (#1958) by @jessebraham
- Add support for the esp32 targets (3.3V VDD_SDIO) (#2102) by @bugadani
- Add support for AirMCU series. (#1974) by @HalfSweet
- Added ARM interface support (JTAG only) to FTDI probes. (#2090) by @bugadani
- Add support for using a hart other than hart 0 (#2080) by @bjoernQ
- debug: Added `StackFrame::canonical_frame_address` and `StackFrameInfo` (#2134) by @bugadani
- Exposed the internal probe implementations (#2027) by @bugadani
- Support specifying a TARGETSEL value to the `probe-rs info` subcommand. This can be used to see information about a SWD multi-drop target. (#2092) by @Tiwalun
- Added support to `cargo embed` for publishing raw RTT data for specific channels on a tcp socket. (#2126) by @ijager
- Added limited C debugging capabilities (#2171) by @bugadani
- probe-rs now supports flashing STM32WLE5CCUx MCUs (#2036) by @elpiel
- Add support for the esp32s2 target (#2002) by @bugadani
- probe-rs now supports flashing CH32V307 MCUs (#2136) by @Marcuss2
- Added support for the BCM2712 target (Raspberry Pi 5) (#2209) by @tnishinaga

### Changed

- Ensure then when executing setup commands and sequences that the core is halted. (#2151) by @MabezDev
- JLink: handle multiple JTAG TAPs (#2025) by @bugadani
- `UnitInfo` is now public.
  `VariableCache::new_dwarf_cache` and `VariableCache::create_variable` now take an `Option<&UnitInfo>`. (#2150) by @bugadani
- The FTDI probe driver is now enabled unconditionally (#2077) by @bugadani
- The following are now available under `probe_rs::probe`: `AttachMethod`, `DebugProbe`, `DebugProbeError`, `DebugProbeInfo`, `DebugProbeSelector`, `Probe`, `ProbeCreationError`, `ProbeFactory`, `WireProtocol`
  `Lister` is now available under `probe_rs::probe::list` (#2027) by @bugadani
- Moved `scan_chain` under `jtag` in target descriptions (#2082) by @bugadani
- The scan chain information in target descriptions is now always used to validate the measured JTAG chain. (#2082) by @bugadani
- Use the `nusb` crate for USB I/O. (pure-Rust replacement for `rusb`/`libusb`). (#1842) by @Dirbaio
- Extract ProbeDriver from DebugProbe (#1996) by @bugadani

### Fixed

- Fixed `--speed` being ignored by J-Links (#2109) by @bugadani
- Temporarily pin defmt-decoder version to deal with breaking change in 0.3.10 (#2156) by @tommy-gilligan
- cmsis-dap: Increase USB timeout to 1s. (#2205) by @Tiwalun
- jlink: Consider free memory size reported by J-Link when performing SWD transfers. (#2144) by @Tiwalun
- Don't stop DAP debugger server when an error unwinding an exception occurs. (#2198) by @Tiwalun
- Fix reading back an empty buffer from the espusbjtag probe on a cold boot. (#2173) by @MabezDev
- Fixed logging causing multiple progress bars to appear in console output. (#2104) by @bugadani
- Fixed flashing MIMXRT1060 devices (#2089) by @bugadani
- Fixed STM32G431xB flashing, which was broken by adopting the [version 1.5.0](https://www.keil.arm.com/packs/stm32g4xx_dfp-keil/versions/) STM32G4 target pack from upstream. (#2061) by @dlaw
- espusbjtag, ftdi: fix IR length measurement (#2024) by @bugadani
- Fixed `probe-rs info` not recognising Xtensa chips if probe supports SWD (#2069) by @bugadani
- Fixed cargo-embed not respecting the target's preferred image format. (#2104) by @bugadani
- Do not print RTT error if there is nowhere to look for the control block (#2073) by @bugadani
- Fixed a regression that made it impossible to select a chip target that was a substring of another chip (eg cortex-m3 is a substring of cortex-m33) (#2121) by @9names
- Debug: Do not fail when encountering new `DW_AT_accessibility` attribute in debug info. (#2149) by @noppej

### Removed

- Removed the redundant `begin_data` field of `FlashAlgorithm` (#2095) by @bugadani
- Removed `DebugProbeType` (#1996) by @bugadani
- Removed the `ftdi` and `ftdi-vendored` features (#2077) by @bugadani
- Removed (hidden) private Xtensa APIs (#2051) by @bugadani

## [0.22.0]

Released 2024-01-03

### Added

- Add support for CH32V003 RV32EC RISC-V MCU (#1876) by @andelf
- Add support for `SAMV71` series targets (#1861). (#1861) by @matteocarnelos
- target-gen: Add support for Cortex-M55 and Cortex-M85 (#1959) by @Tiwalun
- Add OpenTitan target file with description of the Earl Grey chip. (#1980) by @jwnrt
- Added support for riscv semihosting SYS_EXIT syscall.<br>
  Please note that probe-rs with espflash < 3.0 will probably fail to flash a binary containing semihosting calls due to https://github.com/esp-rs/espflash/issues/522 (#1901) by @t-moe
- Add support for the esp32c2 target (#1869) (#1869) by @SergioGasquez
- Add support for the esp32s3 target (#2003) by @bugadani
- Auto-detect ESP32 flash size (#1952) by @bugadani
- Added support for EFM32PG1B series microcontrollers. (#1845) by @BogdanOlar
- Xtensa: Add flashing support for the esp32s3 (#1956) by @bugadani
- The debugger REPL commands now have an implementation for `backtrace`. The stacktrace is serialized using the yaml format. (#1918) by @noppej
- Allow specifying the default `Format` for a target<br>
  Refactor the target definition to allow specifying the default Format
  for a given target. By default all targets `default_target` is `Elf`,
  except for the esp32\* targets which are now `Idf`. (#1886) by @MabezDev
- Added initial xtensa support. (#1928) by @MabezDev
- Added support for LM3S series targets. (#1990) by @evanmcclure
- Added the concept of transfer encoding that is applied during firmware download. Added the Miniz encoding. (#1947) by @bugadani
- Added a new `dump` command for the CLI and vscode REPL to dump a full core state (#1783). (#1783) by @Yatekii
- Handle the `DW_AT_specification` attribute when unwinding. (#1853) by @Tiwalun
- Add `--catch-reset` & `--catch-hardfault` cli flags (#1899) by @MabezDev
- Custom debug sequences for ATSAMD1x, D2x, DAx micros. Enables DSU-based chip erase. (#1855) by @ianrrees
- Add support for the esp32h2 target (#1862) (#1862) by @MabezDev
- Add scan chain support for the esp32\* targets and the espusbjtag driver. (#1878) by @MabezDev
- The rtthost gets the ability to reset the targert after the RTT session is established. (#1900) by @Sh3Rm4n
- Added support for PAC52XX series microcontroller. (#1868) by @liamkinne
- Added experimental support for WCH-Link probe in RV mode. (#1437) by @andelf
- Xtensa: detect flash size (#1976) by @bugadani

### Changed

- Continue running the core if an unsupported semihosting call occured.<br>
  Previously, `probe-rs run` would exit with "the CPU halted unexpectedly", whenever an unknown semihosting operation occurred.
  With this change, `probe-rs run` will print a warning and then automatically continue the core. (#1901) by @t-moe
- `dap-server`: Move initial check of core state from `threads` request to `configuration_done` request. (#1903) by @Andrew-Collins
- Renamed `JTAGAccess::get_idle_cycles` to `idle_cycles` and removed redundant inherent fns (#1924) by @bugadani
- Reduced logging level for custom debug sequences (#1882) by @ianrrees
- The `dump` command that is used by the VSCode REPL can now be used without specifying memory regions.<br>
  The resulting coredump will include all the memory regions required to unwind the in-scope functions and variables. (#1930) by @noppej
- For CLI builds, statically link to libusb to make installation of precompiled binaries easier. (#1830) by @Tiwalun
- By default, `probe-rs run` and `probe-rs attach` will only scan the memory for the RTT control block if the `--rtt-scan-memory` flag is provided. It will still always look for a `_SEGGER_RTT` symbol in the ELF file and use that first in all circumstances. (#1919) by @ia0
- Refactor unwinding code to improve testability, add tests for unwinding. (#1853) by @Tiwalun
- The `ftdi-vendored` feature now enabled `ftdi` automatically (#1999) by @bugadani
- Hide vector catch errors when it hasn't been implemented for the target. (#1885) by @MabezDev
- Logging to file is now off by default. Use `--log-to-folder` or `--log-file` to enable. (#1946) by @bugadani
- Improved RISC-V IO utilisation by batching more operations (#1932) by @bugadani
- The read operations from the `MemoryInterface` trait are moved into a separte `ReadOnlyMemoryInterface` trait, so that it is clear which code actually changes memory. (#1853) by @Tiwalun
- Updated ESP32 targets to tune flashing speed (#1936) by @bugadani
- Move the stack refresh functionality to poll_cores, and trigger a refresh when the state changes from 'running' to 'halted'. (#1902) by @Andrew-Collins
- Rewrote benchmark cli tool, removing report submission and adding multiple speed/size/stride options (#1837) by @9names
- RP2040 memory map changed from three blocks (256K + 4K + 4K) to one block (264K). Allows ELF files to contain sections that go over the boundaries. (#1943) by @thejpster
- espusbjtag: don't reset the chip on attach (#1915) by @MabezDev
- espusbjtag: capture fewer bits (#1931) by @bugadani
- Refactor esp-usbjtag to clean it up some (#1920) by @bugadani

### Fixed

- Disable the second core on LPC55S69 to fix #1802. (#1823) by @Tiwalun
- Fix LPC55S69 reset sequence
  Fix LPC55S69 attach without disturbing target (#1907) by @9names
- - Improved handling of source file paths in debugger, don't assume paths in the debug information
    are in the same format as the paths of the host OS. (#1857) by @Tiwalun
- Updated the STM32G4 target yaml to [version 1.5.0](https://www.keil.arm.com/packs/stm32g4xx_dfp-keil/versions/). This fixes the stm32g4xx_256 flash algorithm. (#1896) by @dlaw
- Set DbgSwEnable to 1 during memory access (#1841) by @pcc
- Flasher: single buffer transfers are now done with u32 writes (#1944) by @bugadani
- cli: Rename struct to avoid debug assert in `profile` subcommand. Fix #1808. (#1825) by @Tiwalun
- Added missing reset and halt timeout handling for RV32 targets. (#1874) by @andelf
- Also use serial number to distinguish CMSIS-DAP probes. Fix #1835. (#1835) by @pcc
- Added missing SRAM entries for STM32L4 microcontrollers. (#1856) by @VilNeo
- cli/run: Fix a bug where the last messages printed by the code before crashing (like a panic message) did not get printed. (#1890) by @Dirbaio
- Fixed cases where probe attachment were inconsistent. (#1929) by @MabezDev
- Fix minor bugs of WCH-Link implementation, add new probe varient. (#1875) by @andelf
- Flash loader will now properly flash all bytes (#1951) by @bugadani
- Update debug sequence for LPC55S69 with newest from pack, fixes an issue where the chip would not reset properly. (#1832) by @Tiwalun
- Change from openSSL to rustls.<br>
  The prebuilt binaries depended on the system openSSL installation on Linux.
  This meant that they required openSSL1, which is not supported e.g. on Ubuntu 22.04.
  Changing to rustls removes this dependency. (#1828) by @Tiwalun
- Issue DAPABORT at startup and after receiving WAIT response from CMSIS-DAP (#1840) by @pcc
- - Mark all ARM memory accesses as cacheable, to indicate they must not bypass
    the cache and instead should see the same data as the CPU. Fixes #1715. (#1883) by @adamgreig
- Fix the RAM address mapping for the esp32c3. (#1898) by @MabezDev
- Fix core names and regions in LPC55S69 target description. (#1832) by @Tiwalun
- dap-server: Return correct type for error response. (#1895) by @Tiwalun
- `target-gen`: Fix incorrect URL formatting (#1860). (#1860) by @matteocarnelos
- espusbjtag: Fixed a potential edge case that could lock up the interface. (#1933) by @bugadani
- Unlock the OS Lock when starting an ARMv8 core (#1839) by @pcc
- Correct esp-usbjtag reset assert/deassert levels. (#1922) by @bugadani
- Prevent Debug Adapter Protocol workarounds for VSCode quirks from breaking other DAP clients. (#1872) by @linuxtim

### Removed

- Removed unused `--assert` from `probe-rs reset` (#1993) by @bugadani

## [0.21.1]

Released 2023-10-12

### Added

- rtthost: Add --version

### Changed

- `cli`: Simplify `RttActiveChannel::get_rtt_data` (#1806)

### Fixed

- debug: Do not crash and, and improve error message when unwinding memory location for optimized binaries. (#1810)

## [0.21.0]

Released 2023-10-04

### Added

- Added Target for MSPM0L (#1789)
- Support for EFM32 Happy Gecko MCUs (#1747)
- Added RA4M1 series target, R7FA4M1AB. (#1706)
- Support for NXP i.MX RT500 series chips: MIMXRT595S, MIMXRT555S, MIMXRT533S (#1642)
- Added --no-location option to the CLI run command, which suppresses the filename and line number
  information from the rtt log (#1704)
- target-gen: Add new `--test-address` option to the `target-gen test` subcommand. (#1708)
- `cli`: Add `--verify` flag to `download`, `flash` and `run` (#1727)
- `cli`: Add `read` and `write` commands to interact with target memory (8,32,64 bit words) (#1746)
- Added STM32U5A and STM32U59 targets. (#1744)
- Added AT32F4 series targets (#1759)
- Allowed JTAG scan chain information to be encoded in targets (#1731)
- Added support for IDF and BIN to cargo flash. Added UF2 support to cargo
  flash and probe-rs. (#1765)
- Support for handling an Arm Cortex-M Semihosting 'Exit Success' or 'Exit Failure' command. (#1755)
- Added getters to registry : `get_targets_by_family_name` & `get_target_and_family_by_name`, change `get_target_by_name`. (#1770)
- Support for vector catch in Armv8-M targets (#1709)
- Add log rotation to stop disks from filling. Currently a maximum of 20 logs is kept. (#1780)
- Allow to customize the defmt log format with `--log-format`. (#1788)
- Added support for the STM32WBA (#1761) by @Dirbaio

### Changed

- `cli`: Allow to interrupt `probe-rs run` during RTT scan (#1705).
- `cli`: Ignore errors from `enable_vector_catch` (#1714).
- `cli`: Retry RTT attach before continuing (#1722).
- `cli`: Clean clap attributes (#1730)
- `target-gen`: (#1745)
  - Memory regions in target.yaml are now sorted with lowest address first.
  - Use `.pdsc` flash algorithm `RAMstart` field to calculate `load_address` for target yaml.
- Target definitions can now constrain the RTT automatic scanning ranges to just a subset of all available RAM, to support targets that have large amounts of RAM that would take a long time to scan. (#1738, #1749)
- `cli`: Output `defmt` logs as colored (#1752)

### Fixed

- Handle non-secure RESET peripheral in nRF5340 `debug_core_unlock` sequence.

### Removed

- `cli`: `dump` subcommand, replaced by `read`.

## [0.20.0]

Released 2023-07-19

### Added

- `dap-server`: In addition to `Elf` format, this adds support for binary formats `Bin`, `Hex`, and `Idf` (#1656).
- Added PAC55XX series targets (#1655)
- Added support for JTAG commands via CMSIS-DAP protocol (#1462)
- `core`: Added PAC55XX series targets (#1655)
- `core`: Stack unwinding can now unwind beyond (optionally nested) exception handlers (#1665).
  - ARMv6-M: Report Exception / Fault description, and Unwind the registers and next frames.
  - ARMv7-M: Also decodes details about HardFault, UsageFault, BusFault, and MemManageFault.
  - ARMv7-A, Armv8-M, Armv8-A, RISC-V: Not implemented - requires architecture specific implementations.
- `cli`: Added a simple profiler to the probe-rs cli toolkit (#1628)
- `core`: Added MSP432E4 target (MSP432E401Y and MSP432E411Y). (#1139)
- `core`: Added vector catch for ARMv6-M and ARMv7-M (#1592)
  - Currently supported are HardFault and CoreReset.
- `cli`: The run command now prints a stack trace on `HardFault` (#1592)
- Added a simple profiler to the probe-rs cli toolkit (#1628)
- Added MSP432E4 target (MSP432E401Y and MSP432E411Y). (#1139)
- probe-rs-cli: added `attach` subcommand. (#1672, #1616)

### Changed

- `cli`: more descriptive error messages for ambigous chips (#1671).
- `cli`: When using `memory` as the trace sink for an ITM trace, the trace is now read
  out through the debug registers (#1688)
- `target-gen`: RTT is enabled by default now in the `test` command (#1690).

### Fixed

- `core`: Added a missing reset catch clear that prevented the CPU from properly starting after flashing RTT from attaching (#1675).
- `cli`: fixed `--base-address` having no effect (#1664).
- `cli`: fixed `--skip` not accepting hexadecimal values (#1664).
- `cli`: all the commands now load the chip description path and provide uniform config arguments (#1691).
- `dap-server`: The VSCode extension reports all STDERR errors if process initialization fails (#1699).
- `debug` : Consider `RegisterValue` byte size when doing arithmetic on register addresses. (#1701)
- FTDI probe: Fixed dr_pre bits not being handled correctly during register operations.
- ARMv7-A, ARMv8-A: Fixed incorrect addresses for registers.

### Removed

- cli: removed obsolete `--skip-bytes` (which had no effect), use `--skip` instead (#1664).

## [0.19.0]

Released 2023-06-27

### Changed

- Merged `probe-rs-cli`, `probe-rs-debugger`, `cargo-embed`, `cargo-flash` binaries into the `probe-rs` crate.
  - `probe-rs-cli` is now available in `probe-rs`.
  - `probe-rs-debugger` is now available as `probe-rs dap-server`.
  - `cargo-embed` and `cargo-flash` functionality is unchanged, but they are now small shim binaries that invoke `probe-rs`.
  - Running `cargo install probe-rs` installs the `probe-rs`, `cargo-embed` and `cargo-flash` binaries.
- Merged the `gdb-server` crate into `probe-rs`. It's now available under `probe_rs::gdb_server`, and requires enabling the `gdb-server` Cargo feature.

### Fixed

- probe-rs: recognize `CMSIS-DAP` probes with device strings containing `CMSIS_DAP`
- probe-rs-debugger: Show errors that happen before VSCode/DAP Client session initializion has completed (#1581).
- probe-rs-cli-util: replace unwanted instance of `println` with `eprintln` (#1595, fixes #1593).
- stlink: exit JTAG mode on idle to tristate debug interface (#1615).
- probe-rs-debugger: The MS DAP Request `setBreapoints` clears existing breakpoints for the specified `Source`, and not for all `Source`'s (#1630)
- probe-rs/flashing: Inconsistent address formatting in the "No flash memory contains the entire requested memory range" (`FlashError::NoSuitableNvm`) error message (#1644)
- probe-rs/flashing: For targets whose flash algorithms require a fixed load address, always select a RAM region containing that address. (#1646)
- probe-rs: Add support for the esp-idf binary format (#1629)

### Added

- Added support for the Olimex ARM-USB-TINY-H JTAG device (#1586).
- Added support for propagating `CoreStatus` to the probe in use (#1588).
- Added PY32F0xx series targets (#1619).
- Flashing process can now detect and report if the flashing algorithm locks up the core that it's running on. (#1645)

### Removed

- Removed Sentry integration in the CLI tools.

## [0.18.0]

Released 2023-03-31

### Fixed

- Add reset catch sequence for Silicon Labs EFM32/EFR32 Series 2 chips.
- Support for detecting WCH-Link as CMSIS-DAP v1 probe
- target-gen: Use the correct flash base address when testing flash algorithm (#1542)
- VSCode and probe-rs-debugger is very slow if `rttEnabled: true` and target application has no RTT initialized (#1497).
- prober-rs-debugger: Using the readMemory request on RISC-V (ESP32C3 board) is slow (#1275).
- probe-rs-debugger: Improve handling of `disconnect` and `terminate` requests. With support in DAP Client/VSCode for: (#1197)<br>
  - `Disconnect` - will disconnect the debug session, without affecting the run status of the target application.
  - `Disconnect and Suspend` - will halt the target application, before disconnecting the debug session.
  - `Terminate` request is not supported, and DAP configuration is such that it won't be requested by the client.
- probe-rs-debugger: Improve handling of `restart` request. With support in DAP Client/VSCode for: (#1507)
  - `Restart` will now restart the debug session. Currently this is support for ARM targets only.
  - If a newer binary is available, and flashing enabled, then the new binary will be flashed before starting the new debug session.
- probe-rs-debugger: Ensure VSCode will halt on all configured breakpoints`, irrespective of flashing config. (#1529)
- probe-rs-debugger: Fix issue where "Watch" variables were not found in the debug session. (#1552)

### Changed

- Update MS DAP protocol to v1.60.0. Documentation clarifications only. (#1458)
- probe-rs-debugger: Cleaned up the timing of caching unwind information, based on new MS DAP protocol docs. (#1458)
- probe-rs: Allows `add_target_from_yaml` function to accept multiple sources
- probe-rs-debugger: Remove `restart-after-flashing` option, and make it the default behaviour. (#1550)
- probe-rs: Trigger rebuild if changes in the `PROBE_RS_TARGETS_DIR` detected (#1562).
- probe-rs: Set the flash range of RP2040 to the max supported size (#1567)
- probe-rs-debugger: Slightly relax the RISC-V restriction when handling `restart` request. Allows restart, but does not re-flash. (#1569)

### Added

- Added EFM32TG11B family targets (#1420)
- Added LPC55Sxx target (#1513)
- Added STM32H5xx targets (#1575)
- Added custom sequence support to STM32L0, L1, L4, G0, G4, F0, F3, WB, WL,
  enabling debug clocks during sleep modes (#1521)
- Add default sequence 'debug_core_stop', which disables debugging when disconneting from ARM cores by default. (#1525)
- probe-rs-debugger: Initial support for 'gdb-like' commands to be typed into VSCode Debug Console REPL. (#1552)<br>
  - The `help` command will list available commands, and arguments.
  - Command completions are supported for the individual commands, but not for the arguments.
  - Additional commands can be added in the future, as required, but will benefit from some refactoring to share code with functionality that is already implementated in `dap_adapter.rs` for MS DAP requests.
- debug: Enable debug experimental support for binaries compiled from C files (GNU C99/11/17). (#1558)
- Added support for `monitor reset` and `monitor reset halt` commands in `gdb-server` (#1565)

## [0.17.0]

Released 2023-02-06

### Added

- st-link: Support reading banked DP registers if firmware is new enough to support it.
- target-gen: Add support for STAR-MC1 by Arm China

### Fixed

- probe-rs: Emit chip erase started and finished/failed events correctly (#1470, #1496)<br>
  The finished/failed event would only be emitted when a sectorwise erase would be performed.
  Now the events are correctly emitted.
- probe-rs: Fixed a race condition when reseting NXP chips under JTAG (#1482)<br>
  As an example, this makes flashing the Teensy 4.1 (which has an i.MX RT1062) reliable.
- probe-rs: jlink: fix WAIT retries on AP reads. Fixes flashing on nrf91. (#1489)
- Add flashing and debugging support for the ESP32C6 (#1476)
- Debug: Fixed a number of known issues, which included some code refactoring to avoid code duplication (#1484).<br>
  - Unwind of variables that are in inlined subroutines now resolve correctly under all known conditions.
  - Unwind of nested arrays now resolve, irrespective of the levels of nesting (#1404).
  - Gracefully handle the unwind of arrays that are empty.
  - Correctly unwind pointers/references that are nested as references in several layers of structs.
  - Correctly unwind pointers/references to variants and enums.
  - Fix an error that terminated the debug when new architecture error variants were introduced by a previous PR.
  - Fix an error where unwind memory locations decoded memory values as integer addresses without accounting for endianness.
- VSCode: Avoid sending extraneous `StoppedEvent` from probe-rs-debugger (#1485).
- cmsis-dap: Avoid endless recursion when recovering from errors.<br>
  When an error occurred, the cmsis-dap code tried to read the debug port CTRL register.
  If that read failed, it would again try to read the same register, returning in an
  endless recursion.

## [0.16.0]

Released 2023-01-29

probe-rs library is unchanged, version number is increased to keep in sync with other
probe-rs packages.

## [0.15.0]

Released 2023-01-28

### Added

- target-gen: Add new `--fixed-load-address` flag to the `target-gen elf` subcommand. (#1419)<br>
  This can be used when the flash algorithm needs to be loaded at a specific address.
  The address is determined automatically from the ELF file.
- target-gen: Extract RTT control block address from flash algorithm. (#1427)<br>
  Check if the flash algorithm supports RTT, and if it does, store the RTT control block
  address in the target YAML file.
- probe-rs: Read RTT during flashing procedures if the algorithm supports RTT.<br>
  This enables better debugging for flash-algorithms and should encourage development of said algorithms.
- Add support for FT4232HL probe.
- probe-rs-cli: Add `--log-file` option to specify where the log file should be placed.
- target-gen: Add a command which enables the easy development and debugging of a flash algorithm.<br>
  `target-gen test` is a new command to automatically upload, run, print RTT messages and test
  a flash algorithm. Have a look at the - Added a simple profiler to the probe-rs cli toolkit (#1628)[template](https://github.com/probe-rs/flash-algorithm-template)
  to create a new flash algorithm.

### Changed

- cmsisdap: Increased read timeout from 100ms to 1000ms.
- rtt: Moved RTT to the probe-rs library instead of having it in its own library. (#1411)
- probe-rs: update probe-rs/targets/STM32F3_Series.yaml with `target-gen`

### Fixed

- probe-rs: Avoid nested calls to tracing macros, otherwise filtering doesn't work properly. (#1415)
- probe-rs-cli: Reduce RTT polling frequency in run command to avoid USB instability issues.

## [0.14.2]

Released 2023-01-18

- Added STM32С0 target (STM32С011 and STM32С031). (#1403)

### Fixed

- stlink: fix retries on DP/AP WAIT errors. (#1406)

## [0.14.1]

Released 2023-01-14

## [0.14.0]

Released 2023-01-13

### Added

- Added PartialEq Trait to the struct DebugProbeInfo. (#1173)
- Added support for configuring trace data destinations (#1177)
  - Tracing on M4 architectures utilize the TPIU for all hardware tracing (#1182)
- ITM tracing can now be completed using the probe-rs CLI (#1180)
- Added support for MIMXRT10xx targets (#1174)
- Added support for the Cortex M7 of MIMXRT11xx targets (#1250)
- Added support for in-line (column specific) breakpoints where multiple statements (potential breakpoints) are on the same line of source code. (#1156)
- Added support for MSP432P4XX targets (#1201)
- Added support for Microchip SAMDA1
- Added Probe re-attach handling when needed after `debug_device_unlock`
- Added Custom ArmDebugSequence for ATSAM D5x/E5x devices
- Added a `FlashLoader::data` method (#1254)
- Added Support for STM32H735 family. (#913)
- Added support for MAX32660 target (#1249)
- Added support for W7500 target
- Added an optional `stack_size` configuration to flash algorithms to control the stack size (#1260)
- Added Support for Debug Erase Sequences that (if available) are used instead of the normal chip-erase logic
- Added Support for GD32E50x targets (#1304)
- Added support for the Infineon XMC4000 family
- Added support for the Infineon XMC4000 family (#1301)
- Added debug support for viewing function arguments (#1333)
- Added support for the EFM32GG11B family (#1346)
- Added support for finding targets externally (#1338)

### Changed

- SWV vendor configuration has been refactored into sequences and trace functions have been renamed:
  - `Session::setup_swv` has been renamed to `Session::setup_tracing`
  - `Session::read_swo` has been renamed to `Session::read_trace_data`
- `probe-rs-debugger`: RISC-V `ebreak` instruction will enter Debug Mode (#1213)
- RTT: When a channel format is `defmt`, automatically set the channel mode to `BlockingIfFull` on attach. (Enhancement request #1161)
- RTT: Report data decode errors when channel format is `defmt`. (#1243)
  - Note: This is a breaking API change for `probe_rs_cli::rtt::RttActiveChannel::get_rtt_data()`. To mitigate the impact of this change:
    - `probe_rs_cli::rtt::RttActiveTarget::poll_rtt()` will maintain the original signature and behaviour of ignoring errors from `defmt` until deprecated in 0.14.0.
    - The new `probe_rs_cli::rtt::RttActiveTarget::poll_rtt_fallible()` will propagate errors from `get_rtt_data()` on any of the active channels.
- target-gen: Various changes and optimizations: (#1259)
  - Memory addresses and sizes in YAML are generated in hex format, for improved readability.
  - Remove `Option::is_none`, empty `Vec`, and `false` bool values, in generated YAML, for improved readability.
  - Generate all pack file specified memory regions.
  - Match memory regions to pack file specified core names.
- `probe_rs_target::chip::Chip` has a new field `pack_file_release` which is populated by `target-gen`.(#1259)
- Benchmarking code moved from an example to `probe-rs-cli` subcommand (#1296).
- Replace `log` crate, with `tracing` in `probe-rs-debugger` executable, and in the `rtt` library. (#1297)
- Improved formatting of `probe-rs-cli info` output. (#1305)
- Refactor VSCode handling of logging and user messaging - see [VSCode PR #37](https://github.com/probe-rs/vscode/pull/37) (#1334)
- Refactor error handling, split `crate::Error::ArchitectureSpecific` into two separate variants for RISC-V and ARM, and create a new `ArmError` enum for ARM specific errors. (#1344)

### Fixed

- (#1351) Warning messages about duplicate packages when using `probe-rs` as a library
- (#1269) Error message in case of FTDI device access issues.
- (#350) Flashing and debugging on STM32 chips using WFI instructions should now be stable (fixed in #1177)
- Fixed rtthost --scan-region to properly support memory range scannig. (#1192)
- Debug: Improve logic for halt locations used by breakpoints and stepping. (#1156)
- Debug: Some in-scope variables are excluded from stack_trace. (#1156)
- Debug: Ensure RTT buffer on target is reported to DAP client in 'timely' manner. (#1208)
- Debug: Provide unique default names on DAP client, when multiple RTT Channels have no configured name. (#1208)
- Added missing memory regions for ESP32.yaml file, to fix RTT Channel name issue. (#1209)
- Fix maximum addressable Flash size in ESP32.yaml file, to be 16Mb (was 64Mb). (#1209)
- Debug: Enable stepping or running past a BKPT (Arm Cortex-M) or EBREAK (RISC-V) instruction (#1211).
- (#1058) Non-successful DAP Transfer requests no longer require response data to be present.
- Debug: Gracefully handle stack unwind when CFA rule references a FP with value of zero. (#1226)
- Debugger: Improve core status checking during launch.(#1228)
- Debugger: Prevent stack overflows when expanding "static" section in probe-rs-debugger. (#1231)
- RTT: Prevent panicking in `probe-rs-cli-util/src/rtt/rs` when defmt stream decoding provides invalid frame index. (#1236)
- Fix: Attaching to LPC55S69 seems to stop code execution - incorrect values in target YAML. (#1220)
- Debug: Fix `probe-rs-debugger` crashes when variable unwind fails with excessively long error messages. (#1252)
- Fix: Dual core devices had incorrect 'core' names in `STM32H7_Series.yaml`, causing panic during flashing. (#1023)
- Fix: Include all RAM regions in `STM32H7_Series.yaml` (#429)
- Fix: Include all new STM32H7 variants from the latest CMSIS pack file (#913)
- Fix: Update STM32G0_Series.yaml to include latest variants (STM32G050, STM32G051, STM32G061, STM32G0B0, STM32G0B1, STM32G0C1) (#1266)
- Fix: Correct flash algorithm values in LPC55S69.yaml. (#1220)
- Fix: Timeout during flashing when using connect under reset - regression from #1259. (#1286)
- Fix: Validate RiscV CSR addresses to avoid unnecessary panics. (#1291)
- Debugger: Fix unpredictable behaviour when breaking on, or stepping over macros. (#1230)
- Fix: Extend fix for WFI instructions (#1177) to STM32F1
- Debugger: RTT data from target is now polled/reported in a timely manner, during stepping, and after breakpoint halting. (#1341)

## [0.13.0]

### Added

- Added an option to disable use of double-buffering when downloading flash (#1030, #883)
- rtt::ChannelMode implements additional traits: Clone, Copy, serde's Serialize and Deserialize
- Added a permissions system that allows the user to specify if a full chip erase is allowed (#918)
- Added debug sequence for the nRF5340 that turns on the network core can unlock both cores by erasing them if that is permitted (#918)
- Support for core registers `msp`, `psp` and `extra`, extra containing:
  - Bits[31:24] CONTROL.
  - Bits[23:16] FAULTMASK.
  - Bits[15:8] BASEPRI.
  - Bits[7:0] PRIMASK.
- Debug port start sequence for LPC55S16. (#944)
- Added a command to print the list of all supported chips. (#946)
- Added a command to print info about a chip, such as RAM and the number of cores. (#946)
- ARM:`Session::swo_reader` that returns a wrapping implementation of `std::io::Read` around `Session::read_swo`. (#916)
- Added CortexM23 to Armv8m mapping for `target-gen`. (#966)
- Added get_target_voltage to the Probe struct to access the inner DebugProbe method. (#991)
- Debugger: Added support for showing multiple inlined functions in backtrace. (#1002)
- Debugger: Add support LocLists (attribute value of DW_AT_location) (#1025)
- Debugger: Add support for DAP Requests (ReadMemory, WriteMemory, Evaluate & SetVariable) (#1035)
- Debugger: Add support for DAP Requests (Disassemble & SetInstructionBreakpoints) (#1049)
- Debugger: Add support for stepping at 'statement' level, plus 'step in', 'step out' (#1056)
- Debugger: Add support for navigating and monitoring SVD Peripheral Registers. (#1072)
- Added GD32F3x0 series support (#1079)
- Added support for connecting to ARM devices via JTAG to the JLink probe
- Added preliminary support for ARM v7-A cores
- Added preliminary support for ARM v8-A cores
- CLI Debugger: Added 8-bit read / write memory commands
- Added Arm Serial-Wire-View (SWV) support for more targets (e.g. STM32H7 families) (#1117)
  - Support added for trace funnels and SWO peripherals
  - Added custom sequencing for STM32H7 parts to configure debug system components on attach
- Added support for ARMv8-A cores running in 64-bit mode (#1120)
- Added FPU register reading support for cortex-m cores
- Added support for Huada Semiconductor HC32F005 MCUs.
- Added FPU register support for Cortex-A cores (#1154)
- GDB now reports the core name in `info threads` (#1158)
- Added a recover sequence for the nRF9160 (#1169)
- Added support for `JTAGAccess::write_register_batch` the esp-serial-jtag probe (#1633)

### Changed

- ARM reset sequence now retries failed reads of DHCSR, fixes >500kHz SWD for ATSAMD21.
- Chip names are now matched treating an 'x' as a wildcard. (#964)
- GDB server is now available as a subcommand in the probe-rs-cli, not as a separate binary in the `gdb-server` package anymore. (#972)
- `probe_rs::debug` and `probe-rs-debugger` changes/cleanup to the internals (#1013)
  - Removed StackFrameIterator and incorporated its logic into DebugInfo::unwind()
  - StackFrame now has VariableCache entries for locals, statics and registers
  - Modify DebugSession and CoreData to handle multiple cores.
  - Modify Variable::parent_key to be Option<i64> and use None rather than 0 values to control logic.
  - Use the updated StackFrame, and new VariableNodeType to facilitate 'lazy' loading of variables during stack trace operations. VSCode and MS DAP will request one 'level' of variables at a time, and there is no need to resolve and cache variable data unless the user is going to view/use it.
  - Improved `Variable` value formatting for complex variable types.
- Updated STM32H7 series yaml to support newly released chips. (#1011)
- Debugger: Removed the CLI mode, in favour of `probe-rs-cli` which has richer functionality. (#1041)
- Renamed `Probe::speed` to `Probe::speed_khz`.
- Debugger: Changes to DAP Client `launch.json` to prepare for WIP multi-core support. (#1072)
- `ram_download` example now uses clap syntax.
- Refactored `probe-rs/src/debug/mod.rs` into several smaller files. (#1082)
- Update STM32L4 series yaml from Keil.STM32L4xx_DFP.2.5.0. (#1086)
- Debugger: SVD uses new `expand` feature of `svd-parser` crate to expand arrays and clusters. (#1090)
- Updated cmsis-pack dependency to version 0.6.0. (#1089)
- Updated all parameters and fields that refer to memory addresses from u32 to u64 in preparation for 64-bit target support. (#1115)
- Updated `Core::read_core_reg` and `Core::write_core_reg` to work with both 32 and 64-bit values (#1119)
- Renamed `core::CoreRegisterAddress` to `core::RegisterId`, and `core::CoreRegister` to `core::MemoryMappedRegister`. (#1121)
- Updated gdb-server to use gdbstub internally (#1125)
- gdb-server now uses all cores on a target (#1125)
- gdb-server now supports floating point registers (#1133)
- Debug: Correctly handle compressed vs non-compressed instructions sets for RISC-V. (#1224)
- The core now needs to be halted for core register access. (#1044)
- The memory functions to do memory transfers have been standardized. This effectively means that `read_*` and `write_*` do what the name says unconditionally. E.g. `read_8` will always do 8 bit reads or `write_32` will always do 32 bit writes. New functions that are called `read` and `write` have been introduced. Those will try to maximize throughput. They mix transfer sizes however they see fit. If you need to use a feature of a chip that requires a specific transfer size, please resort to the `read_*` and `write_*` functions. (#1078)

### Fixed

- Fixed a panic when cmsisdap probes return more transfers than requested (#922, #923)
- `probe-rs-debugger` Various fixes in PR. (#895)
  - Fix stack overflow when unwinding circular references in data structures. (#894)
  - Reworked the stack unwind in `StackFrameIterator::new()` and `StackFrameIterator::next()`
    - More reliable backtrace and register values for previous frames in the stack.
    - Lazy (on demand) load of &lt;statics&gt; variables to avoid overhead during debugging.
    - More accurate breakpoint handling from VSCode extension.
    - Virtual frames for `inlined` functions, that can step back to the call site.
  - A fix to adapt to Rust 2021 encoding of Dwarf `DW_AT_discr_value` tags for variants.
  - Updated MS DAP Protocol to 1.51.1.
  - Adapt to `defmt` 0.3 'Rzcobs' encoding to fix [VSCode #26](https://github.com/probe-rs/vscode/issues/26).
  - Support the new `defmt` 0.3 `DEFMT_LOG` environment variable.
  - Requires `probe-rs/vscode` [PR #27](https://github.com/probe-rs/vscode/pull/27)
  - Debugger: Improved RTT reliability between debug adapter and VSCode (#1035)
  - Fixed missing `derive` feature for examples using `clap`.
  - Increase SWD wait timeout (#994)
  - Debugger: Fix `Source` breakpoints only worked for a single source file. (#1098)
  - Debugger: Fix assumptions for ARM cores
  - GDB: Fix assumptions for ARM cores
- Fixed access to Arm CoreSight components being completed through the wrong AP (#1114)
- Debug: Additions to complete RISC-V and 64-bit support. (#1129)
  - probe_rs::debug::Registers uses new `core::RegisterId` and `core::RegisterValue` for consistent register handling.
  - RISC-V `Disassembly` works correctly for 'compressed' (RV32C isa variants) instruction sets.
  - RISC-V stack unwind improvements (stack frames and registers work, variables do not resolve correctly.)
- Fixed a possible endless recursion in the J-Link code, when no chip is connected. (#1123)
- Fixed an issue with ARMv7-a/v8-a where some register values might be corrupted. (#1131)
- Fixed an issue where `probe-rs-cli`'s debug console didn't detect if the core is halted (#1131)
- Fix GDB interface to require a Mutex to enable multi-threaded usage (#1144)
- Debug: RISC-V improvements (#1147).
  - Fix: Variable values now resolve correctly. This fix also fixes variables when using the rustc flag `-Cforce-frame-pointers=off` on ARM.
  - Fix: Allow unwinding past frames with no debug information (See Issue [#896](https://github.com/probe-rs/probe-rs/issues/896))
  - Fix: Using `restart` request from VSCode now works for both states of `halt_after_rest`.
  - Partial Fix: Set breakpoints and step on RISC-V. Breakpoints work but stepping only works for some breakpoints. This will be addressed in a future PR.
- Fix nrf9160 target file so it can erase UICR section (#1151)
- Fix connect under reset for CMSIS-DAP probes(#1159)
- Fix double default algorithms for the stm32f7x line with 1MB flash (#1171)
- Fixed detecting CMSIS-DAP probes that only say "CMSIS-DAP" in interface strings, not the product string (#1142/#1135/#995)

## [0.12.0]

- Added support for `chip-erase` flag under the `probe-rs-cli download` command. (#898)
- Added support for `disable-progressbars` flag under the `probe-rs-cli download` command. (#898)
- Fixed bug in `FlashLoader` not emitting `ProgressEvent::FinishedErasing` when using `do_chip_erase`. (#898)

### Added

- Added initial multicore support. (#565)
- probe-rs-cli-util: added common option structures and logic pertaining to probes and target attachment from cargo-flash. (#723)
- probe-rs-cli-util: escape hatch via `--` for extra cargo options not declared by `common_options::CargoOptions`.
- Added SWDv2 multidrop support for multi-DP chips. (#720)
- Added The possibility to use `--connect-under-reset` for the `probe-rs-cli info` command. (#775)
- Added support for flashing `bin` format binaries with the `probe-rs-cli download` command. (#774)
- Improved number parsing on all the `probe-rs-cli` commands. They now all accept normal (`01234`), hex (`0x1234`), octal (`0o1234`) and binary (`0b1`) formats. (#774)
- Added progress bars to the probe-rs-cli download command. (#776)
- Improve reliability of communication with the RISC-V debug module by recovering from busy errors in batch operations. (#802)
- Added optional ability to load fixed address flashing algorithms (non PIC). (#822)
- Added target definition validation to make handling inside probe-rs easier by making some basic assumptions about the validity of the used `ChipFamily` without always checking again. (#848)
- Added support for the built in JTAG on the ESP32C3 and other ESP32 devices (#863).
- Added name field to memory regions. (#864)
- debugger: Show progress notification while device is being flashed. (#871, #884)
- Add optional ability to load fixed address flashing algorithms (non PIC). (#822)
- Added `probe-rs-cli run` command, to flash and run a binary showing RTT output.
- Added a new USB VID for ST-Link V3 without Mass Storage. (#1070)

### Removed

- probe-rs-cli-util: unused module `argument_handling`. (#760)

### Changed

- Enabled the generation of global timestamps and exception traces for ARM targets on `Session::setup_swv`.
- Changed to `hidraw` for HID access on Linux. This should allow access to HID-based probes without udev rules (#737).
- Support batching of FTDI commands and use it for RISC-V (#717)
- Include the chip string for `NoRamDefined` in its error message
- Improved handling of errors in CMSIS-DAP commands (#745).
- Implemented RTT (String, BinaryLE, and Defmt) in `probe-rs-debugger` (#688).
- `probe-rs-debugger` will use the VSCode Client `launch.json` configuration to set RUST_LOG levels and send output to the VSCode Debug Console (#688).
- Bumped dependencies `bitvec 0.19.4`to `bitvec 0.22`, `nom 6.0.0` to `nom 7.0.0-alpha1`. (#756)
- `DebugProbeError::CommandNotSupportedByProbe` now holds a name string of the unsupported command.
- Target YAMLs: Renamed `core.type` values from `M0, M4, etc` to `armv6m`, `armv7m`, `armv8m`.
- Breaking API: Modify `probe-rs-rtt` interfaces to use `probe_rs::Core` rather than `Arc<Mutex<probe_rs::Session>>`.
- An opaque object is returned to represent a compiled artifact. This allows extra information to be provided
  in future without a breaking change (#795).
- Information on whether a rebuild was necessary is included in the artefact (nothing changed if
  `fresh == true`) (#795).
- `Debug` was reimplemented on `Session` (#795).
- Target YAMLs: Changed `flash_algorithms` from a map to an array. (#813)
- Reject ambiguous chip selection.
- Prefer using `read` over `read_8` for better performance and compatibility. (#829)
- Increased default RTT Timeout (retry waiting for RTT Control Block initialization) to 1000ms in `probe-rs-debugger`. (#847)
- Improved when RTT is initialized/retried, and removed `rtt_timeout` from recognized options of `probe-rs-debugger`. (#850)
- Refactor `probe-rs-debugger` code as per `launch` vs. `attach` changes documented in [VS Code extension PR # 12](https://github.com/probe-rs/vscode/pull/12) (#854)
- Breaking change: `probe-rs-debugger` and the associated [VSCode extension PR #21](https://github.com/probe-rs/vscode/pull/21) now uses camelCase for all `launch.json` properties (#885)
- Publicly export `core::RegisterFile` type.
- The trait surface for DAP/AP/DP access was cleaned up and more clarity around the access level of the API was added by properly putting `Raw` or not in the name.
- `target-gen` now deduplicates flash algorithms when generating target files. (#1010)

### Fixed

- Detect proper USB HID interface to use for CMSIS-DAP v1 probes. Without this, CMSIS-DAP probes with multiple HID interfaces, e.g. MCUlink, were not working properly on MacOS (#722).
- When reading from a HID device, check number of bytes returned to detect USB HID timeouts.
- Fix connecting to EDBG and similar probes on MacOS (#681, #721)
- Fixed incorrect flash range in `fe310` causing flashing to fail (#732).
- Multiple default algorithims would silently select the first, now errors intead (#744).
- Fixed STM32WL targets getting a HardFault when flashing binaries larger than 64K (#762).
- Use a more reliable JTAG IR length detection when there's only a single target in the chain. Fixes an issue with the esp32c3. (#796, #823).
- Replaced `unreachable!` induced panic with logic to fix `probe-rs-debugger` failures. (#847)
- Fixed logic errors and timing of RTT initialization in `probe-rs-debugger`. (#847)
- Debugger: Do not crash the CLI when pressing enter without a command. (#875)
- Fixed panic in CLI debugger when using a command without arguments. (#873)
- Debugger: Reduce panics caused by `unwrap()` usage. (#886)
- probe-rs: When unwinding, detect if the program counter does not change anymore and stop. (#893)

### Target Support

- Added LPC5516 targets. (#853)
- Added LPC552x and LPC55S2x targets. (#742)
- Added SAM3U targets. (#833)
- Added RP2040 target (Raspberry Pi Pico). (#720)
- Added STM32WL55JCIx target. (#835)
- Add esp32.yaml with esp32c3 variant. (#846)
- Added STM32U5 series target.
- Added all RAM regions to most STM32H7 parts. (#864)

## [0.11.0]

### Added

- Support for the `HNONSEC` bit in memory access. This now allows secure access on chips which support TrustZone (#465).
- Support for RISC-V chips which use the System Bus Access method for memory access when debugging (#527).
- Support for double buffering in the flash loader, which increased flashing speed (#107).
- Determine location of debug components by parsing ROM table (#431).
- Support for "flashing" data to RAM in the flash loader (#480).
- Added FTDI C232HM-DDHSL-0 to comaptible USB list for FTDI backend (#485).
- Added `--list-probes` and `-n`option to built-in GDB server binary (#486).
- Added RISC-V support to GDB server (#493).
- Added `Session::target()` to access the target of a session (#497).
- Support for target description in the GDB server (#498).
- Support for register write commands in the GDB server (#510).
- Added `get_target_voltage()` function to `DebugProbe`, which can be used to read the target voltage if the probe supports it (#533).
- Added `do_chip_erase` flag to `DownloadOptions`, to allow using chip erase when flashing (#537).
- RISC-V: Support for memory access using system bus (#527).
- Added a generic `read` function, which can be used for memory access with maximum speed, regardless of access width (#633).
- Added an option to skip erasing the flash before programming (#628).
- Added a new debugger for VS Code, using the [Debug Adapter Protocol](https://microsoft.github.io/debug-adapter-protocol/specification). The debugger can be found in the `probe-rs-debugger` crate (#620).
- Additional datatype support for the debugger, plus easier to read display values (#631)
- Added support for raw DAP register reads and writes, using `RawDpAccess`, `RawApAccess` trait (#669, #689, #700).
- Added support for verify after flashing. (#671).
- Handle inlined functions when getting a stack trace (#678).
- Added 'Statics' (static variables) to the stackframe scopes. These are now visible in VSCode between 'Locals' and 'Registers'. This includes some additional datatypes and DWARF expression evaluation capabilities. (#683)
- Added a function to mass erase all memory. (#672).
- Handle Cortex `LOCKUP` status during debugging (#707)

### Target Support

- Added EEPROM region flashing support for STM32L071KBTx (#589).
- Added support for Microchip/Atmel SAM4 (#590).
- Added support for Microchip SAME5x and SAME70 (#596).
- Added support for Microchip SAMD10 (#597).
- Added support for Microchip SAMD11 (#444).
- Fixed support for STM32WB55 (#466).
- Updated target description for LPC55S69 to newest version (#481).
- Use pyocd flash algorithm for NRF52 (#492).
- Added support for flashing NRF52 UICR (#500).
- Updated target description for SAMD21 (#542).
- Support flashes bigger than 128 kBytes on STM32l4xx (#547).
- Added support for LPC546xx (#560).
- Added support for SiLabs EFR32 targets (#566, #567).
- Added support for flashing Intel hex files using `probe-rs-cli` (#618).
- Updated target description for NRF91 (#619).
- Added a RAM benchmark script (#514).
- Initial support for batched commands for J-Link (#515).
- Added support for the STM32F2 family (#675).
- Added support for FE310-G002 (HiFive1 Rev. B).
- Added flash algorithm for GD32VF1 family (#830).

### Changed

- Renamed `MemoryRegion::Flash` to `MemoryRegion::Nvm` (#482).
- Renamed `FlashInfo` to `NvmInfo`
- Renamed `FlashRegion` to `NvmRegion` and its `flash_info()` method to `nvm_info()`
- Renamed `FlashError::NoSuitableFlash` to `FlashError::NoSuitableNvm`
- The `into_arm_interface` and `into_RISC-V_interface` functions are replaced by the `try_into_arm_interface` and
  `try_into_RISC-V_interface` functions, which return the `Probe` struct in the case of an error. This improves the
  auto detection process (#524).
- Improved SWD protocol handling for J-Link (#443, #539, #619).
- Improved error handling for batched CMSIS-DAP commands (#445).
- Use sticky overrun behaviour for improved J-Link performance (#450).
- Better error handling for flashing (#451).
- gdb-server: Halt the chip when attaching (#461).
- Better error messages in the ram_download example (#464).
- Cache value of CSW register to reduce number of SWD transfers (#471).
- Use `erased_byte_value` from target description as default value in the flash loader (#475).
- Added retry functionality for CMSIS-DAP probes (#462).
- RISC-V: Use abstract commands for CSR access for improved speed (#487).
- The `download_file` and `download_file_with_options` functions now accept `AsRef<Path>` instead of `&Path`to be more convenient to use (#545, #579).
- Use `itm-decode` to decode ITM packets instead of built-in decoder (#564).
- Flash API Improvements: Data is now owned by the `FlashLoader`and `FlashBuilder` structs to simply the API, and the `FlashLoader::commit()` accepts the `DownloadOptions` struct instead of bool flags (#605).
- Improve internal tracking of core status (#629).
- Rework SWD sequence in J-Link (#513).
- Print ST-Link version in name (#516).
- Improve argument parsing in debugger, add speed option to probe-rs-cli (#523).
- `probe_rs::flashing::DownloadOptions` is now marked `non_exhaustive`, to make it easier to add additional flags in the future.
- Replace `lazy_static` with `once_cell::sync::Lazy` (#685).
- Use new `SendError` instead of `anyhow::Error` in `cmsisdap` module (#687).

### Fixed

- Fixed `M33` breakpoints (#543).
- Fixed a bug where ST-Link v3 is not able to read 8 bit data chunks with more than 255 bytes. Currently we set the chunking to 128 bytes. This might be a bug in the ST-Link v3 firmware and might change in the future (#553, #609).
- Errors occuring while trying to open J-Link probes do not prevent other probes from working anymore (#401).
- CMSIS-DAPv1 probes with a HID report size different than 64 bytes are now supported (fixes #282).
- CMSIS-DAPv2 devices are now drained when attaching (fixes #424).
- Improved SWO speed on CMSIS-DAPv2 (fix #448).
- Session auto attach does no longer panic when no probes are connected (#442).
- probe-rs-cli: Halt core before printing backtrace (#447).
- gdb-server: Ensure registers are only read when core is halted (#455).
- Fixed loading Hex files using the flash loader (#472).
- Fixed off-by-one errors when flashing chip with contiguous memory ranges (#574).
- Ensure only ELF segments with type `PT_LOAD` are flashed (#582).
- Fixed overflow in hex file loading, and ensure addresses are calculated correctly (#604).
- RISC-V: Fixed scanning for harts (#610).
- RISC-V: Fixed abstract command handling (#611).
- Fixed a bus congestion issue where the chip is polled too often, leading to problems while flashing (#613).
- The breakpoint address is now verified to ensure a breakpoint at the given address is actually possible (#626).
- RISC-V: Use correct address for access to `abstractauto`register (#511).
- The `--chip` argument now works without specifying the `--elf` argument (fix #517).
- Fixed: Invalid "Unable to set hardware breakpoint", by removing breakpoint caching, instead querying core directly (#632)
- Fix crash on unknown AP class. (#662).
- Fix too many chip erases in chips with multiple NvmRegions. (#670).
- Added missing `skip_erase` setter function introduced in #677 (#679).
- Fixed incorrect array size calculation (#683)
- STLink: Removed unnecessary SELECT bank switching (#692)
- STLink: chunk writes in `write_8` to avoid hitting limit (#697)
- Partial fix for a bug where `probe-rs-debugger` does not set breakpoints when the target is in _sleep_ mode (#703)

## [0.10.1]

### Fixed

- Replace calls to `unwrap()` in adi_v5_memory_interface.rs with proper error types (#440).
- Correct URL for Sentry logging in probe-rs-cli-util (#439).

## [0.10.0]

### Added

- Added support for the dedicated ST-Link API which doubles flash write speeds for ST-Link v2 (#369, #377, #397, #435).
- Added support for the STM32WLE.
- Added support for the ATSAMD21 & ATSAMD51.
- Added support for the STM32L1.
- Added support for the EFM32PG12.
- Added support for the MAX32665 & MAX32666.
- Building probe-rs now works without rustfmt being present too (#423).
- Added support for implicit ebreak in RISC-V chips (#423, #430).

### Changed

- nRF devices now use the `SoftDevice Erase` algorithm for flashing which will also erase the flash if it contains the softdevice. The previous algorithm prevented users from flashing at all if a softdevice was present (#365, #366).
- The names of probe interface methods were named more consistently (#375).
- FTDI support is now opt in. Please use the `ftdi` feature for support (#378).

### Fixed

- ST-Links now retry the command if a wait was returned in during the SWD transmission (#370).
- Fixed a bug where CMSIS-DAP would not be able to open a probe with a specific VID/PID but no SN specified (#387).
- Fixed a bug where a CMSIS-DAP probe could not be opened if an USB descriptor did not contain any language. This was dominant on macOS (#389).
- Fixed support for the nRF91 (#403).
- Fixed a bug on Windows where paths were not canonicalized properly (#416).
- Fixed a bug where a target fault during AP scans would not be cleared and result in failure on some cores even tho there was no actual issue other than the scan being aborted due to an AP not being present (which is perfectly okay) (#419).
- Use the correct bit mask for the breakpoint comperator on Cortex-M0(+) devices (#434).
- Fixed a bug where breakpoints on M0 would always match the full word even if half word would have been correct (#368).

### Known issues

- Flashing on some chips (known are SAMDx and rare STM32s) with the JLink or CMSIS-DAP probes can be slow. If you see an error involving th DRW or CSW registers, please try using a speed of 100kHz and file a report in #433.

## [0.9.0]

### Added

- Added initial support for FTDI based probes.
- Added support for the STM32L5 family.
- Added support for the STM32G4 family.
- Added support for ITM tracing over SWO in general and drivers for all probes.
- The status LED on CMSIS-DAP probes is now used by probe-rs.

### Changed

- Renamed `ProgressEvent::StartFlashing` to `ProgressEvent::StartProgramming` and `ProgressEvent::PageFlashed` to `ProgressEvent::PageProgrammed` to make naming of events more consistent.

### Fixed

- Fixed a bug where a J-Link would only be opened if the VID, PID AND Serial No. would match. As the Serial is optional, only VID/PID have to match now.
- Fixed a bug with the readout of the serial string that could fail for DAP devices and lead to weird behavior.
- Fixed a bug where the serial number was not printed correctly for some ST-Links.

## [0.8.0]

### Added

- Added support for new devices in the nRF52 family - nRF52805, nRF52820 and nRF52833.
- Added support for the STM32F7 family.
- The `Session` struct and dependants now implement `Debug`.
- The J-Link driver now logs a warning if no proper target voltage is measured.
- The J-Link driver now logs some more information about the connected probe on the `INFO` and `DEBUG` levels.

### Changed

- Improved error handling by a great deal. Errors now can be unwound properly and thus displayed nicely in UI tooling.
- `Core::halt()` now requires a timeout to be specified. This ensures that procedures such as flashing wont time out when certain tasks (like erasing a sector) take longer.

### Fixed

- Fixed a bug where a probe-selector would not work for the JLink if only VID & PID were specified but no serial number.
- Fixed a bug where chip descriptions would fail to parse because of a changed behavior in a newer version of serde_yaml.
- Fixed the LPC55S66 and LPS55S69 targets.
- CMSIS-DAPv1 read operations now properly time out instead of blocking forever, thus giving the user proper feedback.
- Even if an ST-Link cannot be opened (for example on Windows due to a missing driver) it will now be listed properly, just without a serial number.
- Fixed a bug where the J-Link would not be selected properly if no serial number was provided in the selector even if there was a VID:PID pair that matched.

## [0.7.1]

### Changed

- `DebugProbeType` is now public.
- Update LPC55S66/LPC55S69 targets.

### Fixed

- Add missing core value for LPC55S66 and LPC55S69.

## [0.7.0]

### Added

- Added support for RISC-V flashloaders! An example how to write one can be found here: https://github.com/Tiwalun/hifive-flashloader.
- Added support for LLDB (works better than GDB in most cases; try it!).
- Added support for specifying a probe via VID, PID and serial number.

### Changed

- The probe-rs API was changed that no internal `Rc<RefCell<T>>`s are present anymore to enable multithreading and make the API cleaner (see https://github.com/probe-rs/probe-rs/pull/240 for the changes).
- Cleaned up the gernal GDB server code.
- Make some parts of the API public such that custom APs can be implemented and used for ARM targets (see https://github.com/probe-rs/probe-rs/pull/249, https://github.com/probe-rs/probe-rs/pull/253)
- Removed a great deal of (non-panicking) unwraps inside the code.
- Improved erroring by a great deal. Removed error stacking and started using anyhow for upper-level errors. This allows for nicer error printing!

### Fixed

- Fixed a bug where an empty DAP-Link batch would just crash without a proper error message.
- Fixed a check where the serial number of the stlink which would be supported at a minimum was too low (off by one).
- Fixed the broken vCont & memory-map commands in the GDB stub.
- Fixed deserialization of flash algorithm descriptions which enables to load target descriptions during runtime.
- Fixed an issue where the error message would say that more than one probe was found when no probe was detected at all.
- Fixed a bug in the gdb-server that causes it to never halt after a continue.
- Fixed an issue where the gdb-server would always use 100 % cpu time of the core it's running on.

## [0.6.2]

### Added

- `WireProtocol` now implements `Serialize`.

### Fixed

- The GDB stub will no longer crash when GDB tries to access invalid memory.

### Known issues

- Some ST M3s such as the STM32F103 are known to have reset issues. See [#216](https://github.com/probe-rs/probe-rs/pull/216).

## [0.6.1]

### Added

- Support for the STM32F3 family was added.
- Added support for most Holtek ARM chips.
- Added support for the STM32H7 and M7 cores.

### Changed

- DAPlink implementation now batches `read_register` and `write_register`
  commands, executing the entire batch when either the batch is full or a
  `read_register` is requested, returning the read result or an error which
  may indicate an error with a batched command. As a consequence,
  `write_register` calls may return `Ok(())` even if they have not been
  submitted to the probe yet, but any read will immediately execute the batch.
  Operations such as device flashing see around 350% speedup.
- Improved error handling for STLinks that have an older firmware which doesn't support multiple APs.
- The flash layout reporting struct is less verbose now.

### Fixed

- Fix a bug in the CLI where it would always be unable to attach to the probe.

### Known issues

- Some ST M3s such as the STM32F103 are known to have reset issues. See [#216](https://github.com/probe-rs/probe-rs/pull/216).

## [0.6.0]

### Added

- Flashing support for the STM32L4 series.
- Added the possibility to set the speed on DebugProbes and also implemented it for all three supported probes (CMSIS-DAP, ST-Link and J-Link).
- Make M3 cores selectable from built in targets.
- Make the filling of erased flash sectors with old contents possible. When flashing, the minimal erase unit is a sector. If the written contents do not span a sector, we would erase portions of the flash which are not written afterwards. Sometimes that is undesired and one wants to only replace relevant parts of the flash. Now the user can select whether they want to restore unwritten but erased parts to the previous contents. The flash builder now automatically reads to be erased and not written contents beforehand and adds them to the to be written contents.
- Added a flash visualizer which can generate an SVG of the layouted flash contents.

### Changed

- Improved error handling for the flash download module.
- Improved error messages for ARM register operations.
- The `flash` module has been renamed to `flashing`.
- Downloading a file now has the possibility to add options instead of multiple parameters to clean up the interface.
- `read8`/`write8` implement true 8-bit accesses if they are supported by target.
- Improved build times by changing code generation for targets. For more details, see [PR #191](https://github.com/probe-rs/probe-rs/pull/191).
- Improved logging for ELF loading. If there was no loadable sections before, nothing would happen. Now it is properly reported, that there was no loadable sections.

### Fixed

- Fix the usage of ST-Link V3.
- Removed an unwrap that could actually crash.
- Fixed a bug where reading a chip definition from a YAML file would always fail because parsing a `ChipFamily` from YAML was broken.
- Fixed a bug in the ST-Link support, where some writes were not completed. This lead to problems when flashing a device, as the
  final reset request was not properly executed.
- Refactored 8-bit memory access in ADIMemoryInterface, fixing some edge case crashes in the process. Also rewrote all tests to be more thorough.
- Fixed 8/16-bit memory access processing in `MockMemoryAP`.
- Protocol selection for JLink now will properly honor the actual capabilities of the JLink instead of crashing if the capability was missing.
- Fix an issue where probes would double attach to a target, potentially leading to issues.

## [0.5.1]

### Fixed

- Fix a bug where M3 targets would not be able to load the core.

## [0.5.0]

### Added

- Flashing support for the STM32G0 series.
- Flashing support for the STM32F0 series.
- Flashing support for the STM32WB55 series.
- Support for RISC-V debugging using a Jlink debug probe.
- Support for SWD debugging using a Jlink debug probe.

### Changed

- The entire API was overhauled. The Probe, Session and Core structs have different interaction and APIs now.
  Please have a look at the docs and examples to get an idea of the new interface.
  The new API supports multiple architectures and makes the initialization process until the point where you can talk to a core easier.
  The core methods don't need a passed probe anymore. Instead it stores an Rc to the Session object internally. The Probe object is taken by the Session which then can attach to multiple cores.
  The modules have been cleaned up. Some heavily nested hierarchy has been flattened.
- More consistent and clean naming and reporting of errors in the stlink and daplink modules. Also the errorhandling for the probe has been improved.

### Fixed

- Various fixes

### Known issues

- Some chips do not reset automatically after flashing
- The STM32L0 cores have issues with flashing.

## [0.4.0]

### Added

- A basic GDB server was added \o/ You can either use the provided `gdb-server` binary or use `cargo flash --gdb` to first flash the target and then open a GDB session. There is many more new options which you can list with `cargo flash --help`.
- Support for multiple breakpoints was added. Breakpoints can now conveniently be set and unset. probe-rs checks for you that there is a free breakpoint and complains if not.
- A flag to disable progressbars was added. Error reporting was broken because of progressbar overdraw. Now one can disable progress bars to see errors. In the long run this has to be fixed.
- Added an improved way to create a `Probe`.
- Added an older USB PID to have probe-rs detect older STLinks with updated Firmware.
- Added support for flashing with different sector properties. This fixed broken flashing on the STM M4s.

### Changed

- Code generation for built in targets was split off into a separate crate so probe-rs can be built without built in targets if one doesn't want them.

### Fixed

- Fixed setting and clearing breakpoints on M4 cores.

## [0.3.0]

Improved flashing for `cargo-flash` considering speed and useability.

### Added

- Increased the raw flashing speed by factor 10 and the actual flashing speed for small programs by factor 5. This is done using batched CMSIS-DAP transfers.
- Added CMSIS-Pack powered flashing. This feature essentially enables to flash any ARM core which can also be flashed by ARM Keil.
- Added progress bars for flash progress indication.
- Added `nrf-recover` feature that unlocks nRF52 chips through Nordic's custom `AP`

### Changed

- Improved target autodetection with better error distinction.
- Improved messaging overall.

### Fixed

- Various bugfixes
- Binaries bigger than a sector can now be flashed.

## [0.2.0]

Initial release on crates.io

- Added parsing of yaml (or anything else) config files for flash algorithm definitions, such that arbitrary chips can be added.
- Modularized code to allow other cores than M0 and be able to dynamically load chip definitions.
- Added target autodetection.
- Added M4 targets.
- Working basic flash downloader with nRF51.
- Introduce cargo-flash which can automatically build & flash the target elf file.

[unreleased]: https://github.com/probe-rs/probe-rs/compare/v0.31.0...master
[0.31.0]: https://github.com/probe-rs/probe-rs/compare/v0.30.0...v0.31.0
[0.30.0]: https://github.com/probe-rs/probe-rs/compare/v0.29.0...v0.30.0
[0.29.0]: https://github.com/probe-rs/probe-rs/compare/v0.28.0...v0.29.0
[0.28.0]: https://github.com/probe-rs/probe-rs/compare/v0.27.0...v0.28.0
[0.27.0]: https://github.com/probe-rs/probe-rs/compare/v0.26.0...v0.27.0
[0.26.0]: https://github.com/probe-rs/probe-rs/compare/v0.25.0...v0.26.0
[0.25.0]: https://github.com/probe-rs/probe-rs/compare/v0.24.0...v0.25.0
[0.24.0]: https://github.com/probe-rs/probe-rs/compare/v0.23.0...v0.24.0
[0.23.0]: https://github.com/probe-rs/probe-rs/compare/v0.22.0...v0.23.0
[0.22.0]: https://github.com/probe-rs/probe-rs/compare/v0.21.1...v0.22.0
[0.21.1]: https://github.com/probe-rs/probe-rs/compare/v0.21.0...v0.21.1
[0.21.0]: https://github.com/probe-rs/probe-rs/compare/v0.20.0...v0.21.0
[0.20.0]: https://github.com/probe-rs/probe-rs/compare/v0.19.0...v0.20.0
[0.19.0]: https://github.com/probe-rs/probe-rs/compare/v0.18.0...v0.19.0
[0.18.0]: https://github.com/probe-rs/probe-rs/compare/v0.17.0...v0.18.0
[0.17.0]: https://github.com/probe-rs/probe-rs/compare/v0.16.0...v0.17.0
[0.16.0]: https://github.com/probe-rs/probe-rs/compare/v0.15.0...v0.16.0
[0.15.0]: https://github.com/probe-rs/probe-rs/compare/v0.14.2...v0.15.0
[0.14.2]: https://github.com/probe-rs/probe-rs/compare/v0.14.1...v0.14.2
[0.14.1]: https://github.com/probe-rs/probe-rs/compare/v0.14.0...v0.14.1
[0.14.0]: https://github.com/probe-rs/probe-rs/compare/v0.13.0...v0.14.0
[0.13.0]: https://github.com/probe-rs/probe-rs/compare/v0.12.0...v0.13.0
[0.12.0]: https://github.com/probe-rs/probe-rs/compare/v0.11.0...v0.12.0
[0.11.0]: https://github.com/probe-rs/probe-rs/compare/v0.10.1...v0.11.0
[0.10.1]: https://github.com/probe-rs/probe-rs/compare/v0.10.0...v0.10.1
[0.10.0]: https://github.com/probe-rs/probe-rs/compare/v0.9.0...v0.10.0
[0.9.0]: https://github.com/probe-rs/probe-rs/compare/v0.8.0...v0.9.0
[0.8.0]: https://github.com/probe-rs/probe-rs/compare/v0.7.1...v0.8.0
[0.7.1]: https://github.com/probe-rs/probe-rs/compare/v0.7.0...v0.7.1
[0.7.0]: https://github.com/probe-rs/probe-rs/compare/v0.6.2...v0.7.0
[0.6.2]: https://github.com/probe-rs/probe-rs/compare/v0.6.1...v0.6.2
[0.6.1]: https://github.com/probe-rs/probe-rs/compare/v0.6.0...v0.6.1
[0.6.0]: https://github.com/probe-rs/probe-rs/compare/v0.5.1...v0.6.0
[0.5.1]: https://github.com/probe-rs/probe-rs/compare/v0.5.0...v0.5.1
[0.5.0]: https://github.com/probe-rs/probe-rs/compare/v0.4.0...v0.5.0
[0.4.0]: https://github.com/probe-rs/probe-rs/compare/v0.3.0...v0.4.0
[0.3.0]: https://github.com/probe-rs/probe-rs/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/probe-rs/probe-rs/releases/tag/v0.2.0
