Releases: blackmagic-debug/blackmagic
Relase Candidate V1.9.0-rc1
We are happy to announce the second v1.9.0 release candidate of Black Magic Debug.
In this release
- Fixed an error in BMDA’s DAP link reset logic [zyp]
- Fixed the USB serial port control notifications (such as DTR) being sent over the wrong endpoint [dragonmux]
- Fixed the CRC32 calculations being broken in BMDA and non-STM32 probes [perigoso]
- Fixed a regression in the identification of STM32F0 parts [dragonmux]
- Fixed a regression in the
HOSTED_BMP_ONLY=1
build of BMDA for Windows due to mishandling a possible return value formRegGetValue()
[LAK132] - Fixed the nRF52 target support being able to trigger probe memory exhaustion due to the size of the write buffers [dragonmux]
- Fixed a
NULL
pointer dereference issue in the RTT monitor command when no arguments are given [koendv] - Corrected the part lookup for STM32F4 series and adjacent parts [perigoso]
- Added a second set of symlinks to the udev rules to handle when multiple probes are attached to one host properly [dragonmux]
- Added a missing
NULL
check intarget_flash_erase
[perigoso] - Fixed the BMDA build on OSX [djix123]
- Fixed the Cortex-M SWD attach regression that occurs when there is a delay between scan and attach [dragonmux]
- Fixed the target register description allocation inducing memory exhaustion and not being reliably cleaned up [dragonmux]
- Fixed compilation of the DFU bootloaders under some ARM GCC toolchains [dragonmux]
- Fixed a regression in BMDA’s file handling which caused Flash write and verify operations to be no-ops [hollinsky]
- Implemented a monitor command to allow clean BMDA shutdowns [dragonmux]
- Fixed dap_jtagtap_tdi_tdo_seq() crashing when ticks is 0 and final_tms is true [dragonmux]
Contributors to v1.9.0-rc1
We have had 8 individuals contribute 97 commits to the v1.9.0-rc1 release. It would not have been possible without your help! Thank you!
Contributor (Contributions)
dragonmux (86)
Rafael Silva (3)
Jonathan Giles (2)
Paul Hollinsky (2)
Vegard Storheil Eriksen (1)
Koen De Vleeschauwer (1)
LAK132 (1)
Piotr Esden-Tempski (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
Relase Candidate V1.9.0-rc0
We are happy to announce the first v1.9.0 release candidate 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-rc0
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]
Build System Changes
- Only remake include/version.h when the Git hash changes [TheJJ/dragonmux]
clang-tidy
andclang-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]
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 u# Release v1.9se 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]
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]
- samd: Fixed the device ID family mask to match the value in the datasheet [dragonmux]
- target: Made
target_flash_for_addr()
public in the target-facing part of the target API ready for the AVR JTAG-PDI support [dragonmux] - rp: Implemented generalised SPI Flash programming and access support using SFDP [dragonmux]
- samd: Fixed some attach errata for the AT SAMD11 which can be triggered by the normal Cortex-M attach routine [dragonmux]
- ch32f1: Improved differentiation between CH32F103, CKS32F103 and APM32F103 using the revision ID [djix123]
- ch32f1: Fixed several debug format strings which had
ENABLE_DEBUG=1
builds broken [esden] - target_flash: Moved the Flash handling into its own file and implemented guaranteed address alignment in the API [perigoso]
- ARM Cortex-A/M: Generate the GDB target description strings dynamically to save on Flash code size [Qyriad]
- sam4l: Fixed the debug format string specifiers [xobs]
- target_probe: Fixed AppleClang compatability [amyspark]
- ARM Cortex-...
Stable Release V1.8.2
We are happy to announce the V1.8.2 point release of Black Magic Debug.
In this release
- Added “Fake thread support”. This is a work around, for a bug in GDB V11 and V12 where GDB crashes when the server that does not have threads. [dragonmux]
You can download pre-built firmware binaries from the GitHub release page. If you are downloading the sources archive, make sure to download the full-sources
archives, otherwise you will not have the libopencm3 library that is necessary for firmware compilation. You can of course always check out the specific version tag using git.
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.1
We are happy to announce the V1.8.1 point release of Black Magic Debug.
In this release
- Fixed
HOSTED_BMP_ONLY
build of Black Magic Debug App (BMDA) [Qyriad] - Fixed GDB protocol
sscanf
formatting pattern that was, among others, breaking breakpoints [dragonmux] - Fixed a watchpoint handling issue and a register sanity check [aksdfauytv]
- Fixed CH32F probe routine so it does not overwrite the MCU ID code.
- Fixed an issue where Kinetis parts that write Flash 8 bytes at a time could get bricked. (affected parts: S32K and K64) [dragonmux]
- Fixed “reading old ADC values” issue on Black Magic Probe (BMP aka. native) V2.3 hardware. [esden]
- Fixed flash memory write buffer lifetimes to decrease the probability of running out of heap. [dragonmux]
- Fixed an issue where mass_erase command on STM32F4 was returning a
Failed
result in most cases. [esden]
You can download pre-built firmware binaries from the GitHub release page. If you are downloading the sources make sure to downolad the full-sources
archives, otherwise you will not have the libopencm3 library that is necessary for firmware compilation.
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.0
We are happy to announce the V1.8.0 release of Black Magic Debug. It is a big one since we did not make a stable release since October 2020!!! So this release is very much overdue. But that also means we have a lot of new and interesting things in this release.
Here are some highlights:
- Added support for the new Black Magic Probe v2.3 hardware.
- Improved target scan reliability for devices that are asleep or using WFI.
- Black Magic App (BMA aka. hosted) now has better support of CMSIS-DAP probes.
- All python scripts and utilities were updated to run and require Python 3.
- Added GitHub Actions CI builds
- And a bunch of newly supported targets:
- WCH CH32F103
- GigaDevice GD32F1/F3
- GigaDevice GD32E23x
- NXP Kinetis K12 and placeholders for other K-Series MCUs
- NXP LPC11xx XL, LPC546xx, LPC802, LPC804, LPC832 and LPC834
- NXP MIMXRT10XX detection (no flash support)
- NXP S32K14x, S32K118, S32K148
- RaspberryPi RP2040
- Microchip SAMD09
- ST STM32G03/4/5/6/7/8/B/C, STM32G49x/G4Ax
- ST STM32H7B3/B0/A3 & STM32H723/33/25/35/30
- ST STM32L55
- ST STM32WB55
- ST STM32WLxx
You can download pre-built firmware binaries from the GitHub release page. If you are downloading the sources make sure to downolad the full-sources
archives, otherwise you will not have the libopencm3 library that is necessary for firmware compilation.
For more details please refer to the ChangeLog down below.
Legend in Historical Context
Black Magic Debug consists of multiple elements that have fairly similar naming that can be confusing. To make this Change Log bit easier to decipher here is a little bit of history and term explanation.
Black Magic Debug (BMD) was originally designed as just a firmware for a purpose made hardware called Black Magic Probe (BMP) that can speak the GNU Debugger (GDB) “remote” serial protocol. The original BMP hardware is also called “native” as over time additional “Host” platforms were added that the firmware could be loaded onto. (such host hardware can be an STM32F4 discovery board, or ST-Link hardware and many more)
Additionally BMD can also be compiled as a stand alone PC application, (we call it Black Magic App, or BMA and formally known as hosted) that can act as a software in the middle, similar to the way OpenOCD works. In this case BMP is only acting as a USB to JTAG/SWD translator and the Black Magic App (BMA) does all the heavy lifting. Additionally this also allows the use of BMA with other probe hardware running non Black Magic Firmware (BMF), like for example: JLink, ST-Link, sw-link, FTDI and more.
- Black Magic Debug (abbreviated to BMD) - Is the project name, an umbrella describing the project but also sometimes acts as the term describing the software.
- Black Magic Firmware (abbrev. BMF) - More specifically just the Black Magic Firmware that is loaded either onto Black Magic Probe hardware or onto any other supported host hardware.
- Black Magic Hosted aka. Black Magic App (abbrev. BMA) - The Black Magic Debug system compiled as a PC application instead of a Firmware. Allowing it to be used in software in the middle mode instead of being contained to a hardware device. This is also sometimes just called “hosted” in the context of the project.
- Black Magic Probe (abbrev. BMP) - The “native” Black Magic Debug (BMD) hardware that was specifically designed and intended for the BMD project. This is the hardware you can buy from 1BitSquared, Adafruit and other resellers as “the Black Magic Probe”.
- Black Magic Core (Abbrev. BMC) - This describes the core code of the project that handles JTAG/SWD protocol, implements Flashing, target detection and all target specific functionality. It does not include host platform specific code like for example code that toggles GPIO.
- Host Platform - Refers to the hardware that the BMD software (either Firmware or Application) runs on. It can be the PC, STM32, lm4f or some more specific hardware like Black Magic Probe aka. native, ST-Link, sw-link and so on.
- Probe aka. Cable - Refers to the hardware that is connected between the PC running GDB (and/or BMA) and the Target (DUT). In the simplest case it is a USB to JTAG/SWD converter like an FTDI chip but in most cases it is a dedicated hardware running either our BMF or some other firmware.
- Target - Refers to the Device Under Test (DUT), this is the hardware that the user wants to debug using BMD.
Changelog V1.8.0
Core Changes
- SWD debug: Immediately turn around SWDIO after reading with parity to avoid driving SWDIO until the next command. [JojoS] [UweBonnes]
- Try harder to read the
ROMTABLE
when the target is sleeping [UweBonnes] - Remove forced halt from
cortexm_probe
[UweBonnes] - Narrow down probing for targets based on the designer ID to decrease the size of the search tree and speed up detection [UweBonnes]
- Allow debugging of not fully supported (no flash routine) ARM Cortex-M targets [UweBonnes]
- Fix version.h generation for the
all_platforms
build target [UweBonnes] - Print Morse code messages in plain text to the USB UART endpoint when built with
ENABLE_DEBUG
anddebug_bmp
is enabled [UweBonnes] - Added documentation for building Black Magic PC Hosted in MSYS2 [stoyan-shopov]
- Added more cycles in
cortexm_halt_resume
to always keep the CPU going [UweBonnes] - Store
CPUID
in target structure [UweBonnes] - GDB: Fixed a lost of sync protocol error in GDB protocol
REMOTE_SOM
state [stoyan-shopov] - command: Fixed a build error caused by
cortexm_wait_timeout
using signed integers [stoyan-shopov] - JTAG: Added debug output verbosity of found devices [UweBonnes]
- version.h: Removed include from
platform.h
and consolidated identifier string generation, decreasing build churn [UweBonnes] - CLI: Consolidated
mon version
output [UweBonnes] - CLI: Added JTAG/SWD protocol frequency setting [UweBonnes]
- target: Changed
target_foreach
signature to return target count instead of a bool indicating that there are some targets present [UweBonnes] - docs: Corrected and updated documentation describing the available baud rate limits for SWO usage [UweBonnes]
- firmware: Unify USB serial number handling [UweBonnes]
- Turn off the error LED on successful attach to target [compuphase]
- Remote JTAG: Fix bitmask calculation bug [UweBonnes]
- Remote JTAG: Split up large transactions [UweBonnes]
- GDB: Escape
*
in responses of the GDB remote serial protocol to avoid interpretation as RLE sequence start [compuphase] - crc32: Abort with from
target_mem_read
whengeneric_crc32
fails [UweBonnes] - remote: Allow for packets to be larger than 256 bytes [UweBonnes]
- tpwr: Test VRef voltage before enabling target power (
mon tpwr
) to avoid potential power conflict [compuphase] - GDB: Better error reporting when the monitor command fails [UweBonnes]
- GCC11 compilation fixes [jamesturton] [UweBonnes] [dragonmux]
- crc32: Define
start_time
when debug is enabled as it is used for crc32 benchmarking [xobs] - doc: Update references from blacksphere to blackmagic-debug due to organization rename [esden]
- crc32: Fixed launchpad-icdi build [dragonmux]
- GDB: Cleaned up the sscanf usage in GDB Z packet handler [fabalthazar]
- GDB: Added putpacket2 which allows sending two sub messages as one [mean00]
- GDB: Fix unused variables and naming [mean00]
- GDB: Correct function naming scheme for consistency [mean00]
- GDB: Formatting cleanup [dragonmux]
- Updated Copyright monitor command output and iManufacturer strings to reflect the organization rename from Black Sphere Technologies to Black Magic Debug [esden]
Build system Changes
- Remove no longer needed
libftdi
andpc-stlinkv2
platforms [UweBonnes] - Added
HOSTED_BMP_ONLY=1
option to allow for easier building of the PC-hosted Black Magic Debug Application when only BMP support is needed [UweBonnes] [stoyan-shopov] - Fixed builds using newer GNU make versions that remove
-
prefix from$(MAKEFLAGS)
[noahp] - Compile with
-Os
by default. Can be overridden usingmake OPT_FLAGS=...
. SWD/JTAG bitbang code remains compiled using-O3
for good bitbang speed [UweBonnes] - Fixed compilation of BMA on MacOS where
hidapi-libusb
is called justhidapi
[UweBonnes] - Added linker flag to show memory usage [esden]
- Only build needed libopencm3 libraries [esden]
- Don’t try to report memory usage for BMA builds, as this breaks clang builds [esden]
VCS Changes
- Added
src/artifacts
directory created when runningall_platforms
build to.gitignore
[noahp] - Added
.gitattributes
for better control of line endings [xobs]
CI System Changes
- Updated travis to use bionic instead of trusty, which means we don’t need to build libftdi1 any more [UweBonnes]
- Added GitHub Actions for builds on push and run test build some PRs [Qyriad]
- Added BMA build to github actions to catch more potential issues [esden]
- Added libftdi1 and hidapi dependency installation [esden]
Script/Utility Changes
- all python script utilities (
dfu-convert.py
, , , ) ported to Python 3 [agners] - stm32_mem.py: Allow UTF-8 characters in manufacturer ID, product ID and serial number [UweBonnes]
- stm32_mem.py: Wait longer for device to appear [UweBonnes]
- bootprog.py: Updated to run on python3 [esden]
- get_openocd_nrf51_ids.py: Updated to run on python3 [esden]
- gdb.py, hexprog.py: Updated to run on python3 [markrages]
- stm32_mem.py: More python3 port fixes, cosmetic cleanup and remove unnecessary Python 2 compatibility [schodet]
- dfu-convert.py: Update for Python 3 and drop Python 2 support [schodet]
- bootprog.py: Finish converting to Python 3 [schodet]
- dfu.py, gdb.py, get_openocd_nrf51_ids.py, hexprog.py, stm32_mem.py: More Python 3 updates, also changed the shebang to use ...
Stable release v1.7.1
Changes since V1.7:
- version.h now reflects the latest tag.
Otherwise the version is misleading for users and problem reports.
Blackmagic V1.6.2-rc1: Second pre-release
- More FTDI work
- Hosted can auto-detect BMP firmware also on Windows and Darwin
- Many bug-fixes, enhancements amd more devices
w.r.t. 1.6.2-rc0
BMP high-level remote procedures and unified hosted
- Support BMP/remote, Stlink, Jlink and CMSIS-Dap with a single executable.
- Export BMP high level procedures for use with hosted and other programs.
- Bump up version to allow fallback to low level BMP remote function when BMP firmware is too old.
Stable Release V1.6.1
We are happy to announce the release of V1.6.1 Black Magic Probe firmware.
Black Magic V1.6.1
This version ships on V2.1 Black Magic Probe hardware with serial number 158 and higher.
Change Log
- Fixed a possible crash (issue #222) caused by an error in the logic freeing removed breakpoints.
Stable Release V1.6
We are happy to announce the release of V1.6 Black Magic Probe firmware.
In the past we were considering releases that were shipping on Black Magic Probe hardware as stable releases without official release notes. This is an attempt to put together most important changes that were happening between the different tagged revisions of the repository.
Black Magic V1.6
This version shipps on V2.1 Black Magic Probe hardware.
This version has been tested using the new bmp-test suite. The results of the tests can be found in the V1.6 release GitHub Issue.
Change Log
- kinetis: Check and fix the flash config bytes after completing flash write to prevent the user from bricking the target device.
- Keep TMS high during reset to prevent K22F from going into the EzPort mode and makes the flash unusable and disables the rest of the microcontroller.
Known Bugs
- In some cases the NRF52 target can not be flashed. (seems to depend on the board used, @gsmcmullin Sparkfun NRF52 breakout board flashes reliably wheras @esden Sparkfun NRF52 breakout can not be flashed)
Black Magic V1.6-rc1
An intermediate RC1 version shipped on Black Magic Probe V2.0. The final RC1 never shipped on any official hardware.
New Platforms
Platforms are devices that the Black Magic Probe firmware can be compiled for and run on.
- Black Magic Probe V2.0
- Black Magic Probe V2.1
- HydraBus
- Digilent JTAG-HS3 FDTI cable
- New versions of ST Discovery boards.
New Targets
Targets are processors/architectures that the Black Magic Probe can be connected to.
- SAM3U
- STM32L0 (additional device IDs)
- STM32L4
- STM32F2
- STM32F302C8
- STM32F303
- STM32F446x
- STM32F7
- EFM32/EZR32
- Including EZR32LG & EZR32WG
- NRF52
- KL03
- KL27
- LPC82x
- LPC15xx
- EFM32HP
- SAM4L
- Experimental Cortex-A support
- Xilinx Zynq
- RaspberryPi V2 32bit
Change Log
- Most flash stubs rewritten in C and generated for better maintainability.
- Added exception handling mechanism inside the probe firmware. Replacing variaty of platform specific error handling mechanisms.
- Removed unfinished ARM7TDMI driver. If someone is interested in taking over that project contact us in the gitter channel.
- Removed old STM32L1 driver in favor of the more generic STM32L0/STM32L1 driver.
- Reworked flash memory driver interface.
- Fixed VBUS handling on STM32F4 platform, preventing excessive current draw.
- Fixed F0 flash block size.
- Fixed stm32f1 probe returning always true.
- Fixes allowing building of the libftdi target for Windows.
- SRST handling cleanup.
- Fixed
platform_delay
returning before the timout has expired. - Fixed BMPM TPWR control. (Needed to be open drain drive)
- Added
ENABLE_DEBUG
build option, adding thedebug enable
monitor command. Prints debug messages to the UART CDCACM USB interface or if an SWD debugger is detected the messages are printed using semihosting through the "inception" debugger. - Added nested timeout timer support.
- Refactor of the target specific code to be independent of the GDB code using a dedicated API.
- Catch UART errors.
- STM32L4: Use buffered flash model.
- Added Travis CI builds.
- libftdi: Disable Nagle algorithm and buffer sends.
- Kinetis: Added special handling of the flash config bits as they sit in the middle of the flash and can be easily set to blick the device.
- Increased STLink flash allowance to 128kb as we can not fit the firmware in it any more. (all known STLinks come with larger than advertised flash)
- Inhibit SRST on Tiva targets, because Tiva seems to be resetting the debug interface together with the system.
- STM32F4 target now translates ITCM addresses to AXIM addresses on flash write.
- Add GDB packet length checking. (it is possible to create misreported length packets using the GDB scripting API)
Black Magic V1.6-rc0
This version shipped on Black Magic Probe V2.0 hardware.
New Platforms
Platforms are devices that the Black Magic Probe firmware can be compiled for and run on.
- Added STLink V1 & V2
- Added libftdi
- Added STM32F4-Discovery
- Added F401Discovery
- Added swlink
- Added USPS_F407 and removed again
- Removed stm32_can
New Targets
Targets are processors/architectures that the Black Magic Probe can be connected to.
- SAM3X
- SAM3N
- SAMD20
- SAM3S
- SAM4S
- STM32F3
- STM32F0
- STM32F03x
- STM32F05x
- STM32F07x
- STM32L0
- STM32L1
- LPC812
- LPC1114
- LPC43xx dual core
- LPC4337 (flash support)
- NRF51
- TM4C
- KL25
Change Log
- Use the same LED for run/idle. Reserve spare LED for UART activity.
- Added mass_erase command for the STM32F1 target.
- Fixed crash on monitor commands with no attached target.
- Added option byte programming for STM32F1 target.
- Added support for user specified JTAG IR lengths.
- Moved all static data to the heap.
- Added timeout to target attach.
- Fixed corrupting un-aligned memory reads from target.
- Added UART support for stlink platform.
- Added DFU bootloader for the stlink platform.
- Added STM32F0/3 option byte programming support.
- Added waking up a target by using SRST on connect.
- Added semihosting support.
- Improved USBUART reliability.
- LPC43xx improvements.
- Added dfu_upgrade tool.
- Added hardfault unwinding.
- Added TPWR monitor function.
- Fixed USB-UART parity support.
- Satisfy hosts that require 0 filled packets to accept a complete CDCACM packet transfer.
Black Magic production_01
Second official release, shipped on hardware ???.
TODO: Changes
Black Magic production_00
Initial release, shipped on hardware ???.