7
31
Fork
You've already forked blackmagic
23

WIP: Feature: RV32I Progbuf-based memory access support, with autoexec #2225

Draft
ALTracer wants to merge 4 commits from ALTracer/blackmagic:feature/riscv32-progbuf-memory-rw-autoexec into main
pull from: ALTracer/blackmagic:feature/riscv32-progbuf-memory-rw-autoexec
merge into: blackmagic-debug:main
blackmagic-debug:main
blackmagic-debug:fix/pre-bmp-v3-cross-file-cleanup
blackmagic-debug:feature/bmda-remote-comms
blackmagic-debug:ALTracer/feature/aarch64-ident
blackmagic-debug:feature/better-meson-optimisation-handling
blackmagic-debug:feature/am335x-support
blackmagic-debug:feature/esp32-c3-support
blackmagic-debug:feature/cortex-ar-software-breakpoints
blackmagic-debug:feature/unit-testing
blackmagic-debug:feature/windows-usb-serial-interface-naming
blackmagic-debug:fix/bmp-external-spi
blackmagic-debug:ALTracer/feature/bluepillplus-platform
blackmagic-debug:ALTracer/feature/at32f43x-unrdp
blackmagic-debug:feature/const-correctness
blackmagic-debug:ALTracer/feature/fault_handlers
blackmagic-debug:ALTracer/feature/hazard3-ice40-support
blackmagic-debug:fix/ci-cleanup
blackmagic-debug:ALTracer/fix/gdb-10-12-thread
blackmagic-debug:ALTracer/feature/blackpill-f4-adc
blackmagic-debug:ALTracer/fix/cortex-desc-allocfail-report
blackmagic-debug:ALTracer/feature/spi-perf
blackmagic-debug:ALTracer/feature/calibrate_swd
blackmagic-debug:ALTracer/feature/blank-check
blackmagic-debug:feature/avr
blackmagic-debug:v2.0
blackmagic-debug:v1.9
blackmagic-debug:v1.10
blackmagic-debug:v1.8
Contributor
Copy link

Detailed description

  • This is a new feature.
  • The existing problem is that single-access version of progbuf-based memory I/O is very slow.
  • This PR solves it by adding a linear read/write version based on abstractauto.data0 (assuming the chip supports it).

Based on #2185 and sequenced after it.
The limited testing indicates a 7 times speedup on an otherwise JTAG I/O-bound blackpill-f411ce against a JTAG RV32I* in compare-sections and 2 times speedup of (gdb) load against GD32VF103 flash.

Your checklist for this pull request

Closing issues

## Detailed description * This is a new feature. * The existing problem is that single-access version of progbuf-based memory I/O is very slow. * This PR solves it by adding a linear read/write version based on `abstractauto`.data0 (assuming the chip supports it). Based on #2185 and sequenced after it. The limited testing indicates a 7 times speedup on an otherwise JTAG I/O-bound blackpill-f411ce against a JTAG RV32I* in `compare-sections` and 2 times speedup of `(gdb) load` against GD32VF103 flash. ## Your checklist for this pull request * [x] I've read the [Code of Conduct](https://codeberg.org/blackmagic-debug/blackmagic/src/CODE_OF_CONDUCT.md) * [x] I've read the [guidelines for contributing](https://codeberg.org/blackmagic-debug/blackmagic/src/CONTRIBUTING.md) to this repository * [x] It builds for hardware native (see [Building the firmware](https://codeberg.org/blackmagic-debug/blackmagic?tab=readme-ov-file#building-the-firmware)) * [x] It builds as BMDA (see [Building the BMDA](https://codeberg.org/blackmagic-debug/blackmagic?tab=readme-ov-file#building-black-magic-debug-app)) * [ ] I've tested it to the best of my ability * [x] My commit messages provide a useful short description of what the commits do ## Closing issues
riscv32: Update riscv32_progbuf_mem_read to use both x10 & x11
Some checks failed
ci/woodpecker/pr/build-firmware/3 Pipeline was successful
ci/woodpecker/pr/build-firmware/2 Pipeline was successful
ci/woodpecker/pr/build-firmware/1 Pipeline was successful
ci/woodpecker/pr/build-firmware/4 Pipeline was successful
ci/woodpecker/pr/build-firmware/5 Pipeline was successful
ci/woodpecker/pr/build-firmware/6 Pipeline was successful
ci/woodpecker/pr/build-firmware/7 Pipeline was successful
ci/woodpecker/pr/build-firmware/9 Pipeline was successful
ci/woodpecker/pr/build-firmware/10 Pipeline was successful
ci/woodpecker/pr/build-firmware/8 Pipeline was successful
ci/woodpecker/pr/build-firmware/13 Pipeline was successful
ci/woodpecker/pr/build-firmware/11 Pipeline was successful
ci/woodpecker/pr/build-firmware/12 Pipeline was successful
ci/woodpecker/pr/build-firmware/14 Pipeline was successful
ci/woodpecker/pr/build-firmware/17 Pipeline was successful
ci/woodpecker/pr/build-firmware/16 Pipeline was successful
ci/woodpecker/pr/build-firmware/15 Pipeline was successful
ci/woodpecker/pr/build-firmware/18 Pipeline failed
ci/woodpecker/pr/build-linux/1 Pipeline was successful
ci/woodpecker/pr/build-firmware/19 Pipeline was successful
ci/woodpecker/pr/build-firmware/20 Pipeline was successful
ci/woodpecker/pr/build-linux/2 Pipeline was successful
ci/woodpecker/pr/build-windows Pipeline was successful
7f30f2c5b1
riscv32: Implement progbuf memory block-read using abstract autoexec
Some checks are pending
ci/woodpecker/pr/build-firmware/1 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/2 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/3 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/4 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/5 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/6 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/7 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/8 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/9 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/10 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/11 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/12 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/13 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/14 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/15 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/16 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/17 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/18 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/19 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/20 Pipeline is pending approval
ci/woodpecker/pr/build-linux/1 Pipeline is pending approval
ci/woodpecker/pr/build-linux/2 Pipeline is pending approval
ci/woodpecker/pr/build-windows Pipeline is pending approval
386a89bacd
ALTracer force-pushed feature/riscv32-progbuf-memory-rw-autoexec from 9512913bed
Some checks failed
ci/woodpecker/pr/build-firmware/2 Pipeline was successful
ci/woodpecker/pr/build-firmware/6 Pipeline was successful
ci/woodpecker/pr/build-firmware/1 Pipeline was successful
ci/woodpecker/pr/build-firmware/4 Pipeline was successful
ci/woodpecker/pr/build-firmware/5 Pipeline was successful
ci/woodpecker/pr/build-firmware/7 Pipeline was successful
ci/woodpecker/pr/build-firmware/3 Pipeline was successful
ci/woodpecker/pr/build-firmware/8 Pipeline was successful
ci/woodpecker/pr/build-firmware/9 Pipeline was successful
ci/woodpecker/pr/build-firmware/11 Pipeline was successful
ci/woodpecker/pr/build-firmware/14 Pipeline was successful
ci/woodpecker/pr/build-firmware/15 Pipeline was successful
ci/woodpecker/pr/build-firmware/10 Pipeline was successful
ci/woodpecker/pr/build-firmware/13 Pipeline was successful
ci/woodpecker/pr/build-firmware/12 Pipeline was successful
ci/woodpecker/pr/build-linux/1 Pipeline was successful
ci/woodpecker/pr/build-firmware/20 Pipeline was successful
ci/woodpecker/pr/build-linux/2 Pipeline was successful
ci/woodpecker/pr/build-firmware/18 Pipeline failed
ci/woodpecker/pr/build-firmware/16 Pipeline was successful
ci/woodpecker/pr/build-firmware/17 Pipeline was successful
ci/woodpecker/pr/build-firmware/19 Pipeline was successful
ci/woodpecker/pr/build-windows Pipeline was successful
to 7cc5f7be9e
Some checks are pending
ci/woodpecker/pr/build-firmware/1 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/2 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/3 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/4 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/5 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/6 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/7 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/8 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/9 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/10 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/11 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/12 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/13 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/14 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/15 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/16 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/17 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/18 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/19 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/20 Pipeline is pending approval
ci/woodpecker/pr/build-linux/1 Pipeline is pending approval
ci/woodpecker/pr/build-linux/2 Pipeline is pending approval
ci/woodpecker/pr/build-windows Pipeline is pending approval
2026年04月13日 20:04:06 +02:00
Compare
ALTracer force-pushed feature/riscv32-progbuf-memory-rw-autoexec from 7cc5f7be9e
Some checks are pending
ci/woodpecker/pr/build-firmware/1 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/2 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/3 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/4 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/5 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/6 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/7 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/8 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/9 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/10 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/11 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/12 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/13 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/14 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/15 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/16 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/17 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/18 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/19 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/20 Pipeline is pending approval
ci/woodpecker/pr/build-linux/1 Pipeline is pending approval
ci/woodpecker/pr/build-linux/2 Pipeline is pending approval
ci/woodpecker/pr/build-windows Pipeline is pending approval
to b3adb9e13b 2026年04月14日 13:02:14 +02:00
Compare
Author
Contributor
Copy link

The check for DM 0x18 abstractauto containing writable bits is now present as a separate first commit, which only touches riscv_debug.c/h. The next two commits have been manually rebased on whatever 2185 evolved into. Intermediate testing on blackpill-f411ce against GD32VF103 shows ~7.5x compare-sections read speed boost and ~2x (gdb) load flash programming boost (SRAM restore not tested) vs. single-progbuf. AAM might be preferable.

Problem 1. There is now partial setup outside the loop, and if any of the DM/CSR accesses fail, I have no good way of bailing out through restore (of saved GPR A0/A1). Just so it compiles (and so I don't simply return) I've inserted a do-while(false) idiom.
Problem 2. The current form is too simple, it always assumes that autoincrement is supported, and uses 2+1 slots. I need to properly guard and untangle autoexec path from single path.
Both problems could be solved if I extract the loops into their own small helper static functions, which then can return an error and still hit the GPR restore. However, I would not want to bloat BMF size greatly, current size-diff is +288.

Sidenote, Codeberg web interface still shows the old base PR2185 commits which is what I initially pushed to PR2225, even though I have already rebased and force-pushed twice (and it does not show these commits on PR Conversation page -- only on PR commits page). I don't like this, and it's different from Github.

The check for DM 0x18 `abstractauto` containing writable bits is now present as a separate first commit, which only touches riscv_debug.c/h. The next two commits have been manually rebased on whatever 2185 evolved into. Intermediate testing on `blackpill-f411ce` against GD32VF103 shows ~7.5x `compare-sections` read speed boost and ~2x `(gdb) load` flash programming boost (SRAM restore not tested) vs. single-progbuf. AAM might be preferable. Problem 1. There is now partial setup outside the loop, and if any of the DM/CSR accesses fail, I have no good way of bailing out through restore (of saved GPR A0/A1). Just so it compiles (and so I don't simply `return`) I've inserted a do-while(false) idiom. Problem 2. The current form is too simple, it always assumes that autoincrement is supported, and uses 2+1 slots. I need to properly guard and untangle autoexec path from single path. Both problems could be solved if I extract the loops into their own small helper static functions, which then can return an error and still hit the GPR restore. However, I would not want to bloat BMF size greatly, current size-diff is +288. Sidenote, Codeberg web interface still shows the old base PR2185 commits which is what I initially pushed to PR2225, even though I have already rebased and force-pushed twice (and it does not show these commits on PR Conversation page -- only on PR commits page). I don't like this, and it's different from Github.
ALTracer changed title from (削除) Feature: RV32I Progbuf-based memory access support, with autoexec (削除ここまで) to WIP: Feature: RV32I Progbuf-based memory access support, with autoexec 2026年04月14日 13:17:05 +02:00
dragonmux left a comment
Copy link

Got a few notes - know this is WIP still, but hopefully they help steer this in a suitable direction to get it mergeable.

Got a few notes - know this is WIP still, but hopefully they help steer this in a suitable direction to get it mergeable.
@ -623,9 +628,11 @@ static void riscv32_progbuf_mem_read(
/* Fill the program buffer */
if (!riscv_dm_write(hart->dbg_module, RV_DM_PROGBUF_BASE, progbuf_read))
return;
if (!riscv_dm_write(hart->dbg_module, RV_DM_PROGBUF_BASE + 1U, RV_ADDI_A0_A0_4))

This write should really be gated on if hart->progbuf_size > 1U and if it's 2 then if there's implebreak - likewise, the main data transport loop should have a check if running on a hart->progbuf_size == 1U part to do the A0 updates still.

This write should really be gated on if `hart->progbuf_size > 1U` and if it's 2 then if there's implebreak - likewise, the main data transport loop should have a check if running on a `hart->progbuf_size == 1U` part to do the A0 updates still.
Author
Contributor
Copy link

The way I get around this is RV_HART_FLAG_ABSTRACTAUTO flag depends on hart->progbuf_size >= 2U, set in riscv_hart_discover_isa(). The main data transport loops shall differ for single and auto.

The way I get around this is `RV_HART_FLAG_ABSTRACTAUTO` flag depends on `hart->progbuf_size >= 2U`, set in `riscv_hart_discover_isa()`. The main data transport loops shall differ for single and auto.
@ -636,3 +643,2 @@
uint8_t *const data = (uint8_t *)dest;
for (size_t offset = 0; offset < len; offset += access_length) {
do {

Why the do? Would be better to drop this out of any kind of loop, de-indenting - helps code flow. If it's done for the scope, the { on its own opens one, no need again for a loop statement around the scope..

Why the `do`? Would be better to drop this out of any kind of loop, de-indenting - helps code flow. If it's done for the scope, the `{` on its own opens one, no need again for a loop statement around the scope..
Author
Contributor
Copy link

The main reason I added a do-while-false trick here is to be able to break out early from it but not exit the entire function, there is important (unskippable) GPR restore. It also minimized the git diff, but that is not as important.

The main reason I added a `do-while-false` trick here is to be able to break out early from it but not exit the entire function, there is important (unskippable) GPR restore. It also minimized the git diff, but that is not as important.
@ -653,1 +662,4 @@
break;
/* If Abstract Command Autoexec is supported, then use efficient sequential reads */
if (len / access_length > 1 && hart->flags & RV_HART_FLAG_ABSTRACTAUTO)

U after constant, & binds in a way where you want the parens and an actual logic test - so (hart->flags & RV_HART_FLAG_ABSTRACTAUTO) != 0U. Not doing it this way is not only a clang-tidy lint, it's not even necessarily correct. Thankfully it's extremely cheap though.

`U` after constant, `&` binds in a way where you want the parens and an actual logic test - so `(hart->flags & RV_HART_FLAG_ABSTRACTAUTO) != 0U`. Not doing it this way is not only a `clang-tidy` lint, it's not even necessarily correct. Thankfully it's extremely cheap though.
Author
Contributor
Copy link

Applied, thanks.

Applied, thanks.
@ -654,3 +675,4 @@
riscv32_unpack_data(data + offset, value, access_width);
}
if (len / access_length > 1 && hart->flags & RV_HART_FLAG_ABSTRACTAUTO)

len / access_length should be cached given this, and the same notes as above apply.

`len / access_length` should be cached given this, and the same notes as above apply.
Author
Contributor
Copy link

Hoisted up into a local bool flag.

Hoisted up into a local bool flag.
@ -713,1 +742,4 @@
break;
/* If Abstract Command Autoexec is supported, then use efficient sequential reads */
if (len / access_length > 1 && hart->flags & RV_HART_FLAG_ABSTRACTAUTO)

And again, ditto here

And again, ditto here
@ -714,2 +755,4 @@
break;
}
if (len / access_length > 1 && hart->flags & RV_HART_FLAG_ABSTRACTAUTO)

And again, ditto here

And again, ditto here
ALTracer force-pushed feature/riscv32-progbuf-memory-rw-autoexec from b3adb9e13b to dc0466d9d7
Some checks are pending
ci/woodpecker/pr/build-firmware/1 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/2 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/3 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/4 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/5 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/6 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/7 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/8 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/9 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/10 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/11 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/12 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/13 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/14 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/15 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/16 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/17 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/18 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/19 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/20 Pipeline is pending approval
ci/woodpecker/pr/build-linux/1 Pipeline is pending approval
ci/woodpecker/pr/build-linux/2 Pipeline is pending approval
ci/woodpecker/pr/build-windows Pipeline is pending approval
ci/woodpecker/pr/lint Pipeline is pending approval
2026年05月14日 13:31:53 +02:00
Compare
riscv32: Cache the abstractauto check and use progbuf more carefully
Some checks are pending
ci/woodpecker/pr/build-firmware/1 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/2 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/3 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/4 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/5 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/6 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/7 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/8 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/9 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/10 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/11 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/12 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/13 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/14 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/15 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/16 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/17 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/18 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/19 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/20 Pipeline is pending approval
ci/woodpecker/pr/build-linux/1 Pipeline is pending approval
ci/woodpecker/pr/build-linux/2 Pipeline is pending approval
ci/woodpecker/pr/build-windows Pipeline is pending approval
ci/woodpecker/pr/lint Pipeline is pending approval
2aa2d4bc55
ALTracer force-pushed feature/riscv32-progbuf-memory-rw-autoexec from 2aa2d4bc55
Some checks are pending
ci/woodpecker/pr/build-firmware/1 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/2 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/3 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/4 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/5 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/6 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/7 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/8 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/9 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/10 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/11 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/12 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/13 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/14 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/15 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/16 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/17 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/18 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/19 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/20 Pipeline is pending approval
ci/woodpecker/pr/build-linux/1 Pipeline is pending approval
ci/woodpecker/pr/build-linux/2 Pipeline is pending approval
ci/woodpecker/pr/build-windows Pipeline is pending approval
ci/woodpecker/pr/lint Pipeline is pending approval
to bf36984483
Some checks are pending
ci/woodpecker/pr/build-firmware/1 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/2 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/3 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/4 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/5 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/6 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/7 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/8 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/9 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/10 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/11 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/12 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/13 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/14 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/15 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/16 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/17 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/18 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/19 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/20 Pipeline is pending approval
ci/woodpecker/pr/build-linux/1 Pipeline is pending approval
ci/woodpecker/pr/build-linux/2 Pipeline is pending approval
ci/woodpecker/pr/build-windows Pipeline is pending approval
ci/woodpecker/pr/lint Pipeline is pending approval
2026年06月13日 22:22:41 +02:00
Compare
Some checks are pending
ci/woodpecker/pr/build-firmware/1 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/2 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/3 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/4 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/5 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/6 Pipeline is pending approval
Required
Details
ci/woodpecker/pr/build-firmware/7 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/8 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/9 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/10 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/11 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/12 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/13 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/14 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/15 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/16 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/17 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/18 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/19 Pipeline is pending approval
ci/woodpecker/pr/build-firmware/20 Pipeline is pending approval
ci/woodpecker/pr/build-linux/1 Pipeline is pending approval
Required
Details
ci/woodpecker/pr/build-linux/2 Pipeline is pending approval
ci/woodpecker/pr/build-windows Pipeline is pending approval
Required
Details
ci/woodpecker/pr/lint Pipeline is pending approval
Required
Details
This pull request is marked as a work in progress.
This branch is out-of-date with the base branch
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u feature/riscv32-progbuf-memory-rw-autoexec:ALTracer-feature/riscv32-progbuf-memory-rw-autoexec
git switch ALTracer-feature/riscv32-progbuf-memory-rw-autoexec
Sign in to join this conversation.
No reviewers
Labels
Clear labels
BMD App
Black Magic Debug App (aka. PC hosted) (not firmware)
BMP Firmware
Black Magic Probe Firmware (not PC hosted software)
Bug
Confirmed bug
Build system
Build system
Can't reproduce
Maintainers can't reproduce this problem
CI
Continuous Integration System
Contribution wanted
User contributions welcome
Documentation
Project documentation
Draft
Work in progress draft
Duplicate
This issue or pull request already exists
Enhancement
General project improvement
Feedback wanted
Requires additional submitter feedback
Foreign Host Board
Non Native hardware to runing Black Magic firmware on
GDB
Issue/PR related to GDB
Good first issue
Good for newcommers
HwIssue Mitigation
Solving or mitigating a Hardware issue in Software
Information Needed
Maintainers need more information
NativeHardware
Official Black Magic Debug Hardware
New Host Board
New hardware to run Black Magic firmware on
New Target
New debug target
Off Topic
Something that does not involve the project in any way
Potential Bug
A potential, unconfirmed or very special circumstance bug
Regression
Bug caused by a regression
User Interest Needed
More user interest required before consideration
User Testing Needed
Looking for user testing reports
Won't fix
Outside of the project scope or works as intended
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
blackmagic-debug/blackmagic!2225
Reference in a new issue
blackmagic-debug/blackmagic
No description provided.
Delete branch "ALTracer/blackmagic:feature/riscv32-progbuf-memory-rw-autoexec"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?