Skip to content

Releases: blackmagic-debug/blackmagic

Stable Release v1.10.2

11 Jan 00:51
Compare
Choose a tag to compare

We 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

Stable Release v1.9.3

11 Jan 21:05
fdd1566
Compare
Choose a tag to compare

We 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

Stable Release v1.10.1

01 Dec 00:50
4c8c545
Compare
Choose a tag to compare

We 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_OVERFLOW and 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

Stable Release v1.10.0

29 Oct 00:29
Compare
Choose a tag to compare

We 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 load followed immediately by kill from GDB would result in a crash [dragonmux]
  • Added a parameter to mon reset that 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 strtol with strtoul to help reduce Flash usage [ALTracer]
  • Switched to the reentrant strtok_r from strtok to 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 -fanalzyer lints highlighting bugs in target code [dragonmux]
  • Fixed some return types issues in the scan logic and switched swdp_scanswd_scan (with a fallback) as part of phasing out the “SWDP” nomenclature [perigoso]
  • Fixed a missing include for stdbool.h in 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 vMustReplyEmpty packets [perigoso]
  • Reduced the Flash usage of the JTAG devices table [dragonmux]
  • Fixed a race condition and resulting NULL dereference in the morse code subsystem [jcamdr]
  • Fixed -Wpedantic warnings about forward referencing of enums [perigoso]
  • Fixed -Wpedantic warnings about empty initialiser lists [perigoso]
  • Fixed -Wpedantic warnings about returns in functions that return void [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 -Wpedantic warnings 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 -Wpedantic warnings 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 the target_halt_reason enumeration [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@v3 action [gemesa]
  • Spelling, punctuation and grammar fixes in the GHA configs [gemesa]
  • Updated the lint CI to use the GHA actions/checkout@v3 and pre-commit/[email protected] actions [perigoso]
  • Updated the ARM compilers used in the PR workflows [esden]
  • Restricted the CI flows with ENABLE_RTT=1 set 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 load handling 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 ha...
Read more

Relase Candidate V1.10.0-rc1

11 Oct 20:56
Compare
Choose a tag to compare
Pre-release

We 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

Relase Candidate V1.10.0-rc0

17 Sep 23:46
Compare
Choose a tag to compare
Pre-release

We 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 load followed immediately by kill from GDB would result in a crash [dragonmux]
  • Added a parameter to mon reset that 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 strtol with strtoul to help reduce Flash usage [ALTracer]
  • Switched to the reentrant strtok_r from strtok to 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 -fanalzyer lints highlighting bugs in target code [dragonmux]
  • Fixed some return types issues in the scan logic and switched swdp_scanswd_scan (with a fallback) as part of phasing out the “SWDP” nomenclature [perigoso]
  • Fixed a missing include for stdbool.h in 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 vMustReplyEmpty packets [perigoso]
  • Reduced the Flash usage of the JTAG devices table [dragonmux]
  • Fixed a race condition and resulting NULL dereference in the morse code subsystem [jcamdr]
  • Fixed -Wpedantic warnings about forward referencing of enums [perigoso]
  • Fixed -Wpedantic warnings about empty initialiser lists [perigoso]
  • Fixed -Wpedantic warnings about returns in functions that return void [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 -Wpedantic warnings 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 -Wpedantic warnings 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@v3 action [gemesa]
  • Spelling, punctuation and grammar fixes in the GHA configs [gemesa]
  • Updated the lint CI to use the GHA actions/checkout@v3 and pre-commit/[email protected] actions [perigoso]
  • Updated the ARM compilers used in the PR workflows [esden]
  • Restricted the CI flows with ENABLE_RTT=1 set 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 load handling 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...
Read more

Stable Release v1.9.2

16 Sep 22:16
e4496e2
Compare
Choose a tag to compare

We are happy to announce the v1.9.2 point release of Black Magic Debug.

In this release

  • Fixed building BMDA due to alloca not being defined. [hydra]
  • Fixed an issue with the fake threads implementation that can hang certain IDEs [dragonmux]
  • Soft TPWR ON: Mitigates target power enable brownout issue on v2.3 hardware [dragonmux] [esden]

Note: The brownout mitigation was also implemented for all older native hardware versions. Read below for more information.

We had reports from some users that the V2.3 hardware was resetting/crashing when the user enabled target power using the monitor tpwr enable command. During the investigation it turned out that the BMP was browning out. The GD32 found on the V2.3 hardware has higher minumum voltage requirement than the STM32. This means it will brown out more likely if the 3.3v rail dips. The solution to this problem was to slowly turn on the target power using PWM instead of instantly turning it on.

We also tested the solution on older hardware versions that use the STM32. Those were also experiencing a significant voltage drop. Additionally after the voltage drops the rail voltage overshoots by a significant amount. Because the overshoot we decided that it is a significant issue, as it can have adverse effects on the connected user targets. We decided to backport this fix to older firmware releases (1.8 & 1.9) as well as older hardware (all native hardware versions except for hardware version 0 as it does not have TPWR control).

To illustrate the problem and solution here are some oscilloscope traces:

HW4 without Soft TWPR ON:

HW4 with Soft TPWR ON:

Contributors to v1.9.2

We have had 2 individuals contribute 6 commits since the v1.9.1 release.

Contributor (Contributions)

dragonmux (5)
Dominic Clifton (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

Stable Release v1.8.3

16 Sep 21:01
cc884ed
Compare
Choose a tag to compare

We are happy to announce the v1.8.3 point release of Black Magic Debug.

In this release

  • Fixed an issue with the fake threads implementation that can hang certain IDEs [dragonmux]
  • Soft TPWR ON: Mitigates target power enable brownout issue on v2.3 hardware [dragonmux] [esden]

Note: The brownout mitigation was also implemented for all older native hardware versions. Read below for more information.

We had reports from some users that the V2.3 hardware was resetting/crashing when the user enabled target power using the monitor tpwr enable command. During the investigation it turned out that the BMP was browning out. The GD32 found on the V2.3 hardware has higher minumum voltage requirement than the STM32. This means it will brown out more likely if the 3.3v rail dips. The solution to this problem was to slowly turn on the target power using PWM instead of instantly turning it on.

We also tested the solution on older hardware versions that use the STM32. Those were also experiencing a significant voltage drop. Additionally after the voltage drops the rail voltage overshoots by a significant amount. Because the overshoot we decided that it is a significant issue, as it can have adverse effects on the connected user targets. We decided to backport this fix to older firmware releases (1.8 & 1.9) as well as older hardware (all native hardware versions except for hardware version 0 as it does not have TPWR control).

To illustrate the problem and solution here are some oscilloscope traces:

HW4 without Soft TWPR ON:

HW4 with Soft TPWR ON:

Contributors to v1.8.3

We have had 1 individual contribute 5 commits since the v1.8.2 release.

Contributor (Contributions)

dragonmux (5)

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

Stable Release v1.9.1

29 Apr 04:08
Compare
Choose a tag to compare

We are happy to announce the v1.9.1 point release of Black Magic Debug.

In this release

  • Fixed an issue with an include path making BMDA fail to build on Windows [sidprice]
  • Fixed a missing probe call for ATSAM3x parts which caused a scan regression [AnantaSrikar]
  • Fixed an issue where detaching from the firmware and then reattaching would reattach to the target, causing subtle breakage [tlyu]
  • Fixed some pinout issues in the firmware for the native hardware [dragonmux]
  • Fixed several build issues with BMDA on Windows which caused the build to be broken in some configurations of MSYS2 [dragonmux]
  • Fixed some issues building BMDA on Windows under cygwin [hydra]
  • Fixed make clean issue deleting version.h when building in a source archive [esden]

Contributors to v1.9.1

We have had 6 individuals contribute 15 commits since the v1.9.0 release.

Contributor (Contributions)

dragonmux (9)
Sid Price (2)
Taylor Yu (1)
Piotr Esden-Tempski (1)
Dominic Clifton (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

Stable Release v1.9.0

30 Jan 00:14
Compare
Choose a tag to compare

We are happy to announce the v1.9.0 release of Black Magic Debug. This ended up being much larger than intended, but exciting.

Here are some of the highlights:

  • Improved SWD timings, addressing reliability issue with the previous release
  • Extended support for RTT to all host platforms
  • New auto_scan monitor command, allowing automatic scan chain detection
  • New erase_range monitor command, allowing erasing Flash ranges on any target
  • Added clang-tidy and clang-format configurations and project code formatting is enforced
  • Introduced a Contributor Covenant based Code of Conduct for contribution
  • Introduced PR templates and contribution guidelines to streamline and simplify contribution and review processes
  • Support for TCK/SWCLK High-Z when idle. This is needed for projects that reuse the TCK pin as GPIO during runtime. Especially useful for ultra low pin count devices.
  • And a bunch of newly supported targets:
    • Atmel/Microchip SAMx7x
    • GigaDevice GD32F303
    • TI LM3S5732 and LM3S8962
    • ArteryTek ATF32F403A/407/415
    • CKS32F103
    • Renesas RA

For more details please refer to the ChangeLog down below.

ChangeLog v1.9.0

Core Changes

  • RTT support via the target USB serial connection [koendv/dragonmux]
  • Added a clang-format configuration [xobs/dragonmux]
  • Implemented a new auto_scan monitor command which first tries JTAG and if that fails, tries SWD scan [dragonmux]
  • Introduced a Contributor Covenant based Code of Conduct for contribution [dragonmux]
  • Improved reset terminology usage and documentation via HACKING.md [dragonmux]
  • Renamed the main branch to main [esden]
  • Improved the project README and fixed various links in it [dragonmux]
  • Implemented support for redirecting semihosting output to the target USB serial connection [dragonmux/sullin]
  • Consistent mass erase progress indication and support for mass erase generically [dragonmux]
  • Switched the project language standard from GNU99 to C11 [dragonmux]
  • Ensure the _DEFAULT_SOURCE and _GNU_SOURCE macros are defined to enable certain glibc features we depend on [xobs]
  • Prepared the JTAG-TAP code for adding RISC-V support [dragonmux]
  • Do not turn idle indication LED off when the GDB USB serial connection is closed and target already detached [fabalthazar]
  • Implemented a pull request template and contribution guidelines [dragonmux]
  • Implemented support for talking SFDP to SPI Flash attached to Flashless targets [dragonmux]
  • Changed old wiki links to point to the website instead [Xiretza]
  • Implemented support for tri-stating (setting to High-Z) the TCK/SWCLK pin when BMP is idle on supported host platforms [dragonmux]
  • Removed printing of a debug message for vMustReplyEmpty packets to prevent confusion when debugging GDB comms [perigoso]
  • Superfluous semicolon cleanup/removal [perigoso]
  • Cleaned up, updated and improved the RTT usage documentation [esden]
  • Converted the SWO documentation to Markdown and cleaned it up [esden]
  • Cleaned up the include guards, making them consistent and fixing some undefined behaviour [esden/perigoso]
  • Cleaned up and fixed the Flash erase and write function return types for all targets [perigoso]
  • Added improved project guidelines for contribution licensing, header guard macros and type and typedef naming via HACKING.md [dragonmux]
  • Enabled simultaneous use of RTT and the auxillary (target) UART [koendv]
  • Enabled support for RTT on the F072 platform [koendv]
  • Improved the bitbang’d protocol timings for SWD which were causing setup-and-hold violations [dragonmux]
  • Improved Flash operation completions handling for a speed and Flash usage improvement [dragonmux]
  • Cleaned up the RTT implementation and provided test programs for RTT [koendv]
  • Run clang-format across the entire code base [dragonmux]
  • Improved the const-correctness of a chunk of the code [dragonmux]
  • Addressed various code quality and consistency issues with the targets [dragonmux]
  • Removed the jtag_proc_t *jp parameters from the JTAG abstraction layer as they’re redundant [dragonmux]
  • Fixed the naming conformity across the code base, rigorously applying the naming requirements from the contribution guidelines [dragonmux]
  • Fixed a NULL pointer dereference issue in the RTT monitor command when no arguments are given [koendv]
  • Fixed the target register description XML allocation inducing memory exhaustion and not being reliably cleaned up [dragonmux]
  • Fixed various spelling mistakes throughout the code base [perigoso]
  • Fixer the RTT code enum naming [perigoso]
  • Fixed a regression that lead to a crash due to a NULL pointer in the target registers description XML handling [dragonmux]
  • Removed the target structure using defaulted functions as the way it was done was relying on undefined behaviour and causing issues [dragonmux]

Build System Changes

  • Only remake include/version.h when the Git hash changes [TheJJ/dragonmux]
  • clang-tidy and clang-format support [dragonmux]

Script/Utility Changes

  • Support for Nix’ nix-shell [cyber-murmel]
  • Improved udev rules [dragonmux]
  • VSCode extension recomendations [dragonmux]
  • Deprecated stm32_mem.py and the in-repo upgrade program [dragonmux]
  • Added ST-Link udev rules [sidprice]
  • Added a second set of symlinks to the main project udev rules to gracefully deal with having multiple probes connected to one host simultaneously [dragonmux]

Project CI Changes

  • Fixed the CI up for PRs after the rename to main [dragonmux]
  • Added a proper dependency on libusb’s dev package to the main build workflow [dragonmux]
  • Removed the stale Travis CI configuration [dragonmux]
  • Added a PR code size difference check to the workflows [perigoso]
  • Added a merge-blocking PR lint for clang-format issues [perigoso]
  • Added a check to the PR lint flow for the case of hexadecimal constants (0xFEEDACA7 will result in an error, 0xfeedaca7 is allowed) [perigoso]
  • Added a check for accidental assignments in control flow conditions and other similar constructs [perigoso]

ARM (ADIv5) Changes

  • ARM Debug: Formatting and code style readability clean-ups [perigoso]
  • ARM Debug: Fix some formatting constant misuse [gatin00b]
  • ARM Debug: Access Port scan early bailout was too eager, failing after just 1 rather than 8 invalid APs [dragonmux]
  • ARM Debug: Improved the correctness of the JEP106 reading and handling code for RP2040 [perigoso]
  • ARM Debug: Fixed a grammatical error [gatin00b]
  • ARM Debug: Unified DPIDR and target ID register handling between the SWD and JTAG DP handling [perigoso]
  • ARM Debug: Use PRIxNN specifiers in all debug print statements [xobs]
  • ARM Debug: Early DP accesses trigger aborts corrupting AP writes [dragonmux/mubes]
  • ARM Debug (JTAG): Fixed support for and improved identification of DPv0 devices [dragonmux]
  • ARM Debug: Made consistent use of the DP bank macros, and removed the duplicate base check ready to support LPC55 [dragonmux]
  • ARM Debug: Improved handling of target halt and resume, and removed the RP2040 rescue special-casing [jamesturton]
  • ARM Debug: Fixed the triggering of nuisance CID warnings for Cortex-M23 and Cortex-M33 System Control Spaces [dragonmux]
  • ARM Debug: Improved the handling of sticky errors generated during AP scanning [dragonmux]
  • ARM Debug (SWD): Fixed a bug in the fault handling during AP/DP access that broke remote protocol use [dragonmux]
  • ARM Debug (SWD): Fixed an issue attaching to a target that occurs when there is a delay between scan and attach [dragonmux]
  • ARM Debug: Fixed protocol recovery progressing incorrectly for DPv2+ debug ports, leading to a no-communication state [dragonmux]

Target Changes

  • ch32f1: printf format string fixes [dragonmux]
  • ARM Cortex-A: Implement watch-points support [gsmcmulin]
  • rp: Corrected the SRAM sizing [DagAgren]
  • rp: Fixed how reset is done using CORTEXM_TOPT_INHIBIT_NRST [jamesturton]
  • sam3x: Corrected gpnvm command usage text [perigoso]
  • rp: Better heuristic detection of attached SPI Flash size [jamesturton/djix123]
  • stm32wl: Improved support for the second CPU and part detection [UweBonnes]
  • sam3x: Fixed uninitialised variables being present [sidprice/perigoso]
  • stm32f1: General code clean-up and formatting fixes [perigoso]
  • kinetis: Code organisation clean-up and function naming fixes [perigoso]
  • efm32: Code cleanup and implementation fixes [perigoso]
  • nrf52: Fixed mass erase silently failing under certain conditions [dragonmux]
  • target: clang-tidy lint fixes and readability improvements [dragonmux]
  • target: Implemented a new monitor command (erase_range) to allow erasing Flash ranges on any target [dragonmux]
  • target: Implement weak aliased no-op stubs for all probe routines to allow disabling any target [perigoso]
  • target: Fix probing of LPC1343 parts which weren’t being properly detected [perigoso]
  • ch32f1: Improve compatibility with various CH32F1 variants and other STM32F1 clones [grumat]
  • command: Implemented support for LPC82x low power reset via a new monitor command (tdi_low_reset) [dragonmux]
  • command: Fixed the formatting and type consistency of the target commands implementation [dragonmux]
  • JTAG scan: Loosen strictness to allow detection of non-conforming JTAG targets [dragonmux]
  • lmi: Fix Stelaris/Tiva-C probing being unreliable [dragonmux]
  • ch32f1: Fixed some types issues and missing static annotation [dragonmux]
  • rp: Code organisation conformity against the other targets, and clang-tidy lint fixes [dragonmux]
  • ARM Cortex-M: Corrected the “Please report unknown device” diagnostic to report a more appropriate set of IDs [perigoso]
  • stm32h7: Fixed the probe part detection IDs due to them being incorrect from the incorrect ADIv5 code before [perigoso]
  • sam...
Read more