-
Release Candidate V2.1.0-rc1 Pre-release
esden released this
2026年07月09日 04:17:48 +02:00 | 0 commits to main since this releaseWe are happy to announce the first v2.1.0 release candidate of Black Magic Debug.
Here are some of the highlights:
- Support for RISC-V semihosting and memory access using the program buffer
- Non-halting I/O for RTT on various targets (see Core Changes for details)
- Support for exposing the on-board Flash of the BMPv2.3+ as a target
- Support in BMDA for talking with WCH-Link's to work with WCH RISC-V parts
- And a bunch of newly supported targets:
- ST Micro STM32H523/H533
- NXP MCX N947
- Microchip PIC32CM MC
- Puya PY32F071
- ST Micro STM32U0
- ST Micro STM32C05/C07/C09
- Gigadevice GD32VW553
- ST Micro STM32U5
- Lattice ECP5
- ST Micro STM32H7R/H7S
- ST Micro STM32C5
- ST Micro STM32U3
- AteryTek AT32F455/F456/F457
- Lattice ispCLOCK
For more details please refer to the ChangeLog down below.
If you have any questions/suggestions regarding this release we welcome your feedback on our
Discord
server or in our project discussions.We now also have an IRC server. We recommend the use of an IRCv3 capable client for the best experience.
How to update
Follow the instructions found on our
website for update instructions.ChangeLog v2.0.0-rc1
Core Changes
- Added debug logging to the Target Flash layer for operation perparation to aid debugging [ALTracer]
- Improved the logging in the CRC32 implementations to create less fragmented diagnostic output [ALTracer]
- Implemented a new monitor command to scan for SPI Flash on the probe itself to present up the on-board storage to the user as a target [dragonmux]
- Cleaned up a lot of nomenclature across the code base, concluding cleanup that's been ongoing since v1.8 [dragonmux]
- Implemented support for TI's ICEPick block as found on the AM335x and TMS570 parts [dragonmux]
- Fixed some improper format strings in the ICEPick support [xobs]
- More firmly documented the no-"AI" (LLMs) policy with a
README.mdbadge [esden] - Fixed an issue with JTAG scan where the presumption that the
BYPASSregisters in the chain would be preloaded with 0 does not actually hold on some devices [ALTracer] - Made use of the GDB packet buffer for memory packets instead of
alloca()'ing (a form of VLA) [ALTracer] - Updated the first big tranch of links from GitHub to Codeberg following the repo move [gojimmypi]
- Cleaned up some style issues in the Cortex-M architecture support and GDB state machine [dragonmux]
- Improved the XML generation for target memory maps so it doesn't require a huge buffer to be allocated [dragonmux]
- Refined the target memory map XML generation to fix a bug the rewrite accidentally introduced [dragonmux]
- Fixed some
clang-tidytype conversions lints and lost allocations warnings [dragonmux] - Fixed a hang in the remote protocol when the JTAG run cycles command is invokes with 0 cycles to do [dragonmux]
- Cleaned up and improved how BMD RSP packets are handled in the firmware and passed about [dragonmux]
- Re-enabled non-halting I/O for RTT on a suite of targets [ALTracer]
- AT32F40
- AT32F425
- AT32F43
- GD32F1
- GD32F3
- GD32E5
- nRF52
- nRF54L
- STM32F0
- STM32F1
- STM32F3
- STM32F4
- STM32G0
- STM32G47
- Updated the project README CI badge to point at Codeberg (Woodpecker) CI instead of GHA [esden]
- Ensure TDI is driven high before switching to SWD mode to prevent issues with STM32MP15 parts [ALTracer]
- Ensure JTAG state is properly tracked through resets even on parts where nRST triggers nTRST (wrongly) [ALTracer]
- Fixed an issue with the ADI JTAG ensure-idle behaviour that could land targets in invalid states [dragonmux]
- Made sure platform-agnostically that nRST pulses have a minimum duration [ALTracer]
- Implemented the ability for a JTAG device entry to be specified where the exact IR value should be ignored on scan [lethalbit]
- Reworked the
monitor rttcommand for easier understanding and use, fixing a crash caused by aNULLpointer [dragonmux] - Fixed an issue with the ADI JTAG ensure-idle system which would induce a
NULLpointer crash when not talking JTAG [ALTracer] - Implemented a sub-command for
monitor rttfor manually triggering block discovery [mdrssv] - Switched the no-AI policy from a custom one to Zig's in the Code of Conduct (CoC) [esden]
- Updated badges and release links in the project README [esden]
- Fixed the missing abuse reporting contact information in the project CoC [esden]
- Fixed an issue with the size of the breakwatch structure caused by a definition not getting properly set right [ALTracer]
- Fixed an issue where a remote protocol JTAG scan follwed by a SWD scan using ADI would put the firmware remote protocol in a bad state [dragonmux]
- Fixed some straggling target and timing implementation nomenclature issues, and some missing
staticon target's command lists [dragonmux]
Build System Changes
- Fixed the warnings for
-Wstrict-prototypesand-Wnewline-eof, properly enabling them in the build system [perigoso] - Fixed the way the Flash stub hex files were being generated so as to not include the ELF headers incorrectly [dsdve]
- Tweaked the set of default-enabled targets for the Blue Pill, F072, BMPv1/2 and swlink platforms to make the firmware fit again [dragonmux]
Script/Utility Changes
- Updated the Nix shell config and clangd ignores [UtkarshVerma]
Project CI Changes
- Fixed some
lintpass issues and upgraded the tooling we build and test against [dragonmux] - Upgraded the compiler from GCC 14.2 to 14.3 to fix for some upstream (ARM) changes that were made [esden]
- Fixed a pile of CI issues with the build-and-upload flow and Clang tooling used to re-modernise the flow [dragonmux]
- Done a further round of updates and upgrades of the workflows to use the currently supported set of builder OSes, and tooling [dragonmux]
- Moved the core part of CI over from GitHub Actions to Codeberg's Woodpecker CI instance [dragonmux]
- Fixed the
lintpass so it works properly again on Codeberg's Woodpecker CI [dragonmux]
ARM (ADIv5 and ADIv6) Changes
- ARM Debug: Implemented support for the ARMv8-M secure fault exception in the
vector_catchmonitor command [zyp] - ARM Debug: Implemented basic ARMv8-A architecture support for AArch64 [marysaka]
- ARM Debug: Fixed a couple of format string errors in the ARMv8-A support [xobs]
- ARM Debug: Improved fault exception handling for ARMv8-M using the ICSR register [mean00]
- ARM Debug: Added polling w/ timeout to the Cortex-M halt logic to pick up on targets that take a moment to actually halt [mdrssv]
- ARM Debug: Implemented a limited retry for reading the TARGETID DP register on DPv2+ parts [mdrssv]
- ARM Debug: Use the
TARGETdebug level to report breakpoint/watchpoints discovered on Cortex-M [ALTracer] - ARM Debug: Catch and handle the potential execption from AIRCR-induced reset [ALTracer]
- ARM Debug: Properly guard the DP prep functions for targets that aren't enabled in the build system [hrm]
RISC-V Debug Changes
- RISC-V Debug: Ensure the trigger registers (breakpoints, watchpoints) are cleared during attach/detach [ALTracer]
- RISC-V Debug: Ensure the triggers are only touched after having halted the core [ALTracer]
- RISC-V Debug: Implemented basic semihosting support (32- and 64-bit!) [ALTracer]
- RISC-V Debug: Fixed the register mappings for the FPU CSRs between the CSR address space and GDB [ALTracer]
- RISC-V Debug: Implementing using the DM program buffer for memory access when no other methods are available [ALTracer]
- RISC-V Debug: Fixed an issue with DMI idle cycles handling that could lead to an infinite loop [ALTracer]
- RISC-V Debug: Fix an issue with hart flags not getting preserved properly when using SysBus [ALTracer]
- RISC-V Debug: Fixed a one-past-the-end stack buffer overflow for 128-bit CSR access [mTOTm]
- RISC-V Debug: Fixed the RISC-V remote protocol accelerations not getting enabled when this support is [dragonmux]
Target Changes
- puya: Cleaned up and de-duplicated setup code in the support [ALTracer]
- lpc/renesas_ra/stm32h7: Cleaned up and deduplicated some of the debug logging to improve Flash usage [ALTracer]
- samx5x: Corrected how boot locking works, making making the number of blocks configurable in the monitor commands [UtkarshVerma]
- sam3x/sam4s/samx7x: Fixed the implementation of Flash support for these parts, modernising the implementation [dragonmux]
- lpc546xx: Fixed the display of the part number in the debug logs so it's in hex, not decimal [ALTracer]
- lpc: Overhaulled the support and code style, fixing a whole heap of issues along the way [dragonmux]
- msp432p4: Cleaned up and removed the last VLA usage in this target's support [ALTracer]
- ch32f1: Fixed a bug in the Flash routines that would lead to
loadin GDB hanging [lasutek] - mspm0: Implemented a Flash stub to speed things up, and handled some of the newer parts [hardesk]
- gd32vw553: Fixed the memory map as discovery is not really possible on this part [ALTracer]
- onboard_flash: Detect other SPI Flash chips than just Winbond, allowing a wider variety to work on non-native platforms [ALTracer]
- stm32mp15: Implemented handling for SWO setup and the management AP on these parts [ALTracer]
- stm32mp15: Fixed several memory management issues to fix some crashes [ALTracer]
- stm32mp15: Fixed part identification for post-Linux-boot on the Cortex-A7 cores [ALTracer]
- lattice_ecp5: Implemented basic support for SRAM programming [lethalbit]
- lattice_ecp5: Fixed an issue where the FPGA wouldn't be properly reset on exit from attach [lethalbit]
- stm32c5: Fixed the naming of the bank size macros [emeb]
- lattice_ecp5: Tweaked the SPI passthrough mode support to allow it to work with multi-device chains [lethalbit]
- lattice_ecp5: Fixed an issue with SPI passthrough mode post-DR-scan which would cause multi-device chains to not work [lethalbit]
- at32f40: Properly detect RDP-locked parts so they can be unlocked [ALTracer]
Targets Added
- ST Micro STM32H523/H533 [ALTracer]
- NXP MCX N947 [wiboticalex]
- Microchip PIC32CM MC [kinsamanka]
- Puya PY32F071 [Badokas]
- ST Micro STM32U0 [mickael868]
- ST Micro STM32C05/C07/C09 [desertsagebrush]
- Gigadevice GD32VW553 [ALTracer]
- ST Micro STM32U5 [dragonmux]
- Lattice ECP5 [lethalbit]
- ST Micro STM32H7R/H7S [emeb]
- ST Micro STM32C5 [emeb]
- ST Micro STM32U3 [emeb]
- AteryTek AT32F455/F456/F457 [ALTracer]
- Lattice ispCLOCK [dragonmux/lethalbit]
Host Platform Changes
- Renamed
nativetobmp-v2and added a series of mirror build configuration files forbmp-v1[northernpaws]
Added
- Base support for BMPv3 [dragonmux]
- Support using STM32F401CD-based Black Pill's as a platform [lasutek]
Common
- Fixed some UB triggered by how
usb_configwas declared and used which was breaking LTO builds [hrm]
STM32
- Cleaned up the DfuSe interface strings, removing excess spaces, shrinking the bootloader a bit in size [dragonmux]
Black Magic Probe v1/2 host
Black Magic Probe v3 host
- Implemented support for platform monitor command based TX/RX swapping of the BMDU UART [dragonmux]
- Fixed an issue with automatic UART switching that would result on a DMA crash [dragonmux]
- Fixed an issue with the power controls which would cause tpwr state to be reported backwards [dragonmux]
ctxLink host
ST-Link v2/v2.1 host
- Documented the ST native bootloader behviour to match a patch to
stlink-tool[freeman1216] - Fix ST-Link v2-ISOL's not properly re-enumating on USB on reboot [hrm]
ST-Link v3 host
- Fixed the load address for the OEM bootloader and how the BMD bootloader is used/works [UtkarshVerma]
Black Pill v2 host (now blackpill-f401cc, blackpill-f401ce and blackpill-f411ce, aka "The Black Pill hosts")
Black Magic Debug App (aka "PC Host")
- Ensure all platform inline functions are also marked
static[zyp] - Implemented support for the WCH Link as a protocol backend to talk to WCH RISC-V parts [perigoso]
- Implemented support for driving nTRST high as part of link bringup for the CMSIS-DAP backend [xobs]
- Implemented support for the JTAG run cycles command in the FTDI backend for better performance and to fix a crash [ALTracer]
- Implemented support for the JTAG run cycles command in the J-Link backend for better performance and to fix a crash [ALTracer]
- Fixed the support for the Olimex FT2232C/H FTDI-based adaptors [ALTracer]
- Fixed the way BMDA drives using the Windows registry to locate probes so it works correctly on W11 [dragonmux]
- Implemented support for the FTDI backend to use ECP5-5G Versa boards as an adaptor [dragonmux]
- Fixed a buffer sizing alignment issue in the BMD remote protocol v4 implementation for a large speed-up [ALTracer]
- Fixed a bunch of BMD remote protocol implementation mistakes found while implementing the protocol in
bmputil[dragonmux]
Contributors to v2.1.0-rc1
We have had 25 individuals contribute 649 commits since the v2.0.0 release.
Contributor (Contributions)
dragonmux (406)
ALTracer (104)
Aki Van Ness (38)
Eric Brombaugh (19)
perigoso (18)
Mary Guillemard (12)
Piotr Esden-Tempski (7)
Sean Cross (6)
Utkarsh Verma (5)
Mindaugas (5)
Marvin Drescher (4)
Hristo Mitrev (4)
hardesk (4)
Alex Huttunen (3)
Vegard Storheil Eriksen (2)
Lars Sundström (2)
Kat (2)
zhangjiance (1)
Sage Myers (1)
Mickael Bosch (1)
mean00 (1)
GP Orcullo (1)
gojimmypi (1)
fufixman (1)
dsdve (1)Sponsors
This project is sponsored in parts by:
- 1BitSquared - Design, Manufacture and distribution of open source
embedded hardware development tools and platforms, as well as educational electronics. Thank you
everyone who buys Black Magic Probes from 1BitSquared directly through our
stores or indirectly through
Adafruit. The hardware sales allow us to continue
supporting the Black Magic Debug project. - All the generous Patrons and
GitHub Sponsors supporting esden’s work - All the generous GitHub Sponsors supporting dragonmux’s work
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
blackmagic-bmp_v1-riscv-v2_1_0-rc1.md
1 download ·
2026年07月09日 05:14:36 +02:00 · 1.4 KiB -
blackmagic-bmp_v1-st-clones-v2_1_0-rc1.md
1 download ·
2026年07月09日 05:14:36 +02:00 · 1.9 KiB -
blackmagic-bmp_v1-uncommon-v2_1_0-rc1.md
0 downloads ·
2026年07月09日 05:14:37 +02:00 · 1.6 KiB -
blackmagic-bmp_v1-v2_1_0-rc1.md
0 downloads ·
2026年07月09日 05:14:37 +02:00 · 2.1 KiB -
blackmagic-bmp_v2-riscv-v2_1_0-rc1.md
1 download ·
2026年07月09日 05:14:38 +02:00 · 1.4 KiB -
blackmagic-bmp_v2-st-clones-v2_1_0-rc1.md
0 downloads ·
2026年07月09日 05:14:38 +02:00 · 1.9 KiB -
blackmagic-bmp_v2-uncommon-v2_1_0-rc1.md
0 downloads ·
2026年07月09日 05:14:38 +02:00 · 1.6 KiB -
blackmagic-bmp_v2-v2_1_0-rc1.md
0 downloads ·
2026年07月09日 05:14:38 +02:00 · 2.1 KiB -
blackmagic-bmp_v3-v2_1_0-rc1.md
1 download ·
2026年07月09日 05:20:51 +02:00 · 3.1 KiB -
blackmagic-bmp-v1-riscv-v2_1_0-rc1.bin
0 downloads ·
2026年07月09日 04:57:21 +02:00 · 80 KiB -
blackmagic-bmp-v1-riscv-v2_1_0-rc1.elf
0 downloads ·
2026年07月09日 04:57:22 +02:00 · 852 KiB -
blackmagic-bmp-v1-riscv-v2_1_0-rc1.hex
0 downloads ·
2026年07月09日 04:57:22 +02:00 · 226 KiB -
blackmagic-bmp-v1-st-clones-v2_1_0-rc1.bin
0 downloads ·
2026年07月09日 04:57:23 +02:00 · 97 KiB -
blackmagic-bmp-v1-st-clones-v2_1_0-rc1.elf
0 downloads ·
2026年07月09日 04:57:23 +02:00 · 998 KiB -
blackmagic-bmp-v1-st-clones-v2_1_0-rc1.hex
0 downloads ·
2026年07月09日 04:57:23 +02:00 · 272 KiB -
blackmagic-bmp-v1-uncommon-v2_1_0-rc1.bin
0 downloads ·
2026年07月09日 04:57:23 +02:00 · 76 KiB -
blackmagic-bmp-v1-uncommon-v2_1_0-rc1.elf
0 downloads ·
2026年07月09日 04:57:24 +02:00 · 827 KiB -
blackmagic-bmp-v1-uncommon-v2_1_0-rc1.hex
0 downloads ·
2026年07月09日 04:57:24 +02:00 · 214 KiB -
blackmagic-bmp-v1-v2_1_0-rc1.bin
0 downloads ·
2026年07月09日 04:57:24 +02:00 · 118 KiB -
blackmagic-bmp-v1-v2_1_0-rc1.elf
0 downloads ·
2026年07月09日 04:57:24 +02:00 · 1.2 MiB -
blackmagic-bmp-v1-v2_1_0-rc1.hex
0 downloads ·
2026年07月09日 04:57:25 +02:00 · 330 KiB -
blackmagic-bmp-v2-riscv-v2_1_0-rc1.bin
0 downloads ·
2026年07月09日 04:23:24 +02:00 · 80 KiB -
blackmagic-bmp-v2-riscv-v2_1_0-rc1.elf
0 downloads ·
2026年07月09日 04:23:24 +02:00 · 852 KiB -
blackmagic-bmp-v2-riscv-v2_1_0-rc1.hex
0 downloads ·
2026年07月09日 04:23:24 +02:00 · 226 KiB -
blackmagic-bmp-v2-st-clones-v2_1_0-rc1.bin
0 downloads ·
2026年07月09日 04:23:24 +02:00 · 97 KiB -
blackmagic-bmp-v2-st-clones-v2_1_0-rc1.elf
0 downloads ·
2026年07月09日 04:23:26 +02:00 · 998 KiB -
blackmagic-bmp-v2-st-clones-v2_1_0-rc1.hex
0 downloads ·
2026年07月09日 04:23:26 +02:00 · 272 KiB -
blackmagic-bmp-v2-uncommon-v2_1_0-rc1.bin
0 downloads ·
2026年07月09日 04:23:26 +02:00 · 76 KiB -
blackmagic-bmp-v2-uncommon-v2_1_0-rc1.elf
0 downloads ·
2026年07月09日 04:23:27 +02:00 · 827 KiB -
blackmagic-bmp-v2-uncommon-v2_1_0-rc1.hex
0 downloads ·
2026年07月09日 04:23:27 +02:00 · 214 KiB -
blackmagic-bmp-v2-v2_1_0-rc1.bin
1 download ·
2026年07月09日 04:23:27 +02:00 · 118 KiB -
blackmagic-bmp-v2-v2_1_0-rc1.elf
0 downloads ·
2026年07月09日 04:23:28 +02:00 · 1.2 MiB -
blackmagic-bmp-v2-v2_1_0-rc1.hex
0 downloads ·
2026年07月09日 04:23:28 +02:00 · 330 KiB -
blackmagic-bmp-v3-v2_1_0-rc1.bin
0 downloads ·
2026年07月09日 04:23:28 +02:00 · 164 KiB -
blackmagic-bmp-v3-v2_1_0-rc1.elf
0 downloads ·
2026年07月09日 04:23:29 +02:00 · 1.6 MiB -
blackmagic-bmp-v3-v2_1_0-rc1.hex
0 downloads ·
2026年07月09日 04:23:29 +02:00 · 462 KiB -
blackmagic-linux-x86_64-v2_1_0-rc1.zip
0 downloads ·
2026年07月09日 04:23:29 +02:00 · 211 KiB -
blackmagic-macos-arm-v2_1_0-rc1.zip
0 downloads ·
2026年07月09日 04:23:30 +02:00 · 190 KiB -
blackmagic-macos-intel-v2_1_0-rc1.zip
0 downloads ·
2026年07月09日 04:23:30 +02:00 · 198 KiB -
blackmagic-v2_1_0-rc1.sum
1 download ·
2026年07月09日 04:59:10 +02:00 · 2.4 KiB -
blackmagic-windows-x86_64-v2_1_0-rc1.zip
0 downloads ·
2026年07月09日 04:23:30 +02:00 · 587 KiB
-
Stable Release v2.0.0 Stable
esden released this
2025年07月19日 20:26:44 +02:00 | 651 commits to main since this releaseWe are happy to announce the v2.0.0 release of Black Magic Debug. This is the first major release of the v2 series.
Here are some of the highlights:
- Switched to the Meson build system (the make build system is now officially removed)
- Implemented RISC-V support
- Implemented Cortex-R support
- Implemented ARMv8-M support
- And a bunch of newly supported targets:
- TI TM4C1294KCDT
- Atmel SAMC21
- GigaDevice GD32VF1
- Renesas RZ/A1 A1L, A1LU and A1H
- NXP S32K344
- NXP Kinetis MK20DX256
- ST Micro STM32F410
- WinChipHead CH579
- ST Micro STM32H72/H73
- Puya PY32
- ST Micro STM32H7A/H7B
- GigaDevice GD32F405
- Ambiq Apollo 3
- ST Micro STM32WB0
- RPi Foundation RP2350
- ArteryTek AT32F405/F403/F413/F421/F423
- TI MSPM0
- Nordic Semi nRF54L
For more details please refer to the ChangeLog down below.
If you have any questions/suggestions regarding this release we welcome your feedback on our Discord server or in our project discussions.
How to update
Follow the instructions found on our website for update instructions.
ChangeLog v2.0.0
Core Changes
- Implemented proper IR quirk handling for Xilinx FPGAs [lethalbit]
- Fixed some preprocessor logic issues for when RISC-V Debug is disabled [dragonmux]
- Implemented support for the
vContandqAttachedGDB packets [dragonmux] - Format string fixes in the RTT support [koendv]
- Format string and documentation fixes for
monitor heapinfo[koendv] - Introduced new
DEBUG_*_IS_NOOPmacros to allow better logic to be built around debug output [dragonmux] - Format string fixes across the GDB server and monitor command systems [ALTracer]
- Missing prototypes and macro usage improvements [elagil]
- Fixed some
DEBUG_*()calls with bad format strings [xobs] - Improvements to allow the GDB server to idle more [ALTracer]
- Fixed various typos and spelling mistakes across the code code base [francois-berder]
- Improved the performance of the GDB
qCRCpacket handling [ALTracer] - Fixed an issue with how aliasing works under macOS breaking the build of the CRC32 code [ALTracer]
- Improved the space efficiency and correctness of the 12 character serial number logic [ALTracer]
- Format string fixes and clean up [dragonmux]
- Reorganised the semihosting support out from the Cortex-M support [dragonmux]
- Refactored the semihosting implementation and fixed some implementation errors [dragonmux]
- Fixed an issue with alias handling on macOS [amyspark]
- Warnings and nomenclature fixes across the code base [dragonmux]
- Fixed the Clang fall-through warnings as the compiler doesn't understand the magic comment used before [dragonmux]
- Laid the groundwork for supporting the AM335x family parts from TI [dragonmux]
- Fixed some issues with the handling of GDB's single register read/write commands [OmniTechnoMancer]
- Removed all usage of
sscanf()in the firmware to reduce code size and improve speed [OmniTechnoMancer] - Added the specific IR quirk for the Xilinx Artix 7 XC7A200T [LAK132]
- Fixed an error in the remaining length calculation for the
vFlashWriteGDB command handling [OmniTechnoMancer] - Cleaned up from the tooling changes [dragonmux]
- Fixed a timeout mishandling issue that would result in timeouts executing wrongly for a few seconds every 49.7 days of uptime [dragonmux]
- Converted all uses of
sprintf()over tosnprintf()for improved safety and code size [ALTracer] - Fixed a bug where the result of
vasprintf()was ignored in the GDB packet handling, leading to crashes and badness [ALTracer] - Improved handling of faults in the remote protocol so BMDA can properly recover from them [dragonmux]
- Overhaulled the exception system to fix a bug in how exception frames were being handled [dragonmux]
- Fixed a bug in how F-packets are detected during semihosting response processing [OmniTechnoMancer]
- Implemented support for semihosting's
SYS_ELAPSEDandSYS_TICKFREQcalls [ALTracer] - Fixed a crash from in
target_list_free()caused by improper exception handling within the function [dragonmux] - Fixed a
NULLpointer dereference in the target voltage handling and made the implementations consistent [ALTracer] - Fixed compilation with newlib 4.3.0+ by opting out of the unwinder logic it now pulls in [ALTracer]
- Implemented deinit for the SWO implementation and made the buffer for async mode heap allocated [ALTracer]
- Demarked the platform-specific commands in the
monitor helpoutput [Misaka0x2730] - Fixed the format string warnings for all
tc_printf()usage [HrMitrev] - Fixed several bugs in the Manchester-mode SWO support that had it broken across several platforms [ALTracer]
- Fixed a NULL dereference that was possible in the
vFlashDonehandler when run with no target selected [ALTracer] - Made the SWO command report back the actual baud rate achieved for UART-mode, not just the one requested [ALTracer]
- Reduced duplication by consolidating the GDB packet buffer sizing macros [Misaka0x2730]
- Implemented support for other RTT channels than 0, and improved the documentation of the implementation [xobs]
- Overhauled the SWO implementation, implementing runtime switchable decoder selection [dragonmux]
- Fixed the Git ignore configuration to properly ignore the dependency clones [desertsagebrush]
- Switched the gate macro nomenclature for several things to
CONFIG_<thing>for consistency [dragonmux] - Implemented a proper non-halting memory access marker for targets (
TOPT_NON_HALTING_MEM_IO) to replace the previous heuristic that was broken [dragonmux] - Fixed a crash caused by too short a buffer being passed to a
hexify()call in the remote protocol implementation [xobs] - Fixed several bugs in the RTT implementation and improved some code clarity [xobs]
- Fixed a crash in the
tdi_low_resetmonitor command when run before any JTAG scans have yet been done [dragonmux] - Overhauled the target mass erase system, pulling lots of common logic not the target API layer [perigoso]
- Improved the GDB packet handling system, reducing allocations and improving speed a bit [perigoso]
- Fixed a missing include for
string.hin the GDB packet handler [xobs] - Allow an external buffer to be supplied to the GDB packet handler [xobs]
- Overhauled the main project README [dragonmux]
- Fixed a pile of cast-based conversions warnings [dragonmux]
- Fixed a regression in the GDB server that meant block memory reads would inexplicably fail [ALTracer]
- Fixed an issue in GDB noackmode state handling that would cause a kind of "zombie" state [perigoso]
- Added bootloader build instructions to the project README [9names]
- Fixed a codegen issue in the buffer utilities [dragonmux]
- Updated the version and copyright displays as they had become out of step with the release during the release candidate cycles [dragonmux]
- Fixed an issue with
vCont-based single stepping due to soome missing capabiltiy advertising in response tovCont?packets [dragonmux] - Fixed RTT interfering with being able to interrupt debug and re-halt targets [zyp]
- Added an extension to the v4 remote protocol that advertises the architectures and target families that are supported in a firmware build [dragonmux]
Build System Changes
- Introduced a new build system based on Meson [perigoso/dragonmux]
- Added a build target summary to the Meson build system [dragonmux]
- Improved the
pre-commithook setup forclang-format[amyspark] - Fixed an encoding issue for
pre-commitunder Windows [perigoso] - Fixed a typo in one of the warnings in the Meson build system [lasutek]
- Documented a small hitch with how PowerShell consumes Meson options lines [perigoso]
- Updated the BMDA dependencies
libusbandHIDAPIto address some issues, particularly on M3 devices [dragonmux] - Added a Meson Wrap fallback for the
libftdi1BMDA dependency [dragonmux] - Fixed the build exploding under Meson on macOS due to BMDA dependencies needing a C++ compiler [amyspark]
- Added a guard for the CH579 support to help with Flash size [ALTracer]
- Made the at32f43x support optional in both build systems [ALTracer]
- Updated the targets enabled for larger Flash platforms under Meson [ALTracer]
- Updated the libopencm3 version used to get various fixes upstream has not yet merged [dragonmux]
- Implemented the ability to select the SWO decoder built into the firmware [sidprice]
- Cleaned up the build system a bit, fixing some target family description texts [dragonmux]
- Disable some of the targets by default for the f072, stlink and native probe platforms to get things to fit Flash [esden]
- Removed the Makefile-based build system [esden]
- Implemented better control over the targets that can be enabled and created a suite of profiles for native for what is enabled out the box [dragonmux]
- Updated the contribution guidelines for the project to clarify the stance on LLM/"AI" generated contributions [dragonmux]
- Fixed an issue with support for 64-bit break/watch points [marysaka]
- Globally enable GDB noackmode support by default [perigoso]
- Corrected a spelling mistake in the hold-over root Makefile [esden]
- Added logic for finding and using the new
bmputil-cli(bmputilv1.0.0) [dragonmux]
Script/Utility Changes
- Added nix-direnv integrations [wucke13]
- Removed deprecated tooling [dragonmux]
- Fixed a typo in the ST-Link udev rules [WeissbMa]
- Fixed an error in the
clang-tidyconfiguration which rendered it invalid [OmniTechnoMancer] - Fixed up the udev rules to work with udev >= 247 [dragonmux]
- Updated the
swolistenutility to properly walk the descriptors for the endpoint to use [ALTracer] - Implemented a script for building firmware for all probes under Meson [esden]
Project CI Changes
- Upgraded the
pre-commitcheck for accidental assignment to correct handling of char literals [perigoso] - Added MSVC and macOS jobs for PR builds to help prevent regressions [amyspark]
- Worked around a macOS 14 SDK issue making CI fail [amyspark]
- Various fixes for GCC builds on macOS [amyspark/dragonmux]
- Overhauled the CI configs to use newer OSes, compilers and have more sensible build matrices for better code coverage [dragonmux]
- Made use of
make's-joption in CI for a speed boost [ALTracer] - Fixed CI breaking due to changes in the Ubuntu images used due to Python PEP 668 [dragonmux]
- Fixed the macOS version we used becoming deprecated by upgrading the configs [dragonmux]
- Added the Black Pill platforms back into CI as they got missed [ALTracer]
- Fixed an issue in the build-and-upload flow that results in improper version information being embedded [dragonmux]
- Fixed an issue in the build-and-upload flow which would cause a random one of the native firmware builds to be "the" build for a run [dragonmux]
- Fixed an issue with missing permissions restrictions on the CI flows [dragonmux]
ARM (ADIv5 and ADIv6) Changes
- ARM Debug: De-duplicated the SWD error handling logic across all supported probes [perigoso]
- ARM Debug: Implemented support for discovering and debugging Cortex-R cores [dragonmux]
- ARM Debug: Unified the Cortex-A and Cortex-R handling [dragonmux]
- ARM Debug: Implemented memory I/O diagnostics for Cortex-A/R cores [dragonmux]
- ARM Debug: Extracted and de-duplicated the SWD parity calculation logic, giving it consistency [ALTracer]
- ARM Debug: Used the AP banked registers to speed up Cortex-A/R instruction launches used for register and memory access [dragonmux]
- ARM Debug: Fixed a typo in one of the defines for the Cortex-M support [RoboSchmied]
- ARM Debug: Implemented support for 64-bit APs in preparation for 64-bit Cortex support [dragonmux]
- ARM Debug: Fixed a couple of regressions in the SWD and ADIv5 memory access handling [dragonmux]
- ARM Debug: Fixed an error in the DPIDR revision decoding mask [iysheng]
- ARM Debug: Harmonised all SWD backends on what they return from
seq_in_parityfor consistency [dragonmux] - ARM Debug: Improved the SWD bitbanging to make timing more consistent [tlyu]
- ARM Debug: Fixed a CPSR mapping error for the Cortex-A/R support [litui]
- ARM Debug: Implemented ADIv6 support [dragonmux]
- ARM Debug: Fixed an issue where the Cortex-A/R implementation could cause hangs due to the target not being halted when it should be [litui]
- ARM Debug: Implemented proper support for TrustZone on Cortex-M parts [dragonmux]
- ARM Debug: Allow access to DEMCR outside of the implementation for Cortex-M devices [xobs]
- ARM Debug: Implemented use of the JTAG -> Dormant State sequence to work with targets that need it [mean00]
- ARM Debug: Implemented proper configuration of CSW for APB2 and APB3 [marysaka]
- ARM Debug: Ensure the CPUID register is only read once a Cortex-A/R core is actually powered [marysaka]
- ARM Debug: Implemented parsing of CoreSight ROM tables found on APs [marysaka]
- ARM Debug: Implemented support for ADIv6 JTAG-DPs [dragonmux]
- ARM Debug: Refactored MEM-AP configuration out from
adi_config_ap(), reducing code complexity [HrMitrev] - ARM Debug: Implemented watchpoints support for ARMv8-M parts [mean00]
- ARM Debug: Fixed a typo in the Cortex-A/R error checking routine [marysaka]
- ARM Debug: Make sure the core gets halted in
cortexar_mem_write()same ascortexar_mem_read()[marysaka] - ARM Debug: Performed some structural clean up and fixed some issues around ARMv8-M debug [dragonmux]
- ARM Debug: Fixed a bug in JTAG DP version handling which broke DPv1-2 parts [dragonmux]
- ARM Debug: Make sure we take TrustZone into account for the stack register allocations for Cortex-M parts [mean00]
RISC-V Debug Changes
- RISC-V: Implemented support for JTAG-based RISC-V Debug v0.13 [dragonmux/perigoso/mean00]
- RISC-V: Implemented System Bus memory access support [dragonmux]
- RISC-V: Implemented a
tinforegister read quirk to handle odd targets [dragonmux] - RISC-V: Made sure we stop when we hit
ebreak's when the target's running [mean00] - RISC-V: Implemented support for handling targets implementing single precision float [mean00]
- RISC-V: Implemented JTAG protocol acceleration in the BMD remote protocol [dragonmux]
- RISC-V: Fixed a bug in the single-stepping vs normal execution logic for when to suspend interrupts [mean00]
- RISC-V: Fixed a mistake in the name of the
mscratchCSR [ALTracer] - RISC-V: Formally parse the
misaregister to form the CPU ISA string [perigoso] - RISC-V: Fixed an issue with the formatting of the ISA string [dragonmux]
Target Changes
- at32f435/f437: Implemented Flash support [ALTracer]
- samd: Fixed an error in the device ID masks [koendv]
- stm32mp15: Implemented support for the Cortex-A cores in this part series [dragonmux]
- zynq7000: Re-introduced proper Zynq-7000 support as a discrete target seperate from the Cortex-A support [dragonmux]
- at32f403a/407: Implemented dual Flash bank support [ALTracer]
- lmi: Fixed a missed variable initialisation in the Flash stub [francois-berder]
- stm32h7: Improved the SRAM part of the memory maps [ALTracer]
- stm32f1: Fixed a bug in split-bank erase handling [tlyu]
- gd32f3: Fixed handling of XL-density devices by handling them as dual bank [ALTracer]
- renesas_rz: Fixed a mishap in the Meson BMDA build logic [dragonmux]
- stm32mp15: Implemented a revision reporting monitor command like with other STM32 parts [ALTracer]
- stm32h7: Improved the revision reporting command implementation to be more complete [ALTracer]
- rp2040: Implemented a Flash stub to improve reprogramming throughput [vesim987/dragonmux]
- s32k3xx: Fixed a formatting string mistake [xobs]
- samd/samx5x: Fixed how parts are identified using the target structure instead of extra register reads [dragonmux]
- ke04: Added a missing probe call so these parts are properly identified again [nqbit]
- stm32h7b: Implemented Flash programming support [ALTracer]
- stm32l4: Fixed the Flash size handling and Flash registration for the STM32U5 parts [rob-the-dude]
- imxrt: Simplified one of the debug logging guards using the new
DEBUG_*_IS_NOOPmacros [ALTracer] - stm32: Improved the UID command readout and display with a proper decoder for this data [ALTracer]
- stm32f103: Implemented support for recognising another of the clones [nboehm99]
- stm32f4: Made sure to freeze the WDTs on halt as they were causing problems [dragonmux]
- at32f435/437: Implemented support for the option bytes on these parts [ALTracer]
- stm32: Avoid displaying non-printable characters in the UID decoder [ALTracer]
- stm32g0/c0: Enable the UID decoder for these parts [ALTracer]
- efm32/nrf51/renesas_ra: Unified the UID strings to reduce Flash usage and be more consistent [ALTracer]
- stm32mp15/stm32h74: Fixed a misidentification issue for the M4 cores on these parts due to ROM table issues [ALTracer]
- stm32: Implemented control of the WDTs across all STM32's so they get frozen when the target is halted [dragonmux]
- stm32: Fixed some format string errors for some
DEBUG_TARGET()invocations [xobs] - stm32h7: Formatted the address the DBGMCU IDCODE was read from in hex [xobs]
- stm32h5: Fixed an address error for the DBGMCU and some missing SRAM mappings [ALTracer]
- stm32l4: Fixed an error in the WDT handling in the DBGMCU which resulted in a crash [dragonmux]
- s32k3xx: Removed an assert that is always true for a code size improvement [ALTracer]
- renesas/rz: Implemented auto-detection of the SRAM available on the part [litui]
- at32f43x: Implemented WDT control and sleep management to get parity with the STM32 targets [ALTracer]
- rp2350: Implemented support for the RISC-V half of the part [dragonmux]
- at32f43x: Fixed some typos in the WFI/WDT handling support [ALTracer]
- lpc43xx: Fixed a typo in the part numbering for the LPC433x and LPC435x [via]
- stm32wbxx: Implemented option bytes support [Lars-inspiro]
- stm32l4: Fixed some isues with STM32L4/L5/U5/G4/WL/WB family identification [dragonmux]
- stm32f1: Improved the option bytes support for ArteryTek parts [ALTracer]
- stm32f1: Fixed a couple of format string errors [xobs]
- at32f43x: Cleaned up in the implementation, eliminating some complexity and making use of the STM32 UID handler [ALTracer]
- mspm0: Removed a couple of always-true asserts [ALTracer]
- mspm0: Consistency and code pattern cleanups [dragonmux]
- stm32: Fixed a bug in the attach/detach behaviour caused by how the DBGMCU state was being maintained [dragonmux]
- stm32f0: Corrected the SRAM mappings sizes as they were wrong [ALTracer]
- at32f405: Fixed a Flash mappings size error caused by a units mistake [ALTracer]
- stm32l4: Fixed a couple of discovery bugs leading to miss-detections and improper memory maps [ALTracer]
- stm32wl55: Fixed a bug in discovery and an error recovery issue [dragonmux]
- stm32h5: Fixed a sector calculation bug causing erase to go wrong [dragonmux]
- gd32e5: Treat the JTAG-DP as ADIv5 [ALTracer]
- imxrt: Fix Cortex-M4 core detection for the RT1176 [litui]
- efm32: Fixed discovery of v2 device info pages [mmmspatz]
- samx5x: Fixed an issue with user page access [robots]
- stm32f7: Correct RAM declarations for the part series so the regions are sized properly per-part [ALTracer]
- stm32f4: Correct RAM declarations for the part series so the regions are sized properly per-part [ALTracer]
- stm32f7: Corrected ITCM Flash alias mappings for the part series [ALTracer]
- stm32u5: Fix an issue with the RAM mappings and UID command [ALTracer]
Targets Added
- TI TM4C1294KCDT [desertsagebrush]
- Atmel SAMC21 [koendv]
- GigaDevice GD32VF1 [dragonmux]
- Renesas RZ/A1LU [dragonmux]
- Renesas RZ/A1, RZ/A1H [litui]
- NXP S32K344 [via]
- NXP Kinetis MK20DX256 [vedranMv]
- ST Micro STM32F410 [dragonmux]
- WinChipHead CH579 [ArcaneNibble]
- ST Micro STM32H72/H73 [dragonmux]
- Puya PY32 [ArcaneNibble]
- ST Micro STM32H7A/H7B [ALTracer]
- GigaDevice GD32F405 [dragonmux/klenSA]
- Ambiq Apollo 3 [sidprice/litui]
- ST Micro STM32WB0 [dragonmux]
- RPi Foundation RP2350 [dragonmux]
- ArteryTek AT32F405/F403/F413/F421/F423 [ALTracer]
- TI MSPM0 [hardesk]
- Nordic Semi nRF54L [zyp]
Host Platform Changes
Added
- Support for the USB side of ctxLink [sidprice]
- Support for the WiFi side of ctxLink [sidprice]
Common
- Changed the firmware SRAM layout organisation so heap and stack cannot run into each other silently [dragonmux]
- Reordered endpoint usage so all core features work even on the DWC2 platforms with only 4 usable endpoints [ALTracer]
- Implemented the ability for platforms to have commands specific to them [Misaka0x2730]
- Implemented use of
OVER8for more available baud rates on platforms that support it [ALTracer] - Gated USB-specific definitions behind a check for not
NO_LIBOPENCM3[xobs] - Allow platforms to be dynamically identified, cleaning up the platform identification system [Misaka0x2730]
- Cleaned up in the AUX serial handling and logic to improve code quality and simplify the flow [dragonmux]
- Removed use of librdimon for
DEBUG_*()-enabled builds, saving ~1.2kiB of Flash [tlyu]
STM32
- Fixed some UB bit shifts in some left shift expressions [tlyu]
- Fixed the timeouts used in the F1 DFU bootloader, speeding everything up [ALTracer]
- Further improvements to GDB server idling on the DWC2-based platforms [ALTracer]
- Adapted the async (UART) SWO implementation for use on the F4-based platforms [ALTracer]
- Fixed a USB enumeration bug on F4-based platforms [sidprice]
- Fixed an issue on the Black Pill and ST-Link v3 platforms with slew rates not scaling with frequency selection leading to SI problems in poor setups [ALTracer]
- Handle
DFU_DETACHrequests explicitly in the bootloader [ALTracer]
Black Magic Probe (aka "Native") host
- Improved the USB re-enumeration timings to be more spec compliant to help how controllers like the M3's interact [dragonmux]
- Improved handling of
hwversionfor a speed and Flash usage improvement [dragonmux] - Fixed an issue with the TCK and TMS direction signals and documented them better [emlynkz]
ctxLink host
- Optimized the code for calling the boot ROM a bit [sidprice]
- Fixed a bug with the DMA configuration for the aux serial interface [sidprice]
- Fixed a bug with the target voltage handling which resulted in a crash [sidprice]
- Implemented support for async-mode (UART) SWO [sidprice]
- Switched the platform to use the ROM bootloader exclusively [sidprice]
- Fixed a crash in the voltage reporting logic when reporting battery voltage [sidprice]
- Updated the README to refect build system changes [sidprice]
- Improved the ADC usage to reduce its impacts on WiFi interface speed [sidprice]
- Fixed some variable references that went wrong when
DEBUG_*()is enabled [sidprice] - Switched the WINC1500 into manual power mode for a bit of a performance increase [sidprice]
- Enabled using the platform with
DEBUG_*()being enabled [sidprice] - Fixed some WiFi configuration issues when provisioning over USB [sidprice]
ST-Link v2/v2.1 host
- Implemented support for the ST-Link v2-ISOL dongle variant [HrMitrev]
- Switched mechanisms for generating output on the ST-Link v2-ISOL dongle to improve code size [HrMitrev]
- Fixed a pin conflict between the
SWIM_AS_UARTbuild option and the nRST pin mapping [positron96] - Added a Meson cross-file and probe type for the ST-Link v2-ISOL dongle support [HrMitrev]
ST-Link v3 host
- Fixed the CRC logic for
compare-sections(qCRC) not working on this platform [ALTracer] - Fixed the target serial interface not working on this platform [ALTracer]
- Fixed an issue with the
DEBUG_*()output when enabled on this platform [ALTracer] - Improved the documentation on how to program a dongle with the firmware [robots]
- Implemented support for tristating SWDIO and SWCLK, implementing clock tristating [ALTracer]
Black Pill v2 host (now blackpill-f401cc, blackpill-f401ce and blackpill-f411ce, aka "The Black Pill hosts")
- Added a
SHIELDmacro for defining if you are using your Black Pill with an expansion (shield) board [lenvm] - Turned a couple of magic numbers into proper defines for the user button [lenvm]
- Sped up bus turnarounds, matching how the other platforms perform them [ALTracer]
- Added debug output support for the platform [ALTracer]
- Improved the DFU bootloader for the platform [ALTracer]
- Fixed some issues with the project bootloader on this platform [ALTracer]
- Fixed the platform requiring an extra reset after leaving the boot ROM [ALTracer]
- Switched the platform to use async-mode SWO as Manchester-mode is broken [ALTracer]
- Implemented the ability for the bootloader to report more state when built for use with a carrier board [sidprice]
- Fixed a documentation error in the platform SWO definitions [sidprice]
- Better documented how to build the platform and upgrade the firmware on a probe [ALTracer]
- Added a
swlink-like alternative pinout (alt pinout 2) [ALTracer] - Fixed the build instructions and updated the platform README [sidprice]
- Implemented better control of the nTRST and TCK/SWCLK pin modes [ALTracer]
- Make sure the bootloader LED is only set up once [lenvm]
- Re-introduced the SHIELD selection build option for the Meson build system [lenvm]
- Corrected a mistake in the conditional compilation macro name used for the bootloader LED pin [sidprice]
- Documented the
on_carrier_boardbuild option [sidprice] - Corrected the initialisation and control of the nRST pin [ALTracer]
- Switched the default target clock speed to 2MHz [birkenfeld]
Black Magic Debug App (aka "PC Host")
- Assorted fixes to the J-Link backend [perigoso]
- Fixes for building under MSVC [xobs]
- Fixes for building on FreeBSD [ALTracer]
- Improved the speed of communications to BMPs via proper read buffering [dragonmux]
- Fixed the CMSIS-DAP backend's WAIT/FAULT response data phase handling [dragonmux]
- Fixed the semihosting implementation for BMDA to make the implementation conform to the spec [dragonmux]
- Fixed the CMSIS-DAP backend mishandling the adaptor packet sizing [dragonmux]
- Fixed an issue in the timeouts configuration under Windows leading to slowdowns [dragonmux]
- Implemented full MSVC compatibility [amyspark]
- Fixed the max frequency handling to respect user changes and not be entirely ephemeral [perigoso]
- Fixed a response buffer sizing mistake in the CMSIS-DAP backend [dragonmux]
- Implemented a gpiod based bitbanging backend [OmniTechnoMancer]
- Made BMDA listen on both IPv4 and IPv6 to properly support dual-stack setups [OmniTechnoMancer]
- Fixes for the ST-Link v2 backend buffer sizing and AP selection handling [ALTracer]
- Fixed an issue where MINDP was not properly handled on the ST-Link backend due to firmware doing extra steps [ALTracer]
- Fixed a typo in the platform's nRST state accessor [iysheng]
- Turned off stdout buffering under Windows to see progress output as it happens [ALTracer]
- Fixed a UB bit shift in the CMSIS-DAP backend's SWD code [dragonmux]
- Fixed a bug in the CMSIS-DAP backend where it used too many bits of the response packets as ACK bits [robots]
- Fixed a bug in how some CMSIS-DAP implementations handle the
DAP_SWD_SEQUENCEcommand [dragonmux] - Implemented display of the aux serial port on Windows to help users find it [HrMitrev]
- Implemented support for automatically opening CMSIS-DAP adaptors in v1 mode when available if unable to open in v2 mode [ALTracer]
- Rewrote the BMP-only probe discovery logic for Windows to avoid some stack overflows and other nastiness [dragonmux]
- Addressed where the
monitor versionoutput was put and what it contained to help with bug reporting [dragonmux] - Implemented support for connecting to dongles running the firmware over TCP/IP [xobs]
- Implemented compatibility for building on 32-bit Windows [ALTracer]
- Fixed an include order error that had the build broken under some circumstances [xobs]
- Fixed an implicit fallthrough error in the CLI options processing logic [ALTracer]
- Fixed how we identify old firmware such as pre-v1.7 builds running the old product string scheme [dragonmux]
- Fixed a series of bugs in the CMSIS-DAP implementation which had block I/O broken under certain circumstances [dragonux]
- Fixed a bug caused by some versions of the MCU-Link firmware reporting broken version strings that need special handling [dragonmux]
- Fixed some shortcomings in the CMSIS-DAP backend’s nRST control implementation [dragonmux]
- Fixed the way CMSIS-DAP HID I/O is done, particularly on 512 byte packet adaptors [dragonmux]
- Fixed an issue with using CMSIS-HID adaptors that have the optional SWO channel [bugadani]
Contributors to v2.0.0
We have had 43 individuals contribute 1724 commits since the v1.10.2 release.
Contributor (Contributions)
dragonmux (1021)
ALTracer (223)
Sid Price (141)
perigoso (115)
OmniTechnoMancer (34)
Sean Cross (26)
Amy (21)
Aria Burrell (14)
Mary Guillemard (12)
Michal Demin (10)
mean00 (9)
Dmitry Rezvanov (9)
ArcaneNibble (9)
Taylor Yu (8)
Piotr Esden-Tempski (7)
Aki Van Ness (7)
lenvm (6)
Hristo Mitrev (6)
elagil (6)
Matthew Via (4)
Koen De Vleeschauwer (4)
Vegard Storheil Eriksen (3)
hardesk (3)
Vedran (2)
Sage Myers (2)
Maciej Kuliński (2)
iysheng (2)
Francois Berder (2)
Étienne Machabée (2)
wucke13 (1)
RoboSchmied (1)
Rob Newberry (1)
Paul Melnikov (1)
nqbit (1)
Niko Boehm (1)
Markus Weissbacher (1)
Mark H.Spatz (1)
Lars Sundström (1)
Lars Smit (1)
LAK132 (1)
Georg Brandl (1)
Dániel Buga (1)
9names (1)Sponsors
This project is sponsored in parts by:
- 1BitSquared - Design, Manufacture and distribution of open source embedded hardware development tools and platforms, as well as educational electronics. Thank you everyone who buys Black Magic Probes from 1BitSquared directly through our stores or indirectly through Adafruit. The hardware sales allow us to continue supporting the Black Magic Debug project.
- All the generous Patrons and GitHub Sponsors supporting esden’s work
- All the generous GitHub Sponsors supporting dragonmux’s work
Downloads
-
Source code (ZIP)
153 downloads
-
Source code (TAR.GZ)
18 downloads
-
blackmagic-linux-x86_64-v2_0_0.zip
277 downloads ·
2025年07月19日 21:52:06 +02:00 · 191 KiB -
blackmagic-macos-arm-v2_0_0.zip
102 downloads ·
2025年07月19日 21:52:07 +02:00 · 222 KiB -
blackmagic-macos-intel-v2_0_0.zip
52 downloads ·
2025年07月19日 21:52:07 +02:00 · 180 KiB -
blackmagic-native-riscv-v2_0_0.bin
94 downloads ·
2025年07月19日 21:52:08 +02:00 · 78 KiB -
blackmagic-native-riscv-v2_0_0.elf
79 downloads ·
2025年07月19日 21:52:08 +02:00 · 830 KiB -
blackmagic-native-riscv-v2_0_0.hex
66 downloads ·
2025年07月19日 21:52:09 +02:00 · 219 KiB -
blackmagic-native-riscv-v2_0_0.md
109 downloads ·
2025年07月19日 21:56:23 +02:00 · 1.4 KiB -
blackmagic-native-st-clones-v2_0_0.bin
494 downloads ·
2025年07月19日 21:52:09 +02:00 · 92 KiB -
blackmagic-native-st-clones-v2_0_0.elf
253 downloads ·
2025年07月19日 21:52:09 +02:00 · 951 KiB -
blackmagic-native-st-clones-v2_0_0.hex
244 downloads ·
2025年07月19日 21:52:10 +02:00 · 259 KiB -
blackmagic-native-st-clones-v2_0_0.md
255 downloads ·
2025年07月19日 21:56:23 +02:00 · 1.9 KiB -
blackmagic-native-uncommon-v2_0_0.bin
71 downloads ·
2025年07月19日 21:52:11 +02:00 · 72 KiB -
blackmagic-native-uncommon-v2_0_0.elf
60 downloads ·
2025年07月19日 21:52:11 +02:00 · 769 KiB -
blackmagic-native-uncommon-v2_0_0.hex
53 downloads ·
2025年07月19日 21:52:12 +02:00 · 202 KiB -
blackmagic-native-uncommon-v2_0_0.md
117 downloads ·
2025年07月19日 21:56:23 +02:00 · 1.5 KiB -
blackmagic-native-v2_0_0.bin
321 downloads ·
2025年07月19日 21:52:12 +02:00 · 119 KiB -
blackmagic-native-v2_0_0.elf
328 downloads ·
2025年07月19日 21:52:12 +02:00 · 1.2 MiB -
blackmagic-native-v2_0_0.hex
131 downloads ·
2025年07月19日 21:52:13 +02:00 · 334 KiB -
blackmagic-native-v2_0_0.md
217 downloads ·
2025年07月19日 21:56:24 +02:00 · 2.1 KiB -
blackmagic-v2_0_0.sum
49 downloads ·
2025年07月19日 21:52:14 +02:00 · 1.7 KiB -
blackmagic-windows-x86_64-v2_0_0.zip
573 downloads ·
2025年07月19日 21:52:14 +02:00 · 521 KiB
-
Release Candidate V2.0.0-rc2 Pre-release
esden released this
2025年03月02日 21:47:26 +01:00 | 736 commits to main since this releaseWe are happy to announce the second v2.0.0 release candidate of Black Magic Debug. This is the first major release of the v2 series.
In this release
- Fixed a mistake in the name of the
mscratchCSR for RISC-V [ALTracer] - Implemented better control of the nTRST and TCK/SWCLK pin modes on the Black Pill platforms [ALTracer]
- Fixed a bug in STM32WL55 discovery and an error recovery issue [dragonmux]
- Updated the contribution guidelines for the project to clarify the stance on LLM/"AI" generated contributions [dragonmux]
- Fixed an issue with support for 64-bit break/watch points [marysaka]
- Fixed some shortcomings in BMDA’s CMSIS-DAP backend’s nRST control implementation [dragonmux]
- Fixed a sector calculation bug causing erase to go wrong on STM32H5 parts [dragonmux]
- Treat the GD32E5 series JTAG-DP as ADIv5 [ALTracer]
- Globally enable GDB noackmode support by default [perigoso]
- Fixed a bug in ADIv5/v6 JTAG DP version handling which broke DPv1-2 parts [dragonmux]
- Make sure the bootloader LED is only set up once on the Black Pill platforms [lenvm]
- Formally parse the
misaregister to form the CPU string on RISC-V targets [perigoso] - Fix Cortex-M4 core detection for the i.MXRT1176 [litui]
- Re-introduced the SHIELD selection build option for the Meson build system on Back Pill platforms [lenvm]
- Fixed an issue in GDB noackmode state handling that would cause a kind of "zombie" state [perigoso]
- Corrected a mistake on the Black Pill platforms in the conditional compilation macro name used for the bootloader LED pin [sidprice]
- Documented the
on_carrier_boardoption for the Black Pill platforms [sidprice] - Fixed an issue in discovery of v2 device info pages on EFM32 parts [mmmspatz]
- Corrected the initialisation and control of the nRST pin on the Black Pill platforms [ALTracer]
- Fixed an issue on the Black Pill and ST-Link v3 platforms with slew rates not scaling with frequency selection leading to SI problems in poor setups [ALTracer]
- Switched the default target clock speed on the Black Pill platforms to 2MHz [birkenfeld]
Contributors to v2.0.0-rc2
We have had 6 individuals contribute 47 commits since the v2.0.0-rc1 release candidate.
Contributor (Contributions)
dragonmux (14)
perigoso (13)
ALTracer (10)
Sid Price (2)
Mary Guillemard (2)
lenvm (2)
Aria Burrell (2)
Mark H.Spatz (1)
Georg Brandl (1)Sponsors
This project is sponsored in parts by:
- [1BitSquared](https://1bitsquared.com/) - Design, Manufacture and distribution of open source embedded hardware development tools and platforms, as well as educational electronics. Thank you everyone who buys Black Magic Probes from 1BitSquared directly through our [stores](https://1bitsquared.com/products/black-magic-probe) or indirectly through [Adafruit.](https://www.adafruit.com/product/3839) The hardware sales allow us to continue supporting the Black Magic Debug project.
- All the generous [Patrons](https://www.patreon.com/1bitsquared) and [GitHub Sponsors](https://github.com/sponsors/esden) supporting esden’s work
- All the generous [GitHub Sponsors](https://github.com/sponsors/dragonmux) supporting dragonmux’s work
Downloads
-
Source code (ZIP)
3 downloads
-
Source code (TAR.GZ)
0 downloads
-
blackmagic-full-source-v2_0_0-rc2.tar.gz
49 downloads ·
2025年03月03日 18:56:09 +01:00 · 1.1 MiB -
blackmagic-full-source-v2_0_0-rc2.tar.xz
22 downloads ·
2025年03月03日 18:56:11 +01:00 · 786 KiB -
blackmagic-full-source-v2_0_0-rc2.zip
57 downloads ·
2025年03月03日 18:56:11 +01:00 · 1.4 MiB -
blackmagic-linux-x86_64-v2_0_0-rc2.zip
74 downloads ·
2025年03月03日 18:56:12 +01:00 · 192 KiB -
blackmagic-macos-aarch64-v2_0_0-rc2.zip
39 downloads ·
2025年03月03日 18:56:12 +01:00 · 164 KiB -
blackmagic-macos-x86_64-v2_0_0-rc2.zip
31 downloads ·
2025年03月03日 18:56:12 +01:00 · 184 KiB -
blackmagic-native-riscv-v2_0_0-rc2.bin
27 downloads ·
2025年03月03日 18:56:12 +01:00 · 78 KiB -
blackmagic-native-riscv-v2_0_0-rc2.elf
25 downloads ·
2025年03月03日 18:56:13 +01:00 · 829 KiB -
blackmagic-native-riscv-v2_0_0-rc2.hex
19 downloads ·
2025年03月03日 18:56:13 +01:00 · 219 KiB -
blackmagic-native-riscv-v2_0_0-rc2.md
18 downloads ·
2025年05月23日 07:27:59 +02:00 · 1.4 KiB -
blackmagic-native-st-clones-v2_0_0-rc2.bin
98 downloads ·
2025年03月03日 18:56:13 +01:00 · 92 KiB -
blackmagic-native-st-clones-v2_0_0-rc2.elf
57 downloads ·
2025年03月03日 18:56:14 +01:00 · 950 KiB -
blackmagic-native-st-clones-v2_0_0-rc2.hex
45 downloads ·
2025年03月03日 18:56:14 +01:00 · 258 KiB -
blackmagic-native-st-clones-v2_0_0-rc2.md
29 downloads ·
2025年05月23日 07:28:00 +02:00 · 1.9 KiB -
blackmagic-native-uncommon-v2_0_0-rc2.bin
21 downloads ·
2025年03月03日 18:56:14 +01:00 · 72 KiB -
blackmagic-native-uncommon-v2_0_0-rc2.elf
20 downloads ·
2025年03月03日 18:56:15 +01:00 · 769 KiB -
blackmagic-native-uncommon-v2_0_0-rc2.hex
16 downloads ·
2025年03月03日 18:56:15 +01:00 · 202 KiB -
blackmagic-native-uncommon-v2_0_0-rc2.md
20 downloads ·
2025年05月23日 07:28:00 +02:00 · 1.5 KiB -
blackmagic-native-v2_0_0-rc2.bin
102 downloads ·
2025年03月03日 18:56:15 +01:00 · 118 KiB -
blackmagic-native-v2_0_0-rc2.elf
93 downloads ·
2025年03月03日 18:56:16 +01:00 · 1.2 MiB -
blackmagic-native-v2_0_0-rc2.hex
35 downloads ·
2025年03月03日 18:56:16 +01:00 · 333 KiB -
blackmagic-native-v2_0_0-rc2.md
23 downloads ·
2025年05月23日 07:28:00 +02:00 · 2.1 KiB -
blackmagic-v2_0_0-rc2.sum
10 downloads ·
2025年03月03日 18:56:17 +01:00 · 1.2 KiB -
blackmagic-windows-x86_64-v2_0_0-rc2.zip
161 downloads ·
2025年03月03日 18:56:17 +01:00 · 449 KiB
- Fixed a mistake in the name of the
-
Release Candidate V2.0.0-rc1 Pre-release
esden released this
2025年01月07日 19:11:05 +01:00 | 783 commits to main since this releaseWe are happy to announce the first v2.0.0 release candidate of Black Magic Debug. This is the first major release of the v2 series.
Here are some of the highlights:
- Switched to the Meson build system
- Implemented RISC-V support
- Implemented Cortex-R support
- Implemented ARMv8-M support
- And a bunch of newly supported targets:
- Ambiq Apollo 3
- ArteryTek AT32F405/F403/F413/F421/F423/F437
- Atmel SAMC21
- GigaDevice GD32F405
- GigaDevice GD32VF1
- Nordic Semi nRF54L
- NXP Kinetis MK20DX256
- NXP S32K344
- Puya PY32
- Renesas RZ/A1 A1L, A1LU and A1H
- RPi Foundation RP2350
- ST Micro STM32F410
- ST Micro STM32H72/H73
- ST Micro STM32H7A/H7B
- ST Micro STM32WB0
- TI MSPM0
- TI TM4C1294KCDT
- WinChipHead CH579
For more details please refer to the ChangeLog down below.
Release Artifact Notes
With this release we are now officially releasing the Black Magic Debug Application (aka. BMDA) binaries for Linux, MacOS and Windows. You can find them as
blackmagic-[OS NAME]-[VERSION].zipfiles attached to the release.In this release we are officially beyond the flash capacity of the native hardware MCU flash memory. This means we are splitting the firmware up into 4 versions, each firmware supports a subset of targets and architectures. You can find the firmware binaries as
blackmagic-[FIRMWARE TYPE]-[VERSION].(elf|bin|hex). Here is the legend of supported targets in each firmware type:native-> Common targets:- Cortex-M architecture support
- LPC targets support
- nRF targets support
- NXP (LPC + Kinetis) targets support
- Renesas MCUs support
- RPi Foundation MCUs support
- ATSAM targets support
- STM32 targets support
- TI targets support
native-uncommon-> Uncommon targets:- Cortex-A/R architecture support
- Cortex-M architecture support
- Ambiq Apollo3 support
- EFM32 targets support
- HC32 targets support
- Renesas RA + RZ targets support
- Xilinx Zinq support
native-st-clones-> ST + ST Clone targets:- Cortex-A/R architecture support
- Cortex-M architecture support
- STM32 targets support
- AT32 targets support
- GD32 targets support
- CH32 targets support
- CH579 support
- MindMotion targets support
- Puya32 targets support
- HC32 targets support
native-riscv-> RISC-V targets (including hybrids):- RISC-V 32-bit architecture support
- RISC-V 64-bit architecture support
- GD32 targets support (GD32VF103)
- RPi Foundation MCUs support
ChangeLog V2.0.0-rc1
Core Changes
- Implemented proper IR quirk handling for Xilinx FPGAs [lethalbit]
- Fixed some preprocessor logic issues for when RISC-V Debug is disabled [dragonmux]
- Implemented support for the
vContandqAttachedGDB packets [dragonmux] - Format string fixes in the RTT support [koendv]
- Format string and documentation fixes for
monitor heapinfo[koendv] - Introduced new
DEBUG_*_IS_NOOPmacros to allow better logic to be built around debug output [dragonmux] - Format string fixes across the GDB server and monitor command systems [ALTracer]
- Missing prototypes and macro usage improvements [elagil]
- Fixed some
DEBUG_*()calls with bad format strings [xobs] - Improvements to allow the GDB server to idle more [ALTracer]
- Fixed various typos and spelling mistakes across the code code base [francois-berder]
- Improved the performance of the GDB
qCRCpacket handling [ALTracer] - Fixed an issue with how aliasing works under macOS breaking the build of the CRC32 code [ALTracer]
- Improved the space efficiency and correctness of the 12 character serial number logic [ALTracer]
- Format string fixes and clean up [dragonmux]
- Reorganised the semihosting support out from the Cortex-M support [dragonmux]
- Refactored the semihosting implementation and fixed some implementation errors [dragonmux]
- Fixed an issue with alias handling on macOS [amyspark]
- Warnings and nomenclature fixes across the code base [dragonmux]
- Fixed the Clang fall-through warnings as the compiler doesn't understand the magic comment used before [dragonmux]
- Laid the groundwork for supporting the AM335x family parts from TI [dragonmux]
- Fixed some issues with the handling of GDB's single register read/write commands [OmniTechnoMancer]
- Removed all usage of
sscanf()in the firmware to reduce code size and improve speed [OmniTechnoMancer] - Added the specific IR quirk for the Xilinx Artix 7 XC7A200T [LAK132]
- Fixed an error in the remaining length calculation for the
vFlashWriteGDB command handling [OmniTechnoMancer] - Cleaned up from the tooling changes [dragonmux]
- Fixed a timeout mishandling issue that would result in timeouts executing wrongly for a few seconds every 49.7 days of uptime [dragonmux]
- Converted all uses of
sprintf()over tosnprintf()for improved safety and code size [ALTracer] - Fixed a bug where the result of
vasprintf()was ignored in the GDB packet handling, leading to crashes and badness [ALTracer] - Improved handling of faults in the remote protocol so BMDA can properly recover from them [dragonmux]
- Overhaulled the exception system to fix a bug in how exception frames were being handled [dragonmux]
- Fixed a bug in how F-packets are detected during semihosting response processing [OmniTechnoMancer]
- Implemented support for semihosting's
SYS_ELAPSEDandSYS_TICKFREQcalls [ALTracer] - Fixed a crash from in
target_list_free()caused by improper exception handling within the function [dragonmux] - Fixed a
NULLpointer dereference in the target voltage handling and made the implementations consistent [ALTracer] - Fixed compilation with newlib 4.3.0+ by opting out of the unwinder logic it now pulls in [ALTracer]
- Implemented deinit for the SWO implementation and made the buffer for async mode heap allocated [ALTracer]
- Demarked the platform-specific commands in the
monitor helpoutput [Misaka0x2730] - Fixed the format string warnings for all
tc_printf()usage [HrMitrev] - Fixed several bugs in the Manchester-mode SWO support that had it broken across several platforms [ALTracer]
- Fixed a NULL dereference that was possible in the
vFlashDonehandler when run with no target selected [ALTracer] - Made the SWO command report back the actual baud rate achieved for UART-mode, not just the one requested [ALTracer]
- Reduced duplication by consolidating the GDB packet buffer sizing macros [Misaka0x2730]
- Implemented support for other RTT channels than 0, and improved the documentation of the implementation [xobs]
- Overhauled the SWO implementation, implementing runtime switchable decoder selection [dragonmux]
- Fixed the Git ignore configuration to properly ignore the dependency clones [desertsagebrush]
- Switched the gate macro nomenclature for several things to
CONFIG_<thing>for consistency [dragonmux] - Implemented a proper non-halting memory access marker for targets (
TOPT_NON_HALTING_MEM_IO) to replace the previous heuristic that was broken [dragonmux] - Fixed a crash caused by too short a buffer being passed to a
hexify()call in the remote protocol implementation [xobs] - Fixed several bugs in the RTT implementation and improved some code clarity [xobs]
- Fixed a crash in the
tdi_low_resetmonitor command when run before any JTAG scans have yet been done [dragonmux] - Overhauled the target mass erase system, pulling lots of common logic not the target API layer [perigoso]
- Improved the GDB packet handling system, reducing allocations and improving speed a bit [perigoso]
- Fixed a missing include for
string.hin the GDB packet handler [xobs] - Allow an external buffer to be supplied to the GDB packet handler [xobs]
- Overhauled the main project README [dragonmux]
- Fixed a pile of cast-based conversions warnings [dragonmux]
- Fixed a regression in the GDB server that meant block memory reads would inexplicably fail [ALTracer]
Build System Changes
- Introduced a new build system based on Meson [perigoso/dragonmux]
- Added a build target summary to the Meson build system [dragonmux]
- Improved the
pre-commithook setup forclang-format[amyspark] - Fixed an encoding issue for
pre-commitunder Windows [perigoso] - Fixed a typo in one of the warnings in the Meson build system [lasutek]
- Documented a small hitch with how PowerShell consumes Meson options lines [perigoso]
- Updated the BMDA dependencies
libusbandHIDAPIto address some issues, particularly on M3 devices [dragonmux] - Added a Meson Wrap fallback for the
libftdi1BMDA dependency [dragonmux] - Fixed the build exploding under Meson on macOS due to BMDA dependencies needing a C++ compiler [amyspark]
- Added a guard for the CH579 support to help with Flash size [ALTracer]
- Made the at32f43x support optional in both build systems [ALTracer]
- Updated the targets enabled for larger Flash platforms under Meson [ALTracer]
- Updated the libopencm3 version used to get various fixes upstream has not yet merged [dragonmux]
- Implemented the ability to select the SWO decoder built into the firmware [sidprice]
- Cleaned up the build system a bit, fixing some target family description texts [dragonmux]
- Disable some of the targets by default for the f072, stlink and native probe platforms to get things to fit Flash [esden]
- Removed the Makefile-based build system [esden]
- Implemented better control over the targets that can be enabled and created a suite of profiles for native for what is enabled out the box [dragonmux]
Script/Utility Changes
- Added nix-direnv integrations [wucke13]
- Removed deprecated tooling [dragonmux]
- Fixed a typo in the ST-Link udev rules [WeissbMa]
- Fixed an error in the
clang-tidyconfiguration which rendered it invalid [OmniTechnoMancer] - Fixed up the udev rules to work with udev >= 247 [dragonmux]
- Updated the
swolistenutility to properly walk the descriptors for the endpoint to use [ALTracer] - Implemented a script for building firmware for all probes under Meson [esden]
Project CI Changes
- Upgraded the
pre-commitcheck for accidental assignment to correct handling of char literals [perigoso] - Added MSVC and macOS jobs for PR builds to help prevent regressions [amyspark]
- Worked around a macOS 14 SDK issue making CI fail [amyspark]
- Various fixes for GCC builds on macOS [amyspark/dragonmux]
- Overhauled the CI configs to use newer OSes, compilers and have more sensible build matrices for better code coverage [dragonmux]
- Made use of
make's-joption in CI for a speed boost [ALTracer] - Fixed CI breaking due to changes in the Ubuntu images used due to Python PEP 668 [dragonmux]
- Fixed the macOS version we used becoming deprecated by upgrading the configs [dragonmux]
- Added the Black Pill platforms back into CI as they got missed [ALTracer]
- Fixed an issue in the build-and-upload flow that results in improper version information being embedded [dragonmux]
ARM (ADIv5 and ADIv6) Changes
- ARM Debug: De-duplicated the SWD error handling logic across all supported probes [perigoso]
- ARM Debug: Implemented support for discovering and debugging Cortex-R cores [dragonmux]
- ARM Debug: Unified the Cortex-A and Cortex-R handling [dragonmux]
- ARM Debug: Implemented memory I/O diagnostics for Cortex-A/R cores [dragonmux]
- ARM Debug: Extracted and de-duplicated the SWD parity calculation logic, giving it consistency [ALTracer]
- ARM Debug: Used the AP banked registers to speed up Cortex-A/R instruction launches used for register and memory access [dragonmux]
- ARM Debug: Fixed a typo in one of the defines for the Cortex-M support [RoboSchmied]
- ARM Debug: Implemented support for 64-bit APs in preparation for 64-bit Cortex support [dragonmux]
- ARM Debug: Fixed a couple of regressions in the SWD and ADIv5 memory access handling [dragonmux]
- ARM Debug: Fixed an error in the DPIDR revision decoding mask [iysheng]
- ARM Debug: Harmonised all SWD backends on what they return from
seq_in_parityfor consistency [dragonmux] - ARM Debug: Improved the SWD bitbanging to make timing more consistent [tlyu]
- ARM Debug: Fixed a CPSR mapping error for the Cortex-A/R support [litui]
- ARM Debug: Implemented ADIv6 support [dragonmux]
- ARM Debug: Fixed an issue where the Cortex-A/R implementation could cause hangs due to the target not being halted when it should be [litui]
- ARM Debug: Implemented proper support for TrustZone on Cortex-M parts [dragonmux]
- ARM Debug: Allow access to DEMCR outside of the implementation for Cortex-M devices [xobs]
- ARM Debug: Implemented use of the JTAG -> Dormant State sequence to work with targets that need it [mean00]
- ARM Debug: Implemented proper configuration of CSW for APB2 and APB3 [marysaka]
- ARM Debug: Ensure the CPUID register is only read once a Cortex-A/R core is actually powered [marysaka]
- ARM Debug: Implemented parsing of CoreSight ROM tables found on APs [marysaka]
- ARM Debug: Implemented support for ADIv6 JTAG-DPs [dragonmux]
- ARM Debug: Refactored MEM-AP configuration out from
adi_config_ap(), reducing code complexity [HrMitrev] - ARM Debug: Implemented watchpoints support for ARMv8-M parts [mean00]
- ARM Debug: Fixed a typo in the Cortex-A/R error checking routine [marysaka]
- ARM Debug: Make sure the core gets halted in
cortexar_mem_write()same ascortexar_mem_read()[marysaka] - ARM Debug: Performed some structural clean up and fixed some issues around ARMv8-M debug [dragonmux]
RISC-V Debug Changes
- RISC-V: Implemented support for JTAG-based RISC-V Debug v0.13 [dragonmux/perigoso/mean00]
- RISC-V: Implemented System Bus memory access support [dragonmux]
- RISC-V: Implemented a
tinforegister read quirk to handle odd targets [dragonmux] - RISC-V: Made sure we stop when we hit ebreak's when the target's running [mean00]
- RISC-V: Implemented support for handling targets implementing single precision float [mean00]
- RISC-V: Implemented JTAG protocol acceleration in the BMD remote protocol [dragonmux]
- RISC-V: Fixed a bug in the single-stepping vs normal execution logic for when to suspend interrupts [mean00]
Target Changes
- at32f435/f437: Implemented Flash support [ALTracer]
- samd: Fixed an error in the device ID masks [koendv]
- stm32mp15: Implemented support for the Cortex-A cores in this part series [dragonmux]
- zynq7000: Re-introduced proper Zynq-7000 support as a discrete target seperate from the Cortex-A support [dragonmux]
- at32f403a/407: Implemented dual Flash bank support [ALTracer]
- lmi: Fixed a missed variable initialisation in the Flash stub [francois-berder]
- stm32h7: Improved the SRAM part of the memory maps [ALTracer]
- stm32f1: Fixed a bug in split-bank erase handling [tlyu]
- gd32f3: Fixed handling of XL-density devices by handling them as dual bank [ALTracer]
- renesas_rz: Fixed a mishap in the Meson BMDA build logic [dragonmux]
- stm32mp15: Implemented a revision reporting monitor command like with other STM32 parts [ALTracer]
- stm32h7: Improved the revision reporting command implementation to be more complete [ALTracer]
- rp2040: Implemented a Flash stub to improve reprogramming throughput [vesim987/dragonmux]
- s32k3xx: Fixed a formatting string mistake [xobs]
- samd/samx5x: Fixed how parts are identified using the target structure instead of extra register reads [dragonmux]
- ke04: Added a missing probe call so these parts are properly identified again [nqbit]
- stm32h7b: Implemented Flash programming support [ALTracer]
- stm32l4: Fixed the Flash size handling and Flash registration for the STM32U5 parts [rob-the-dude]
- imxrt: Simplified one of the debug logging guards using the new
DEBUG_*_IS_NOOPmacros [ALTracer] - stm32: Improved the UID command readout and display with a proper decoder for this data [ALTracer]
- stm32f103: Implemented support for recognising another of the clones [nboehm99]
- stm32f4: Made sure to freeze the WDTs on halt as they were causing problems [dragonmux]
- at32f435/437: Implemented support for the option bytes on these parts [ALTracer]
- stm32: Avoid displaying non-printable characters in the UID decoder [ALTracer]
- stm32g0/c0: Enable the UID decoder for these parts [ALTracer]
- efm32/nrf51/renesas_ra: Unified the UID strings to reduce Flash usage and be more consistent [ALTracer]
- stm32mp15/stm32h74: Fixed a misidentification issue for the M4 cores on these parts due to ROM table issues [ALTracer]
- stm32: Implemented control of the WDTs across all STM32's so they get frozen when the target is halted [dragonmux]
- stm32: Fixed some format string errors for some
DEBUG_TARGET()invocations [xobs] - stm32h7: Formatted the address the DBGMCU IDCODE was read from in hex [xobs]
- stm32h5: Fixed an address error for the DBGMCU and some missing SRAM mappings [ALTracer]
- stm32l4: Fixed an error in the WDT handling in the DBGMCU which resulted in a crash [dragonmux]
- s32k3xx: Removed an assert that is always true for a code size improvement [ALTracer]
- renesas/rz: Implemented auto-detection of the SRAM available on the part [litui]
- at32f43x: Implemented WDT control and sleep management to get parity with the STM32 targets [ALTracer]
- rp2350: Implemented support for the RISC-V half of the part [dragonmux]
- at32f43x: Fixed some typos in the WFI/WDT handling support [ALTracer]
- lpc43xx: Fixed a typo in the part numbering for the LPC433x and LPC435x [via]
- stm32wbxx: Implemented option bytes support [Lars-inspiro]
- stm32l4: Fixed some isues with STM32L4/L5/U5/G4/WL/WB family identification [dragonmux]
- stm32f1: Improved the option bytes support for ArteryTek parts [ALTracer]
- stm32f1: Fixed a couple of format string errors [xobs]
- at32f43x: Cleaned up in the implementation, eliminating some complexity and making use of the STM32 UID handler [ALTracer]
- mspm0: Removed a couple of always-true asserts [ALTracer]
- mspm0: Consistency and code pattern cleanups [dragonmux]
- stm32: Fixed a bug in the attach/detach behaviour caused by how the DBGMCU state was being maintained [dragonmux]
- stm32f0: Corrected the SRAM mappings sizes as they were wrong [ALTracer]
- at32f405: Fixed a Flash mappings size error caused by a units mistake [ALTracer]
- stm32l4: Fixed a couple of discovery bugs leading to miss-detections and improper memory maps [ALTracer]
Targets Added
- TI TM4C1294KCDT [desertsagebrush]
- Atmel SAMC21 [koendv]
- GigaDevice GD32VF1 [dragonmux]
- Renesas RZ/A1LU [dragonmux]
- Renesas RZ/A1, RZ/A1H [litui]
- NXP S32K344 [via]
- NXP Kinetis MK20DX256 [vedranMv]
- ST Micro STM32F410 [dragonmux]
- WinChipHead CH579 [ArcaneNibble]
- ST Micro STM32H72/H73 [dragonmux]
- Puya PY32 [ArcaneNibble]
- ST Micro STM32H7A/H7B [ALTracer]
- GigaDevice GD32F405 [dragonmux/klenSA]
- Ambiq Apollo 3 [sidprice/litui]
- ST Micro STM32WB0 [dragonmux]
- RPi Foundation RP2350 [dragonmux]
- ArteryTek AT32F405/F403/F413/F421/F423 [ALTracer]
- TI MSPM0 [hardesk]
- Nordic Semi nRF54L [zyp]
Host Platform Changes
Added
- Support for the USB side of ctxLink [sidprice]
- Support for the WiFi side of ctxLink [sidprice]
Common
- Changed the firmware SRAM layout organisation so heap and stack cannot run into each other silently [dragonmux]
- Reordered endpoint usage so all core features work even on the DWC2 platforms with only 4 usable endpoints [ALTracer]
- Implemented the ability for platforms to have commands specific to them [Misaka0x2730]
- Implemented use of
OVER8for more available baud rates on platforms that support it [ALTracer] - Gated USB-specific definitions behind a check for not
NO_LIBOPENCM3[xobs] - Allow platforms to be dynamically identified, cleaning up the platform identification system [Misaka0x2730]
- Cleaned up in the AUX serial handling and logic to improve code quality and simplify the flow [dragonmux]
- Removed use of librdimon for
DEBUG_*()-enabled builds, saving ~1.2kiB of Flash [tlyu]
STM32
- Fixed some UB bit shifts in some left shift expressions [tlyu]
- Fixed the timeouts used in the F1 DFU bootloader, speeding everything up [ALTracer]
- Further improvements to GDB server idling on the DWC2-based platforms [ALTracer]
- Adapted the async (UART) SWO implementation for use on the F4-based platforms [ALTracer]
- Fixed a USB enumeration bug on F4-based platforms [sidprice]
Black Magic Probe (aka "Native") host
- Improved the USB re-enumeration timings to be more spec compliant to help how controllers like the M3's interact [dragonmux]
- Improved handling of
hwversionfor a speed and Flash usage improvement [dragonmux]
ctxLink host
- Optimized the code for calling the boot ROM a bit [sidprice]
- Fixed a bug with the DMA configuration for the aux serial interface [sidprice]
- Fixed a bug with the target voltage handling which resulted in a crash [sidprice]
- Implemented support for async-mode (UART) SWO [sidprice]
- Switched the platform to use the ROM bootloader exclusively [sidprice]
- Fixed a crash in the voltage reporting logic when reporting battery voltage [sidprice]
- Updated the README to refect build system changes [sidprice]
- Improved the ADC usage to reduce its impacts on WiFi interface speed [sidprice]
- Fixed some variable references that went wrong when
DEBUG_*()is enabled [sidprice] - Switched the WINC1500 into manual power mode for a bit of a performance increase [sidprice]
- Enabled using the platform with
DEBUG_*()being enabled [sidprice]
ST-Link v2/v2.1 host
- Implemented support for the ST-Link v2-ISOL dongle variant [HrMitrev]
- Switched mechanisms for generating output on the ST-Link v2-ISOL dongle to improve code size [HrMitrev]
- Fixed a pin conflict between the
SWIM_AS_UARTbuild option and the nRST pin mapping [positron96] - Added a Meson cross-file and probe type for the ST-Link v2-ISOL dongle support [HrMitrev]
ST-Link v3 host
- Fixed the CRC logic for
compare-sections(qCRC) not working on this platform [ALTracer] - Fixed the target serial interface not working on this platform [ALTracer]
- Fixed an issue with the
DEBUG_*()output when enabled on this platform [ALTracer] - Improved the documentation on how to program a dongle with the firmware [robots]
- Implemented support for tristating SWDIO and SWCLK, implementing clock tristating [ALTracer]
Black Pill v2 host (now blackpill-f401cc, blackpill-f401ce and blackpill-f411ce, aka "The Black Pill hosts")
- Added a
SHIELDmacro for defining if you are using your Black Pill with an expansion (shield) board [lenvm] - Turned a couple of magic numbers into proper defines for the user button [lenvm]
- Sped up bus turnarounds, matching how the other platforms perform them [ALTracer]
- Added debug output support for the platform [ALTracer]
- Improved the DFU bootloader for the platform [ALTracer]
- Fixed some issues with the project bootloader on this platform [ALTracer]
- Fixed the platform requiring an extra reset after leaving the boot ROM [ALTracer]
- Switched the platform to use async-mode SWO as Manchester-mode is broken [ALTracer]
- Implemented the ability for the bootloader to report more state when built for use with a carrier board [sidprice]
- Fixed a documentation error in the platform SWO definitions [sidprice]
- Better documented how to build the platform and upgrade the firmware on a probe [ALTracer]
- Added a
swlink-like alternative pinout (alt pinout 2) [ALTracer] - Fixed the build instructions and updated the platform README [sidprice]
Black Magic Debug App (aka "PC Host")
- Assorted fixes to the J-Link backend [perigoso]
- Fixes for building under MSVC [xobs]
- Fixes for building on FreeBSD [ALTracer]
- Improved the speed of communications to BMPs via proper read buffering [dragonmux]
- Fixed the CMSIS-DAP backend's WAIT/FAULT response data phase handling [dragonmux]
- Fixed the semihosting implementation for BMDA to make the implementation conform to the spec [dragonmux]
- Fixed the CMSIS-DAP backend mishandling the adaptor packet sizing [dragonmux]
- Fixed an issue in the timeouts configuration under Windows leading to slowdowns [dragonmux]
- Implemented full MSVC compatibility [amyspark]
- Fixed the max frequency handling to respect user changes and not be entirely ephemeral [perigoso]
- Fixed a response buffer sizing mistake in the CMSIS-DAP backend [dragonmux]
- Implemented a gpiod based bitbanging backend [OmniTechnoMancer]
- Made BMDA listen on both IPv4 and IPv6 to properly support dual-stack setups [OmniTechnoMancer]
- Fixes for the ST-Link v2 backend buffer sizing and AP selection handling [ALTracer]
- Fixed an issue where MINDP was not properly handled on the ST-Link backend due to firmware doing extra steps [ALTracer]
- Fixed a typo in the platform's nRST state accessor [iysheng]
- Turned off stdout buffering under Windows to see progress output as it happens [ALTracer]
- Fixed a UB bit shift in the CMSIS-DAP backend's SWD code [dragonmux]
- Fixed a bug in the CMSIS-DAP backend where it used too many bits of the response packets as ACK bits [robots]
- Fixed a bug in how some CMSIS-DAP implementations handle the
DAP_SWD_SEQUENCEcommand [dragonmux] - Implemented display of the aux serial port on Windows to help users find it [HrMitrev]
- Implemented support for automatically opening CMSIS-DAP adaptors in v1 mode when available if unable to open in v2 mode [ALTracer]
- Rewrote the BMP-only probe discovery logic for Windows to avoid some stack overflows and other nastiness [dragonmux]
- Addressed where the
monitor versionoutput was put and what it contained to help with bug reporting [dragonmux] - Implemented support for connecting to dongles running the firmware over TCP/IP [xobs]
- Implemented compatibility for building on 32-bit Windows [ALTracer]
- Fixed an include order error that had the build broken under some circumstances [xobs]
- Fixed an implicit fallthrough error in the CLI options processing logic [ALTracer]
- Fixed how we identify old firmware such as pre-v1.7 builds running the old product string scheme [dragonmux]
- Fixed a series of bugs in the CMSIS-DAP implementation which had block I/O broken under certain circumstances [dragonux]
- Fixed a bug caused by some versions of the MCU-Link firmware reporting broken version strings that need special handling [dragonmux]
Contributors to v2.0.0-rc1
We have had 38 individuals contribute 1593 commits since the v1.10.2 release.
Contributor (Contributions)
dragonmux (971)
ALTracer (201)
Sid Price (118)
perigoso (102)
OmniTechnoMancer (34)
Sean Cross (25)
Amy (21)
Aria Burrell (12)
Mary Guillemard (10)
Dmitry Rezvanov (9)
ArcaneNibble (9)
Taylor Yu (8)
mean00 (8)
Aki Van Ness (7)
Piotr Esden-Tempski (6)
Hristo Mitrev (6)
elagil (6)
Matthew Via (4)
lenvm (4)
Koen De Vleeschauwer (4)
Michal Demin (3)
hardesk (3)
Vegard Storheil Eriksen (2)
Vedran (2)
Sage Myers (2)
Maciej Kuliński (2)
iysheng (2)
Francois Berder (2)
wucke13 (1)
RoboSchmied (1)
Rob Newberry (1)
Paul Melnikov (1)
nqbit (1)
Niko Boehm (1)
Markus Weissbacher (1)
Lars Sundström (1)
Lars Smit (1)
LAK132 (1)Sponsors
This project is sponsored in parts by:
- 1BitSquared - Design, Manufacture and distribution of open source embedded hardware development tools and platforms, as well as educational electronics. Thank you everyone who buys Black Magic Probes from 1BitSquared directly through our stores or indirectly through Adafruit. The hardware sales allow us to continue supporting the Black Magic Debug project.
- All the generous GitHub Sponsors supporting dragonmux’s work
- All the generous Patrons and GitHub Sponsors supporting esden’s work
Downloads
-
Source code (ZIP)
4 downloads
-
Source code (TAR.GZ)
0 downloads
-
blackmagic-full-source-v2_0_0-rc1.tar.gz
29 downloads ·
2025年01月08日 22:12:39 +01:00 · 1.1 MiB -
blackmagic-full-source-v2_0_0-rc1.tar.xz
14 downloads ·
2025年01月08日 22:12:40 +01:00 · 784 KiB -
blackmagic-full-source-v2_0_0-rc1.zip
36 downloads ·
2025年01月08日 22:12:41 +01:00 · 1.4 MiB -
blackmagic-linux-v2_0_0-rc1.zip
39 downloads ·
2025年01月08日 22:12:41 +01:00 · 1 MiB -
blackmagic-macos-13-v2_0_0-rc1.zip
16 downloads ·
2025年01月08日 22:12:42 +01:00 · 217 KiB -
blackmagic-macos-14-v2_0_0-rc1.zip
19 downloads ·
2025年01月08日 22:12:42 +01:00 · 234 KiB -
blackmagic-native-riscv-v2_0_0-rc1.bin
17 downloads ·
2025年01月08日 22:12:42 +01:00 · 77 KiB -
blackmagic-native-riscv-v2_0_0-rc1.elf
17 downloads ·
2025年01月08日 22:12:42 +01:00 · 826 KiB -
blackmagic-native-riscv-v2_0_0-rc1.hex
14 downloads ·
2025年01月08日 22:12:43 +01:00 · 218 KiB -
blackmagic-native-st-clones-v2_0_0-rc1.bin
68 downloads ·
2025年01月08日 22:12:43 +01:00 · 92 KiB -
blackmagic-native-st-clones-v2_0_0-rc1.elf
36 downloads ·
2025年01月08日 22:12:43 +01:00 · 949 KiB -
blackmagic-native-st-clones-v2_0_0-rc1.hex
28 downloads ·
2025年01月08日 22:12:44 +01:00 · 258 KiB -
blackmagic-native-uncommon-v2_0_0-rc1.bin
23 downloads ·
2025年01月08日 22:12:44 +01:00 · 72 KiB -
blackmagic-native-uncommon-v2_0_0-rc1.elf
20 downloads ·
2025年01月08日 22:12:45 +01:00 · 767 KiB -
blackmagic-native-uncommon-v2_0_0-rc1.hex
19 downloads ·
2025年01月08日 22:12:45 +01:00 · 202 KiB -
blackmagic-native-v2_0_0-rc1.bin
69 downloads ·
2025年01月08日 22:12:45 +01:00 · 118 KiB -
blackmagic-native-v2_0_0-rc1.elf
64 downloads ·
2025年01月08日 22:12:46 +01:00 · 1.2 MiB -
blackmagic-native-v2_0_0-rc1.hex
34 downloads ·
2025年01月08日 22:12:46 +01:00 · 332 KiB -
blackmagic-v2_0_0-rc1.sum
15 downloads ·
2025年01月08日 22:12:47 +01:00 · 1.2 KiB -
blackmagic-windows-v2_0_0-rc1.zip
108 downloads ·
2025年01月08日 22:12:47 +01:00 · 1.2 MiB
-
Stable Release v1.9.3 Stable
esden released this
2024年01月11日 21:58:54 +01:00 | 3639 commits to main since this releaseWe are happy to announce the v1.9.3 point release of Black Magic Debug.
In this Release
- Fixed a bug in the firmware-side remote protocol initialisation logic that can in certain circumstances lead to the firmware crashing during remote protocol operations [dragonmux]
- Fixed a bug in BMDA’s
platform_buffer_write()for Windows which would make it wrongly skip chunks of the buffer to write and corrupt the data to send [dragonmux] - Fixed the initial USB CDC ACM notification packets being sent from the improper endpoints in the firmware [brainsmoke]
- Fixed a remote protocol UBSAN issue in BMDA [dragonmux]
- Fixed an issue for BMP (native) that in some cases would inhibit USB detach for DFU from being detected by the host [tlyu]
- Fixed a firmware bug in the SWD turnaround handling code that could trigger SWD no-response in reaction to requests on sensitive targets [tlyu]
Contributors to v1.9.3
We have had 3 individuals contribute 9 commits since the v1.9.2 release.
Contributor (Contributions)
dragonmux (5)
tlyu (3)
brainsmoke (1)Sponsors
This project is sponsored in parts by:
- 1BitSquared - Design, Manufacture and distribution of open source embedded hardware
development tools and platforms, as well as educational electronics.
Thank you everyone who buys Black Magic Probes from 1BitSquared directly through our stores or indirectly through Adafruit. The hardware sales allow us to continue supporting the Black Magic Debug project. - All the generous Patrons and GitHub Sponsors supporting esden’s work
- All the generous GitHub Sponsors supporting dragonmux’s work
Downloads
-
Source code (ZIP)
3 downloads
-
Source code (TAR.GZ)
1 download
-
blackmagic-full-source-v1_9_3.tar.gz
100 downloads ·
2024年01月11日 22:04:53 +01:00 · 1.3 MiB -
blackmagic-full-source-v1_9_3.tar.xz
33 downloads ·
2024年01月11日 22:04:54 +01:00 · 856 KiB -
blackmagic-full-source-v1_9_3.zip
130 downloads ·
2024年01月11日 22:04:55 +01:00 · 2.3 MiB -
blackmagic-native-v1_9_3.bin
124 downloads ·
2024年01月11日 22:04:56 +01:00 · 108 KiB -
blackmagic-native-v1_9_3.elf
83 downloads ·
2024年01月11日 22:04:56 +01:00 · 1.4 MiB -
blackmagic-native-v1_9_3.hex
57 downloads ·
2024年01月11日 22:04:57 +01:00 · 287 KiB -
blackmagic-native-v1_9_3.sum
27 downloads ·
2024年01月11日 22:04:58 +01:00 · 210 B
-
Stable Release v1.10.2 Stable
esden released this
2024年01月11日 01:39:14 +01:00 | 2374 commits to main since this releaseWe are happy to announce the v1.10.2 point release of Black Magic Debug.
In this Release
- Fixed a remote protocol UBSAN issue in BMDA [dragonmux]
- Fixed an issue for BMP (native) that in some cases would inhibit USB detach for DFU from being detected by the host [tlyu]
- Fixed a firmware bug in the SWD turnaround handling code that could trigger SWD no-response in reaction to requests on sensitive targets [tlyu]
- Fixed an intermittent issue where during sporadic momentary high current draw from a target powered by BMP, BMP would cut power [esden]
Contributors to v1.10.2
We have had 3 individuals contribute 6 commits since the v1.10.1 release.
Contributor (Contributions)
dragonmux (2)
tlyu (3)
esden (1)Sponsors
This project is sponsored in parts by:
- 1BitSquared - Design, Manufacture and distribution of open source embedded hardware
development tools and platforms, as well as educational electronics.
Thank you everyone who buys Black Magic Probes from 1BitSquared directly through our stores or indirectly through Adafruit. The hardware sales allow us to continue supporting the Black Magic Debug project. - All the generous Patrons and GitHub Sponsors supporting esden’s work
- All the generous GitHub Sponsors supporting dragonmux’s work
Downloads
-
Source code (ZIP)
5 downloads
-
Source code (TAR.GZ)
1 download
-
blackmagic-full-source-v1_10_2.tar.gz
692 downloads ·
2024年01月11日 01:50:54 +01:00 · 1.8 MiB -
blackmagic-full-source-v1_10_2.tar.xz
183 downloads ·
2024年01月11日 01:50:56 +01:00 · 1.2 MiB -
blackmagic-full-source-v1_10_2.zip
994 downloads ·
2024年01月11日 01:50:56 +01:00 · 2.9 MiB -
blackmagic-native-v1_10_2.bin
1,055 downloads ·
2024年01月11日 01:50:57 +01:00 · 120 KiB -
blackmagic-native-v1_10_2.elf
650 downloads ·
2024年01月11日 01:50:58 +01:00 · 1.6 MiB -
blackmagic-native-v1_10_2.hex
369 downloads ·
2024年01月11日 01:50:59 +01:00 · 287 KiB -
blackmagic-native-v1_10_2.sum
149 downloads ·
2024年01月11日 01:50:59 +01:00 · 213 B
-
Stable Release v1.10.1 Stable
esden released this
2023年12月01日 01:41:46 +01:00 | 2380 commits to main since this releaseWe are happy to announce the v1.10.1 point release of Black Magic Debug.
In this Release
- Fixed an issue with the usage text for the
erase_monitor commands [ALTracer] - Fixed an issue with the BMDA J-Link backend which would result in
LIBUSB_ERROR_OVERFLOWand the adaptor becoming functionally crashed [ALTracer] - Fixed a bug in BMDA’s
platform_buffer_write()for Windows which would make it wrongly skip chunks of the buffer to write and corrupt the data to send [dragonmux] - Fixed Semihosting being broken in the firmware due to an incomplete fix after PR #1284 [ALTracer]
- Fixed the initial USB CDC ACM notification packets being sent from the improper endpoints in the firmware [brainsmoke]
- Fixed a memory leak of the AP structure for Tiva-C targets when performing scans for them [dragonmux]
Contributors to v1.10.1
We have had 3 individuals contribute 10 commits since the v1.10.0 release.
Contributor (Contributions)
ALTracer (7)
dragonmux (2)
brainsmoke (1)Sponsors
This project is sponsored in parts by:
- 1BitSquared - Design, Manufacture and distribution of open source embedded hardware
development tools and platforms, as well as educational electronics.
Thank you everyone who buys Black Magic Probes from 1BitSquared directly through our stores or indirectly through Adafruit. The hardware sales allow us to continue supporting the Black Magic Debug project. - All the generous Patrons and GitHub Sponsors supporting esden’s work
- All the generous GitHub Sponsors supporting dragonmux’s work
Downloads
-
Source code (ZIP)
3 downloads
-
Source code (TAR.GZ)
0 downloads
-
blackmagic-full-source-v1_10_1.tar.gz
156 downloads ·
2023年12月01日 01:47:36 +01:00 · 1.8 MiB -
blackmagic-full-source-v1_10_1.tar.xz
47 downloads ·
2023年12月01日 01:47:38 +01:00 · 1.2 MiB -
blackmagic-full-source-v1_10_1.zip
152 downloads ·
2023年12月01日 01:47:39 +01:00 · 2.9 MiB -
blackmagic-native-v1_10_1.bin
140 downloads ·
2023年12月01日 01:47:40 +01:00 · 119 KiB -
blackmagic-native-v1_10_1.elf
97 downloads ·
2023年12月01日 01:47:40 +01:00 · 1.6 MiB -
blackmagic-native-v1_10_1.hex
71 downloads ·
2023年12月01日 01:47:41 +01:00 · 287 KiB -
blackmagic-native-v1_10_1.sum
39 downloads ·
2023年12月01日 01:47:42 +01:00 · 213 B
- Fixed an issue with the usage text for the
-
Stable Release v1.10.0 Stable
esden released this
2023年10月29日 02:09:36 +02:00 | 2390 commits to main since this releaseWe are happy to announce the v1.10.0 release of Black Magic Debug. This will be the final minor release of the v1 series.
Here are some of the highlights:
- Implemented support for talking with SPI Flash directly
- The firmware now automatically binds drivers for the Trace and DFU interfaces on Windows
- Target power now has soft-start on native hardware v2.3+ to address potential brown out. This feature was also backported to all other native BMP hardware that has a digital target power control to remove power rail overshoot.
- And a bunch of newly supported targets:
- MindMotion MM32
- ST Micro STM32WB1X
- GigaDevice GD32F4
- NXP LPC43x0
- NXP LPC55
- ST Micro STM32C0xx
- NXP LPC40
- NXP/Freescale i.MXRT
- GigaDevice GD32F2
- GigaDevice GD32E5
- ST Micro STM32H5
- TI MSP432E4
- HDSC HD32L110
- Arterytek AT32F435
- ST Micro STM32U5
- Nordic Semi nRF91
- New remote protocol support for accessing SPI devices via the companion tool bmpflash
For more details please refer to the ChangeLog down below.
ChangeLog v1.10.0
Core Changes
- Handle continue-with-signal messages from GDB [zyp]
- Restructured the GDB main loop from blocking to polling [xobs]
- Cleaned up and fixed some style issues in the RTT code [dragonmux]
- Refactored out the JEP-106 manufacturer codes into their own header [dragonmux]
- Improved the GDB register API nomenclature and organisation [dragonmux]
- Fixed some formatting issues with ternaries [dragonmux]
- Improved the correctness of JTAG bitbanging due to the generation of setup-and-hold violations upsetting RISC-V targets [dragonmux]
- Implemented automatic sizing of the Flash write buffers for targets [perigoso]
- Fixes for the setjmp header used under Windows in the exception code [sidprice]
- Restore the old GDB detach behaviour from pre-v1.8 as the auto-reattach-on-connect behaviour was breaking certain debug integrations [tlyu]
- Fixed some issues that caused several nasty linker warnings under GCC 12 [dragonmux]
- Implemented JTAG IR quirk handling to deal with parts whose IR lengths cannot be simply detected [dragonmux]
- Fixed a regression in the semihosting implementation caught by koendv [dragonmux]
- Round up reads in the generic CRC32 implementation to the nearest multiple of 4 [zyp]
- Fixed a regression in the JTAG→SWD sequence code caused by generating one too few cycles [dragonmux]
- Fixed part of how JTAG scan implements IR lengths handling [dragonmux]
- Improved the debug logging subsystem and introduced error and protocol debug levels [dragonmux]
- Fixed an issue where running
loadfollowed immediately bykillfrom GDB would result in a crash [dragonmux] - Added a parameter to
mon resetthat allows specification of the pulse length [silbe] - Removed the JTAG scan IR lengths mechanism [dragonmux]
- Unified the help syntax used in
mon help[silbe] - Replaced all usage of
strtolwithstrtoulto help reduce Flash usage [ALTracer] - Switched to the reentrant
strtok_rfromstrtokto fix a correctness issue and reduce Flash usage [ALTracer] - Implemented the firmware side of a new SPI remote protocol [dragonmux]
- Implemented Microsoft OS Descriptors support and provided driver binding descriptors for the Trace and DFU interfaces [dragonmux]
- Improved connect-under-reset handling reliability [jelson/dragonmux]
- Reworked the JTAG bitbanging with-delay routines to solve a bug in how they work [dragonmux]
- Decoupled the general.h and platform.h headers to reduce build churn for low performance build hosts [ALTracer]
- Increased the SysTick frequency from 100Hz to 1kHz in the firmware [ALTracer]
- Refactored the integer-only stdio definitions for the firmware [ALTracer]
- Implemented Flash state tracking for targets that need more complicated handling [dragonmux]
- Various fixes for type mistakes, missing integer suffixes and debug level usage [perigoso]
- Fixed a regression which caused SWD to hang if configured for max speed [dragonmux]
- Fixed some type mismatches in the CRC32 implementation [dragonmux]
- Fixed an issue with the fake threads implementation that can hang certain IDEs [dragonmux]
- Improved the organisation of the remote protocol packet handling logic [dragonmux]
- Fixed a pile of
-fanalzyerlints highlighting bugs in target code [dragonmux] - Fixed some return types issues in the scan logic and switched
swdp_scan→swd_scan(with a fallback) as part of phasing out the "SWDP" nomenclature [perigoso] - Fixed a missing include for
stdbool.hin the GDB packet code [xobs] - Improved the safety around target power by implementing detection of backfeeding and cutting power when this is detected [dragonmux]
- Improved the wording of the documentation around
vMustReplyEmptypackets [perigoso] - Reduced the Flash usage of the JTAG devices table [dragonmux]
- Fixed a race condition and resulting
NULLdereference in the morse code subsystem [jcamdr] - Fixed
-Wpedanticwarnings about forward referencing of enums [perigoso] - Fixed
-Wpedanticwarnings about empty initialiser lists [perigoso] - Fixed
-Wpedanticwarnings about returns in functions that returnvoid[perigoso] - Fixed several warnings about using characters for array subscripts (
-Wchar-subscripts) [perigoso] - Fixed several warnings about local variable shaddowing (
-Wshadow=local) [perigoso] - Fixed several warnings about bad function casts (
-Wbad-function-cast) [perigoso] - Fixed several string formatting warnings [perigoso]
- Fixed
-Wpedanticwarnings about using range expressions in switch-case and array definitions [perigoso] - Removed a dangling extern variable declaration that is unused in the code base [perigoso]
- Fixed some missing braces on array of structure initializers [zyp]
- Fixed
-Wpedanticwarnings about binary constants [perigoso] - Consolidated the alignment macros originally defined for ADIv5 and moved them into their own header [perigoso]
- Fixed RTT hanging the firmware when the aux serial port is not being monitored on the host [koendv]
- Fixed a bug in the firmware-side remote protocol initialisation logic that can in certain circumstances lead to the firmware crashing during remote protocol operations [dragonmux]
- Updated documentation and comments to reflect the cleaned up and improved SWD support nomenclature [perigoso]
- Cleaned up in
gdb_main_loop()and added some documentation to thetarget_halt_reasonenumeration [dragonmux]
Build System Changes
- Don’t delete version.h when building from an extracted archive [esden]
- Fixed Git detection when using BMD as a Git submodule [esden]
Script/Utility Changes
- Fixed a section heading issue in the contribution guidelines [SludgeGirl]
- Updated the clang-format pre-commit hook to v16.0.2 [lenvm]
- Added clang-tidy configuration for identifier case checking [sidprice]
Project CI Changes
- Implemented CI for Windows [dragonmux]
- Updated the main build CI to use the GitHub Actions
actions/checkout@v3action [gemesa] - Spelling, punctuation and grammar fixes in the GHA configs [gemesa]
- Updated the lint CI to use the GHA
actions/checkout@v3andpre-commit/action@v3.0.0actions [perigoso] - Updated the ARM compilers used in the PR workflows [esden]
- Restricted the CI flows with
ENABLE_RTT=1set due to the Flash usage limitations problems [dragonmux]
ARM (ADIv5) Changes
- Cortex-A: Fixes and improvements for Cortex-R5 support
- ARM Debug: De-duplicated parts of the ADIv5 implementation and re-introduced the SWD interface header/structure [dragonmux]
- ARM Debug: Added support for the Chinese STAR-MC1 core type [koendv]
- ARM Debug: Added the Nordic Trace Buffer (NTB) to the component identification table [dragonmux]
- ARM Debug: Fixed a whole pile of JTAG protocol regressions (see #1389 for details) [dragonmux]
- ARM Debug: Improved Cortex-M halt/resume correctness [dragonmux]
- ARM Debug: Fixed an issue with the Cortex-M DWT mask calculation [silbe]
- ARM Debug: Correctness fixes for AP handling, implementing AP type dispatch, TrustZone handling and some multi-drop noise [dragonmux]
- ARM Debug: Reworked early DP bringup to improve correctness and reduce code bloat [perigoso]
- ARM Debug: Begun separating out SWD multi-drop handling and untangling it [perigoso]
- ARM Debug: Improved the reliability of debug bringup to handle parts like the Ambiq Apollo 3 which get upset when debug resetting them too much [dragonmux]
- ARM Debug: Improved how JTAG DPv0 ID codes are handled to correctly identify more parts using them [dragonmux]
- ARM Debug: Refactored the Cortex handling to pull out commonality into a new implementation file ready for proper Cortex-R support [dragonmux]
- ARM Debug: Improved the Cortex-A support and its ability to function on the same AP as a Cortex-M core [dragonmux]
- ARM Debug: Improved handling of the OS Lock registers on Cortex-A targets to handle if the lock gets set between resumption and the next halt [dragonmux]
Target Changes
- stm32l4/stm32wb: Fixed the Flash erase error handling and detection [DrZlo13]
- lpc43x0: Implemented external Flash support [dragonmux]
- nrf51: Fixed handling for the recovery access port core register faking to allow attaching again [TheyCallMeNobody]
- ch32f1: Fixed
loadhandling with CH32F103C8T6 parts [lasutek] - ARM Cortex-M: Fixed a missing call to
sam3x_probe()[AnantaSrikar] - ch32f1: Improved support for CH32F103C8T6 parts [lasutek]
- stm32g0: Implemented support for STM32C0 option bytes erase [fabalthazar]
- stm32f1: Improved the STM32F1 option bytes handling correctness [dragonmux]
- lmi: Fixed TM4C129 identifications [dragonmux]
- lpc: Updated Flash registration to conform to the new APIs [dragonmux]
- sam3x: Fixed an issue that had Flash programming broken due to nRST interactions [dragonmux]
- stm32l0: Provided an implementation for mass erase for STM32L0 and STM32L1 [dragonmux]
- lpc55xx: Fixed a memory leak in
lpc55x_add_flash()[francois-berder] - target: Fixed an out of bounds array access in
jtag_scan()[francois-berder] - renesas: General documentation and cleanup [perigoso]
- rp: Fixed the Flash erase and write reliability issues caused by the ROM table calls hanging under certain circumstances [dragonmux]
- lpc55xx: Implemented support for LPC551x and LPC55S1x devices [dragonmux]
- lpc: Improved the correctness of the LPC IAP call mechanism and fixed some undefined behaviour [dragonmux]
- imxrt: Corrected some mistakes in debug formatting specifiers [xobs]
- ARM Cortex-M: Avoid doing long (64-bit) division in the HostIO implementation [ALTracer]
- imxrt: Fixed an error caused by an unused variable with
ENABLE_DEBUG=1[ALTracer] - stm32h7: Fixed a mass erase status check issue on the second Flash bank [bugobliterator]
- stm32h7: Improved support for the series [dragonmux]
- lpc546xx: Reduced Flash usage by refactoring the device identification code [ALTracer]
- target: De-duplicate various message strings to improve the Flash usage footprint [ALTracer]
- imxrt: Allow the definition and use of the
boot_modevariable for Farpatch [xobs] - lpc43xx: Refactored the target SRAM handling code to reduce Flash usage [ALTracer]
- lpc43x0: Fixed an ASAN crash in the LPC43x0 Flash detection logic due to it mishandling failure [dragonmux]
- stm32l4: Fixed the RAM sizing being in kibibytes but not being multiplied up properly to bytes [jcamdr]
- lpc55xx: Implemented support for the LPC55S69 [UweBonnes]
- ARM Cortex-M: Implemented a timeout for release from reset for parts that have non-functional nRST [UweBonnes]
- samx5x: Fixed an assumption that block size == Flash region lock size which broke Flash write on these parts [Qyriad/ktemkin]
- imxrt: Added suport for variants other than the i.MXRT1060 [tannewt]
- sfdp: Fixed handling of old basic parameter tables which lack the field for the page program size [tannewt]
- stm32mp15x: Fixed the Cortex-A cores inducing a hang on scan and probe [ALTracer]
- lpc40xx: Fixed a crash during probe of unrelated Cortex-M4 targets that have FPUs [desertsagebrush]
- lmi: Introduced a workaround for buggy Tiva-C devices that result in the device answering for all AP numbers, leading to 256 target entries for a device that should have just one [desertsagebrush]
Targets Added
- MindMotion MM32 [koendv]
- ST Micro STM32WB1X [grevaillot]
- GigaDevice GD32F4 [via]
- NXP LPC43x0 [dragonmux]
- ST Micro STM32C011 and STM32C031 [djix123]
- NXP LPC55 [dragonmux/UweBonnes/TomCrypto]
- NXP LPC40 [zyp]
- NXP i.MXRT [dragonmux]
- GigaDevice GD32F2 [iysheng]
- GigaDevice GD32E5 [ALTracer]
- ST Micro STM32H5 [dragonmux]
- TI MSP432E4 [neutered]
- HDSC HD32L110 [vesim987]
- Arterytek AT32F435 [ALTracer]
- ST Micro STM32U5 [jcamdr]
- Nordic Semi nRF91 [zyp]
- ST Micro STM32MP15x (Cortex-M4 coprocessor core only) [ALTracer]
Host Platform Changes
Added
- Support for the ST-Link v3 [jamesturton/stoyan-shopov/UweBonnes]
- Implemented support for the USB CDC command
GET_LINE_CODING[dragonmux] - Add error LED feedback for USB enumeration state [krogozinski]
Common
- Enable semihosting output redirection on all firmware platforms [koendv]
- Restructured the platforms folder so the
stm32andtm4ccommon components are in thecommonarea [lenvm]
STM32
- Fixed an off-by-one issue in the STM32F4 DFU bootloader implementation which broke erase [Electronshik]
- Fixed a build issue for platforms that allow tpwr control but don’t define
adc_start_conversion_direct()in libopencm3 [lenvm]
Black Magic Probe (aka "Native") host
- Fixed some pinout and clarity issues with nRST and TPWR [dragonmux]
- Implemented target power soft-start for hw1+ (hardware v2.0a+) [dragonmux]
- Reduced the Flash usage caused by the new soft-start feature [dragonmux]
ST-Link host
- Fixed the pinout for the nRST pin to handle clones using PB6/7 instead of PB0/1 [silbe]
- Added pinout documentation to the platform README.md [dragonmux]
- Implemented support for forcibly detecting a dongle as a clone device to get the right hardware version behaviour [slibe]
F4 Discovery host
- Added pin definition documentation for the UART to the README [franzflasch]
Blackpillv2 host (now blackpill-f401cc, blackpill-f401ce and blackpill-f411ce, aka "The Black Pill hosts")
- Implemented support for target power voltage sensing [lenvm]
- Redid the pinout for the platform to rationalise it - see #1465 for details on the new pinout [lenvm]
- Created an alternative pinout for the platform - see #1467 for details on this alternative pinout [lenvm]
- Restructured and renamed the platform, adding support for all current Blackpill variants [lenvm]
- Fixed a typo in the platform README [lenvm]
- Fixed and improved support and handling for using the in-tree DFU bootloader and the boot ROM DFU bootloader on the platform [ALTracer]
- Fixed the tpwr control implementation for the platform being inverted ("enable" meant off, "disable" meant on) [lenvm]
- Implemented the platform backend for support for the SPI remote protocol [ALTracer]
- Fixed an issue with the way the idle LED was being driven [lenvm]
Black Magic Debug App (aka "PC Host")
- Fixed how target selection and memory access works on the CMSIS-DAP backend [dmsc]
- Implemented a structure for holding information about discovered probes [dragonmux]
- Use the correct header for memory allocation functions in the probe information implementation [tlyu]
- Fixed a include path problem with libusb [sidprice]
- Fixed the implementation of target power control [sidprice]
- Dead code removal in
cl_execute()[sidprice] - Updated and modernised the CMSIS-DAP implementation and reorganised [dragonmux]
- Fixed the FTDI implementation and a discovery issue with Tigard [dragonmux]
- Addressed several naming inconsistencies in the BMP remote protocol SWD implementation [dragonmux]
- Implemented support for compiling on cygwin [hydra]
- Reimplemented the BMP remote protocol and implemented proper protocol feedbacks for older versions of the protocol [dragonmux]
- Fixed an issue in the ST-Link backend which results in a crash when trying to read a single byte from a target [dragonmux]
- Fixed building on macOS [lenvm]
- Fixed handling for selecting between multiple identical CMSIS-DAP devices [zyp]
- Simplified the ST-Link and J-Link USB access code [zyp]
- Fixed an regression in the remote protocol write length alignment calculations [dragonmux]
- Rewrote the J-Link backend, fixing several ASAN crashes and lack of error handling [dragonmux]
- Improved the consistency of the backends and partially harmonised the nomoenclature used [dragonmux]
- Implemented a CMSIS-DAP quirks system and version check for ORBTrace due to older gateware having broken JTAG multi-TAP [dragonmux]
- Fixed CMSIS-DAP version identification when the version string has a ‘v’ suffix [dragonmux]
- Fixed an issue with how debug output is implemented on Windows that results in garbage being displayed for strings [dragonmux]
- Rebuild the probe detection and scan engine [sidprice]
- Implemented a libftdi-like shim layer for FTD2xx on Windows to allow native access to FTDI devices [sidprice]
- Fixed a long-standing issue with original ST-Link v2 serial number readout being broken [dragonmux]
- Fixed a regression where devices implementing CMSIS-DAP v2 would have their v2 interfaces be ignored [dragonmux]
- Implemented a workaround for Darwin (macOS, iOS) not implementing the Unicode character types (uchar.h) header [amyspark]
- Fixed an issue with CMSIS-DAP transfer failure handling that lead to some targets getting upset [dragonmux]
- Implemented target power handling for the J-Link backend and cleaned up in the backend [perigoso]
- Reworked the J-Link backend’s handling of the adaptor hardware version code [perigoso]
- Cleaned up after the implementation of the new probe discovery engine [dragonmux]
- Fixed a regression in the J-Link backend’s handling of frequency setting [dragonmux]
- Fixed a bug in the CMSIS-DAP implementation’s handling of WAIT which resulted in FAULT being generated on some targets and scan failing [dragonmux]
- Refactored and improved handling of VID:PID wildcards for J-Links [perigoso]
- Rewrote the ST-Link backend to fix how multi-drop is handled and solve several crashes [dragonmux]
- Fixed a regression in the CMSIS-DAP backend for v1 (HID) interfaces that broke writes with long buffers [projectgus]
- Added support for J-Link v5 adaptors by honouring the capability bits of J-Link devices [ALTracer]
- Fixed a memory leak and handling issue with FTDI adaptors in the probe detection and scan engine [lethalbit]
- Improved the clarity and documentation of the FTDI interface state structure and usage [dragonmux]
- Fixed a bug in ADIv5 access decoding for the protocol log level that caused AP accesses to always be reported as being for AP1 [dragonmux]
Contributors to v1.10.0
We have had 43 individuals contribute 1265 commits since the v1.9.2 release.
Contributor (Contributions)
dragonmux (896)
perigoso (117)
ALTracer (41)
lenvm (39)
Sid Price (37)
Uwe Bonnes (20)
James Turton (20)
Sean Cross (13)
Vegard Storheil Eriksen (10)
Scott Shawcroft (6)
Sascha Silbe (6)
Koen De Vleeschauwer (6)
Jean-Christian de Rivaz (6)
Maciej 'vesim' Kuliński (5)
Sage Myers (3)
Lars Sundström (3)
TheyCallMeNobody (2)
Stoyan Shopov (2)
Piotr Esden-Tempski (2)
Gareth McMullin (2)
Francois Berder (2)
dpf (2)
Daniel Serpell (2)
Andras Gemes (2)
Amy (2)
Aki Van Ness (2)
Vitaliy (1)
Thomas Bénéteau (1)
Taylor Yu (1)
Sludge (1)
Siddharth Bharat Purohit (1)
SG (1)
Qyriad (1)
Matthew Via (1)
Kamil Rogozinski (1)
Jonathan Giles (1)
Jeremy Elson (1)
iysheng (1)
Guillaume Revaillot (1)
franzflasch (1)
Fabrice Prost-Boucle (1)
Angus Gratton (1)
AnantaSrikar (1)Sponsors
This project is sponsored in parts by:
- 1BitSquared - Design, Manufacture and distribution of open source embedded hardware development tools and platforms, as well as educational electronics. Thank you everyone who buys Black Magic Probes from 1BitSquared directly through our stores or indirectly through Adafruit. The hardware sales allow us to continue supporting the Black Magic Debug project.
- All the generous Patrons and GitHub Sponsors supporting esden’s work
- All the generous GitHub Sponsors supporting dragonmux’s work
Downloads
-
Source code (ZIP)
4 downloads
-
Source code (TAR.GZ)
0 downloads
-
blackmagic-full-source-v1_10_0.tar.gz
89 downloads ·
2023年10月29日 02:22:13 +02:00 · 1.8 MiB -
blackmagic-full-source-v1_10_0.tar.xz
39 downloads ·
2023年10月29日 02:22:15 +02:00 · 1.2 MiB -
blackmagic-full-source-v1_10_0.zip
113 downloads ·
2023年10月29日 02:22:16 +02:00 · 2.9 MiB -
blackmagic-native-v1_10_0.bin
151 downloads ·
2023年10月29日 02:22:17 +02:00 · 119 KiB -
blackmagic-native-v1_10_0.elf
98 downloads ·
2023年10月29日 02:22:17 +02:00 · 1.6 MiB -
blackmagic-native-v1_10_0.hex
59 downloads ·
2023年10月29日 02:22:18 +02:00 · 287 KiB -
blackmagic-native-v1_10_0.sum
37 downloads ·
2023年10月29日 02:22:18 +02:00 · 213 B
-
Relase Candidate V1.10.0-rc1 Pre-release
esden released this
2023年10月11日 22:22:07 +02:00 | 2395 commits to main since this releaseWe are happy to announce the second v1.10.0 release candidate of Black Magic Debug. This will be the final minor release of the v1 series.
In this release
- Fixed RTT hanging the firmware when the aux serial port is not being monitored on the host [koendv]
- Fixed a bug in the firmware-side remote protocol initialisation logic that can in certain circumstances lead to the firmware crashing during remote protocol operations [dragonmux]
- Updated documentation and comments to reflect the cleaned up and improved SWD support nomenclature [perigoso]
- Improved the Cortex-A support and its ability to function on the same AP as a Cortex-M core [dragonmux]
- Improved handling of the OS Lock registers on Cortex-A targets to handle if the lock gets set between resumption and the next halt [dragonmux]
- Added suport for variants other than the i.MXRT1060 [tannewt]
- Fixed handling of old SFDP basic parameter tables which lack the field for the page program size [tannewt]
- Fixed the Cortex-A cores on the STM32MP15x inducing a hang on scan and probe [ALTracer]
- Fixed a crash in the LPC40xx probe routine during probe of unrelated Cortex-M4 targets that have FPUs [desertsagebrush]
- Introduced a workaround for buggy Tiva-C devices that result in the device answering for all AP numbers, leading to 256 target entries for a device that should have just one [desertsagebrush]
- Added support for ST Micro’s STM32MP15x SoCs (Cortex-M4 coprocessor core only) [ALTracer]
- Reduced the Flash usage caused by the new soft-start feature on the native platform [dragonmux]
- Added pinout documentation to the ST-Link platform README.md [dragonmux]
- Improved the clarity and documentation of the FTDI interface state structure and usage [dragonmux]
- Fixed a bug in BMDA’s ADIv5 access decoding for the protocol log level that caused AP accesses to always be reported as being for AP1 [dragonmux]
Contributors to v1.10.0-rc1
We have had 6 individuals contribute 52 commits since the v1.10.0-rc0 release.
Contributor (Contributions)
dragonmux (22)
ALTracer (13)
Scott Shawcroft (6)
perigoso (6)
Sage Myers (3)
Koen De Vleeschauwer (2)Sponsors
This project is sponsored in parts by:
- 1BitSquared - Design, Manufacture and distribution of open source embedded hardware development tools and platforms, as well as educational electronics. Thank you everyone who buys Black Magic Probes from 1BitSquared directly through our stores or indirectly through Adafruit. The hardware sales allow us to continue supporting the Black Magic Debug project.
- All the generous Patrons and GitHub Sponsors supporting esden’s work
- All the generous GitHub Sponsors supporting dragonmux’s work
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
0 downloads
-
blackmagic-full-source-v1_10_0-rc1.tar.gz
25 downloads ·
2023年10月11日 22:30:34 +02:00 · 1.8 MiB -
blackmagic-full-source-v1_10_0-rc1.tar.xz
19 downloads ·
2023年10月11日 22:30:36 +02:00 · 1.2 MiB -
blackmagic-full-source-v1_10_0-rc1.zip
36 downloads ·
2023年10月11日 22:30:37 +02:00 · 2.9 MiB -
blackmagic-native-v1_10_0-rc1.bin
40 downloads ·
2023年10月11日 22:30:38 +02:00 · 119 KiB -
blackmagic-native-v1_10_0-rc1.elf
39 downloads ·
2023年10月11日 22:30:38 +02:00 · 1.6 MiB -
blackmagic-native-v1_10_0-rc1.hex
28 downloads ·
2023年10月11日 22:30:39 +02:00 · 287 KiB -
blackmagic-native-v1_10_0-rc1.sum
22 downloads ·
2023年10月11日 22:30:40 +02:00 · 225 B
-
Relase Candidate V1.10.0-rc0 Pre-release
esden released this
2023年09月18日 01:28:29 +02:00 | 2447 commits to main since this releaseWe are happy to announce the first v1.10.0 release candidate of Black Magic Debug. This will be the final minor release of the v1 series.
Here are some of the highlights:
- Implemented support for talking with SPI Flash directly
- The firmware now automatically binds drivers for the Trace and DFU interfaces on Windows
- And a bunch of newly supported targets:
- MindMotion MM32
- ST Micro STM32WB1X
- GigaDevice GD32F4
- NXP LPC43x0
- NXP LPC55
- ST Micro STM32C0xx
- NXP LPC40
- NXP/Freescale i.MXRT
- GigaDevice GD32F2
- GigaDevice GD32E5
- ST Micro STM32H5
- TI MSP432E4
- HDSC HD32L110
- Arterytek AT32F435
- ST Micro STM32U5
- Nordic Semi nRF91
- Target power now has soft-start on native hardware v2.3+ to address potential brown out. This feature was also backported to all other native BMP hardware that has a digital target power control to remove power rail overshoot. For more detail about this change refer to V1.9.2 release notes
For more details please refer to the ChangeLog down below.
ChangeLog v1.10.0
Core Changes
- Handle continue-with-signal messages from GDB [zyp]
- Restructured the GDB main loop from blocking to polling [xobs]
- Cleaned up and fixed some style issues in the RTT code [dragonmux]
- Refactored out the JEP-106 manufacturer codes into their own header [dragonmux]
- Improved the GDB register API nomenclature and organisation [dragonmux]
- Fixed some formatting issues with ternaries [dragonmux]
- Improved the correctness of JTAG bitbanging due to the generation of setup-and-hold violations upsetting RISC-V targets [dragonmux]
- Implemented automatic sizing of the Flash write buffers for targets [perigoso]
- Fixes for the setjmp header used under Windows in the exception code [sidprice]
- Restore the old GDB detach behaviour from pre-v1.8 as the auto-reattach-on-connect behaviour was breaking certain debug integrations [tlyu]
- Fixed some issues that caused several nasty linker warnings under GCC 12 [dragonmux]
- Implemented JTAG IR quirk handling to deal with parts whose IR lengths cannot be simply detected [dragonmux]
- Fixed a regression in the semihosting implementation caught by koendv [dragonmux]
- Round up reads in the generic CRC32 implementation to the nearest multiple of 4 [zyp]
- Fixed a regression in the JTAG→SWD sequence code caused by generating one too few cycles [dragonmux]
- Fixed part of how JTAG scan implements IR lengths handling [dragonmux]
- Improved the debug logging subsystem and introduced error and protocol debug levels [dragonmux]
- Fixed an issue where running
loadfollowed immediately bykillfrom GDB would result in a crash [dragonmux] - Added a parameter to
mon resetthat allows specification of the pulse length [silbe] - Removed the JTAG scan IR lengths mechanism [dragonmux]
- Unified the help syntax used in
mon help[silbe] - Replaced all usage of
strtolwithstrtoulto help reduce Flash usage [ALTracer] - Switched to the reentrant
strtok_rfromstrtokto fix a correctness issue and reduce Flash usage [ALTracer] - Implemented the firmware side of a new SPI remote protocol [dragonmux]
- Implemented Microsoft OS Descriptors support and provided driver binding descriptors for the Trace and DFU interfaces [dragonmux]
- Improved connect-under-reset handling reliability [jelson/dragonmux]
- Reworked the JTAG bitbanging with-delay routines to solve a bug in how they work [dragonmux]
- Decoupled the general.h and platform.h headers to reduce build churn for low performance build hosts [ALTracer]
- Increased the SysTick frequency from 100Hz to 1kHz in the firmware [ALTracer]
- Refactored the integer-only stdio definitions for the firmware [ALTracer]
- Implemented Flash state tracking for targets that need more complicated handling [dragonmux]
- Various fixes for type mistakes, missing integer suffixes and debug level usage [perigoso]
- Fixed a regression which caused SWD to hang if configured for max speed [dragonmux]
- Fixed some type mismatches in the CRC32 implementation [dragonmux]
- Fixed an issue with the fake threads implementation that can hang certain IDEs [dragonmux]
- Improved the organisation of the remote protocol packet handling logic [dragonmux]
- Fixed a pile of
-fanalzyerlints highlighting bugs in target code [dragonmux] - Fixed some return types issues in the scan logic and switched
swdp_scan→swd_scan(with a fallback) as part of phasing out the "SWDP" nomenclature [perigoso] - Fixed a missing include for
stdbool.hin the GDB packet code [xobs] - Improved the safety around target power by implementing detection of backfeeding and cutting power when this is detected [dragonmux]
- Improved the wording of the documentation around
vMustReplyEmptypackets [perigoso] - Reduced the Flash usage of the JTAG devices table [dragonmux]
- Fixed a race condition and resulting
NULLdereference in the morse code subsystem [jcamdr] - Fixed
-Wpedanticwarnings about forward referencing of enums [perigoso] - Fixed
-Wpedanticwarnings about empty initialiser lists [perigoso] - Fixed
-Wpedanticwarnings about returns in functions that returnvoid[perigoso] - Fixed several warnings about using characters for array subscripts (
-Wchar-subscripts) [perigoso] - Fixed several warnings about local variable shaddowing (
-Wshadow=local) [perigoso] - Fixed several warnings about bad function casts (
-Wbad-function-cast) [perigoso] - Fixed several string formatting warnings [perigoso]
- Fixed
-Wpedanticwarnings about using range expressions in switch-case and array definitions [perigoso] - Removed a dangling extern variable declaration that is unused in the code base [perigoso]
- Fixed some missing braces on array of structure initializers [zyp]
- Fixed
-Wpedanticwarnings about binary constants [perigoso] - Consolidated the alignment macros originally defined for ADIv5 and moved them into their own header [perigoso]
Build System Changes
- Don’t delete version.h when building from an extracted archive [esden]
- Fixed Git detection when using BMD as a Git submodule [esden]
Script/Utility Changes
- Fixed a section heading issue in the contribution guidelines [SludgeGirl]
- Updated the clang-format pre-commit hook to v16.0.2 [lenvm]
- Added clang-tidy configuration for identifier case checking [sidprice]
Project CI Changes
- Implemented CI for Windows [dragonmux]
- Updated the main build CI to use the GitHub Actions
actions/checkout@v3action [gemesa] - Spelling, punctuation and grammar fixes in the GHA configs [gemesa]
- Updated the lint CI to use the GHA
actions/checkout@v3andpre-commit/action@v3.0.0actions [perigoso] - Updated the ARM compilers used in the PR workflows [esden]
- Restricted the CI flows with
ENABLE_RTT=1set due to the Flash usage limitations problems [dragonmux]
ARM (ADIv5) Changes
- Cortex-A: Fixes and improvements for Cortex-R5 support
- ARM Debug: De-duplicated parts of the ADIv5 implementation and re-introduced the SWD interface header/structure [dragonmux]
- ARM Debug: Added support for the Chinese STAR-MC1 core type [koendv]
- ARM Debug: Added the Nordic Trace Buffer (NTB) to the component identification table [dragonmux]
- ARM Debug: Fixed a whole pile of JTAG protocol regressions (see #1389 for details) [dragonmux]
- ARM Debug: Improved Cortex-M halt/resume correctness [dragonmux]
- ARM Debug: Fixed an issue with the Cortex-M DWT mask calculation [silbe]
- ARM Debug: Correctness fixes for AP handling, implementing AP type dispatch, TrustZone handling and some multi-drop noise [dragonmux]
- ARM Debug: Reworked early DP bringup to improve correctness and reduce code bloat [perigoso]
- ARM Debug: Begun seperating out SWD multi-drop handling and untangling it [perigoso]
- ARM Debug: Improved the reliability of debug bringup to handle parts like the Ambiq Apollo 3 which get upset when debug resetting them too much [dragonmux]
- ARM Debug: Improved how JTAG DPv0 ID codes are handled to correctly identify more parts using them [dragonmux]
- ARM Debug: Refactored the Cortex handling to pull out commonality into a new implementation file ready for proper Cortex-R support [dragonmux]
Target Changes
- stm32l4/stm32wb: Fixed the Flash erase error handling and detection [DrZlo13]
- lpc43x0: Implemented external Flash support [dragonmux]
- nrf51: Fixed handling for the recovery access port core register faking to allow attaching again [TheyCallMeNobody]
- ch32f1: Fixed
loadhandling with CH32F103C8T6 parts [lasutek] - ARM Cortex-M: Fixed a missing call to
sam3x_probe()[AnantaSrikar] - ch32f1: Improved support for CH32F103C8T6 parts [lasutek]
- stm32g0: Implemented support for STM32C0 option bytes erase [fabalthazar]
- stm32f1: Improved the STM32F1 option bytes handling correctness [dragonmux]
- lmi: Fixed TM4C129 identifications [dragonmux]
- lpc: Updated Flash registration to conform to the new APIs [dragonmux]
- sam3x: Fixed an issue that had Flash programming broken due to nRST interactions [dragonmux]
- stm32l0: Provided an implementation for mass erase for STM32L0 and STM32L1 [dragonmux]
- lpc55xx: Fixed a memory leak in
lpc55x_add_flash()[francois-berder] - target: Fixed an out of bounds array access in
jtag_scan()[francois-berder] - renesas: General documentation and cleanup [perigoso]
- rp: Fixed the Flash erase and write reliability issues caused by the ROM table calls hanging under certain circumstances [dragonmux]
- lpc55xx: Implemented support for LPC551x and LPC55S1x devices [dragonmux]
- lpc: Improved the correctness of the LPC IAP call mechanism and fixed some undefined behaviour [dragonmux]
- imxrt: Corrected some mistakes in debug formatting specifiers [xobs]
- ARM Cortex-M: Avoid doing long (64-bit) division in the HostIO implementation [ALTracer]
- imxrt: Fixed an error caused by an unused variable with
ENABLE_DEBUG=1[ALTracer] - stm32h7: Fixed a mass erase status check issue on the second Flash bank [bugobliterator]
- stm32h7: Improved support for the series [dragonmux]
- lpc546xx: Reduced Flash usage by refactoring the device identification code [ALTracer]
- target: De-duplicate various message strings to improve the Flash usage footprint [ALTracer]
- imxrt: Allow the definition and use of the
boot_modevariable for Farpatch [xobs] - lpc43xx: Refactored the target SRAM handling code to reduce Flash usage [ALTracer]
- lpc43x0: Fixed an ASAN crash in the LPC43x0 Flash detection logic due to it mishandling failure [dragonmux]
- stm32l4: Fixed the RAM sizing being in kibibytes but not being multiplied up properly to bytes [jcamdr]
- lpc55xx: Implemented support for the LPC55S69 [UweBonnes]
- ARM Cortex-M: Implemented a timeout for release from reset for parts that have non-functional nRST [UweBonnes]
- samx5x: Fixed an assumption that block size == Flash region lock size which broke Flash write on these parts [Qyriad/ktemkin]
Targets Added
- MindMotion MM32 [koendv]
- ST Micro STM32WB1X [grevaillot]
- GigaDevice GD32F4 [via]
- NXP LPC43x0 [dragonmux]
- ST Micro STM32C011 and STM32C031 [djix123]
- NXP LPC55 [dragonmux/UweBonnes/TomCrypto]
- NXP LPC40 [zyp]
- NXP i.MXRT [dragonmux]
- GigaDevice GD32F2 [iysheng]
- GigaDevice GD32E5 [ALTracer]
- ST Micro STM32H5 [dragonmux]
- TI MSP432E4 [neutered]
- HDSC HD32L110 [vesim987]
- Arterytek AT32F435 [ALTracer]
- ST Micro STM32U5 [jcamdr]
- Nordic Semi nRF91 [zyp]
Host Platform Changes
Added
- Support for the ST-Link v3 [jamesturton/stoyan-shopov/UweBonnes]
- Implemented support for the USB CDC command
GET_LINE_CODING[dragonmux] - Add error LED feedback for USB enumeration state [krogozinski]
Common
- Enable semihosting output redirection on all firmware platforms [koendv]
- Restructured the platforms folder so the
stm32andtm4ccommon components are in thecommonarea [lenvm]
STM32
- Fixed an off-by-one issue in the STM32F4 DFU bootloader implementation which broke erase [Electronshik]
Black Magic Probe (aka "Native") host
- Fixed some pinout and clarity issues with nRST and TPWR [dragonmux]
- Implemented target power soft-start for hw1+ (hardware v2.0a+) [dragonmux]
ST-Link host
- Fixed the pinout for the nRST pin to handle clones using PB6/7 instead of PB0/1 [silbe]
F4 Discovery host
- Added pin definition documentation for the UART to the README [franzflasch]
Blackpillv2 host (now blackpill-f401cc, blackpill-f401ce and blackpill-f411ce, aka "The Blackpill hosts")
- Implemented support for target power voltage sensing [lenvm]
- Redid the pinout for the platform to rationalise it - see #1465 for details on the new pinout [lenvm]
- Created an alternative pinout for the platform - see #1467 for details on this alternative pinout [lenvm]
- Restructured and renamed the platform, adding support for all current Blackpill variants [lenvm]
- Fixed a typo in the platform README [lenvm]
- Fixed and improved support and handling for using the in-tree DFU bootloader and the boot ROM DFU bootloader on the platform [ALTracer]
- Fixed the tpwr control implementation for the platform being inverted ("enable" meant off, "disable" meant on) [lenvm]
- Implemented the platform backend for support for the SPI remote protocol [ALTracer]
Black Magic Debug App (aka "PC Host")
- Fixed how target selection and memory access works on the CMSIS-DAP backend [dmsc]
- Implemented a structure for holding information about discovered probes [dragonmux]
- Use the correct header for memory allocation functions in the probe information implementation [tlyu]
- Fixed a include path problem with libusb [sidprice]
- Fixed the implementation of target power control [sidprice]
- Dead code removal in
cl_execute()[sidprice] - Updated and modernised the CMSIS-DAP implementation and reorganised [dragonmux]
- Fixed the FTDI implementation and a discovery issue with Tigard [dragonmux]
- Addressed several naming inconsistencies in the BMP remote protocol SWD implementation [dragonmux]
- Implemented support for compiling on cygwin [hydra]
- Reimplemented the BMP remote protocol and implemented proper protocol feedbacks for older versions of the protocol [dragonmux]
- Fixed an issue in the ST-Link backend which results in a crash when trying to read a single byte from a target [dragonmux]
- Fixed building on macOS [lenvm]
- Fixed handling for selecting between multiple identical CMSIS-DAP devices [zyp]
- Simplified the ST-Link and J-Link USB access code [zyp]
- Fixed an regression in the remote protocol write length alignment calculations [dragonmux]
- Rewrote the J-Link backend, fixing several ASAN crashes and lack of error handling [dragonmux]
- Improved the consistency of the backends and partially harmonised the nomoenclature used [dragonmux]
- Implemented a CMSIS-DAP quirks system and version check for ORBTrace due to older gateware having broken JTAG multi-TAP [dragonmux]
- Fixed CMSIS-DAP version identification when the version string has a ‘v’ suffix [dragonmux]
- Fixed an issue with how debug output is implemented on Windows that results in garbage being displayed for strings [dragonmux]
- Rebuild the probe detection and scan engine [sidprice]
- Implemented a libftdi-like shim layer for FTD2xx on Windows to allow native access to FTDI devices [sidprice]
- Fixed a long-standing issue with original ST-Link v2 serial number readout being broken [dragonmux]
- Fixed a regression where devices implementing CMSIS-DAP v2 would have their v2 interfaces be ignored [dragonmux]
- Implemented a workaround for Darwin (macOS, iOS) not implementing the Unicode character types (uchar.h) header [amyspark]
- Fixed an issue with CMSIS-DAP transfer failure handling that lead to some targets getting upset [dragonmux]
- Implemented target power handling for the J-Link backend and cleaned up in the backend [perigoso]
- Reworked the J-Link backend’s handling of the adaptor hardware version code [perigoso]
- Cleaned up after the implementation of the new probe discovery engine [dragonmux]
- Fixed a regression in the J-Link backend’s handling of frequency setting [dragonmux]
- Fixed a bug in the CMSIS-DAP implementation’s handling of WAIT which resulted in FAULT being generated on some targets and scan failing [dragonmux]
- Refactored and improved handling of VID:PID wildcards for J-Links [perigoso]
- Rewrote the ST-Link backend to fix how multi-drop is handled and solve several crashes [dragonmux]
- Fixed a regression in the CMSIS-DAP backend for v1 (HID) interfaces that broke writes with long buffers [projectgus]
- Added support for J-Link v5 adaptors by honouring the capability bits of J-Link devices [ALTracer]
- Fixed a memory leak and handling issue with FTDI adaptors in the probe detection and scan engine [lethalbit]
Contributors to v1.10.0
We have had 42 individuals contribute 1208 commits since the v1.9.2 release.
Contributor (Contributions)
dragonmux (872)
perigoso (111)
Sid Price (37)
lenvm (37)
ALTracer (28)
Uwe Bonnes (20)
James Turton (20)
Sean Cross (13)
Vegard Storheil Eriksen (10)
Jean-Christian de Rivaz (6)
Sascha Silbe (5)
Maciej 'vesim' Kuliński (5)
Koen De Vleeschauwer (4)
Lars Sundström (3)
TheyCallMeNobody (2)
Stoyan Shopov (2)
Piotr Esden-Tempski (2)
Gareth McMullin (2)
Francois Berder (2)
dpf (2)
Daniel Serpell (2)
Andras Gemes (2)
Amy (2)
Aki Van Ness (2)
Vitaliy (1)
Thomas Bénéteau (1)
Taylor Yu (1)
Sludge (1)
Siddharth Bharat Purohit (1)
SG (1)
Qyriad (1)
Matthew Via (1)
Kamil Rogozinski (1)
Jonathan Giles (1)
Jeremy Elson (1)
iysheng (1)
Guillaume Revaillot (1)
franzflasch (1)
Fabrice Prost-Boucle (1)
Angus Gratton (1)
AnantaSrikar (1)Sponsors
This project is sponsored in parts by:
- 1BitSquared - Design, Manufacture and distribution of open source embedded hardware development tools and platforms, as well as educational electronics. Thank you everyone who buys Black Magic Probes from 1BitSquared directly through our stores or indirectly through Adafruit. The hardware sales allow us to continue supporting the Black Magic Debug project.
- All the generous Patrons and GitHub Sponsors supporting esden’s work
- All the generous GitHub Sponsors supporting dragonmux’s work
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
0 downloads
-
blackmagic-full-source-v1_10_0-rc0.tar.gz
32 downloads ·
2023年09月18日 01:35:41 +02:00 · 1.8 MiB -
blackmagic-full-source-v1_10_0-rc0.tar.xz
17 downloads ·
2023年09月18日 01:35:43 +02:00 · 1.2 MiB -
blackmagic-full-source-v1_10_0-rc0.zip
44 downloads ·
2023年09月18日 01:35:44 +02:00 · 2.9 MiB -
blackmagic-native-v1_10_0-rc0.bin
53 downloads ·
2023年09月18日 01:35:45 +02:00 · 119 KiB -
blackmagic-native-v1_10_0-rc0.elf
53 downloads ·
2023年09月18日 01:35:45 +02:00 · 1.6 MiB -
blackmagic-native-v1_10_0-rc0.hex
39 downloads ·
2023年09月18日 01:35:46 +02:00 · 287 KiB -
blackmagic-native-v1_10_0-rc0.sum
23 downloads ·
2023年09月18日 01:35:46 +02:00 · 225 B