7
31
Fork
You've already forked blackmagic
23

Feature: add new targets: hpm53xx,hpm67xx,hpm68xx,hpm6pxx #2228

Open
mTOTm wants to merge 4 commits from mTOTm/blackmagic:dev/jiance.zhang/add_hpm_supoort into main
pull from: mTOTm/blackmagic:dev/jiance.zhang/add_hpm_supoort
merge into: blackmagic-debug:main
blackmagic-debug:main
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

Background

Thanks to the BMP mainline's debugging support for riscv32, HPMicro chips can now be debugged without any modifications. HPMicro is a Chinese company that uses Andes D45 or D25 cores in its products, which comply with the RISC-V Debug Specification version 0.13. As a result, BMP works with these chips out of the box.

However, BMP currently lacks support for Flash programming on these chips. To address this, I have added Flash support for four HPMicro chip families based on the open-source implementations from OpenOCD and the HPM SDK:

  • HPM53xx
  • HPM67xx
  • HPM68xx
  • HPM6Pxx

Technical Details

All HPMicro chips use external Flash. The vendor provides a unified ROM API that enables convenient Flash erase and write operations.

One thing to note is that users may have different pin assignments and XPI controller instance configurations. Therefore, I extended the xpi_cfg command to allow users to customize the Flash configuration before programming.

The detailed implementation can be found in src/target/hpm_xpi.c

The implementation of this part references the official OpenOCD download algorithm support provided by HPMicro:
https://github.com/hpmicro/hpm_sdk/tree/main/samples/openocd_algo

blackmagic ^_^ >:./build/blackmagic -tj
Black Magic Debug App v2.0.0-479-g8dfdd8f3-dirty
 for Black Magic Probe, ST-Link v2 and v3, CMSIS-DAP, J-Link, FTDI (MPSSE) and WCH-Link
Using 1d50:6018 DFD496DE Black Magic Debug
 Black Magic Probe (ST-Link/v2) v2.0.0-479-g8dfdd8f3-dirty
Running in Test Mode
Target voltage: 3.31V
Speed set to 6.000MHz for JTAG
Resetting TAP
Change state to Shift-DR
Scanning out ID codes
Return to Run-Test/Idle
Change state to Shift-IR
Scanning out IRs
Return to Run-Test/Idle
Change state to Shift-DR
Return to Run-Test/Idle
ID code 0x1000563d: Andes Tech RISC-V DTM.
RISC-V debug v0.13/v1.0 DMI
RISC-V debug v0.13 DM
Hart has 4 data registers and 8 progbuf registers
Attempting 128-bit read on misa
CSR access failed: 2
CSR access failed: 2
CSR access failed: 2
CSR access failed: 2
Attempting 64-bit read on misa
CSR access failed: 3
CSR access failed: 3
CSR access failed: 3
Attempting 32-bit read on misa
Hart 0: 32-bit RISC-V (arch = 80000025), rv32igcb ISA (exts = 0090112f), vendor = 61e, impl = 410
Hart has 8 trigger slots available
-> riscv32_probe
*** 1 HPM53xx rv32igcb
RAM Start: 0x00000000 length = 0x40000
RAM Start: 0x00080000 length = 0x40000
RAM Start: 0xf0400000 length = 0x8000
Flash Start: 0x80000000 length = 0xfff0000 blocksize 0x1000
hello_world ^_^ >:gdb-multiarch -nx build/output/demo.elf -ex "tar ext /dev/ttyACM0" -ex "mon j" -ex "att 1" -ex "load"
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04.2) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "aarch64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
 <http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from build/output/demo.elf...
Remote debugging using /dev/ttyACM0
Target voltage: 3.32V
Available Targets:
No. Att Driver
 1 HPM53xx rv32igcb
Attaching to program: /home/firefly/Documents/Code/hpm_workspace/hello_world/build/output/demo.elf, Remote target
0x20017a50 in ?? ()
Loading section .nor_cfg_option, size 0x10 lma 0x80000400
Loading section .boot_header, size 0x90 lma 0x80001000
Loading section .start, size 0x48 lma 0x80003000
Loading section .vectors, size 0x360 lma 0x80003048
Loading section .text, size 0xb4d8 lma 0x800033a8
Loading section .eh_frame, size 0x28 lma 0x8000e880
Loading section .data, size 0x1c8 lma 0x8000e8a8
Start address 0x80003000, load size 47888
Transfer rate: 10 KB/sec, 886 bytes/write

Your checklist for this pull request

Closing issues

<!-- Filling this template is mandatory --> ## Detailed description ### Background Thanks to the BMP mainline's debugging support for riscv32, HPMicro chips can now be debugged without any modifications. HPMicro is a Chinese company that uses Andes D45 or D25 cores in its products, which comply with the **RISC-V Debug Specification version 0.13**. As a result, BMP works with these chips out of the box. However, BMP currently lacks support for Flash programming on these chips. To address this, I have added Flash support for four HPMicro chip families based on the open-source implementations from OpenOCD and the HPM SDK: - HPM53xx - HPM67xx - HPM68xx - HPM6Pxx ### Technical Details All HPMicro chips use external Flash. The vendor provides a unified **ROM API** that enables convenient Flash erase and write operations. One thing to note is that users may have different pin assignments and XPI controller instance configurations. Therefore, I extended the `xpi_cfg` command to allow users to customize the Flash configuration before programming. The detailed implementation can be found in `src/target/hpm_xpi.c` The implementation of this part references the official OpenOCD download algorithm support provided by HPMicro: [https://github.com/hpmicro/hpm_sdk/tree/main/samples/openocd_algo](https://github.com/hpmicro/hpm_sdk/tree/main/samples/openocd_algo) ### BMDA(stlink_v2) Test ```bash blackmagic ^_^ >:./build/blackmagic -tj Black Magic Debug App v2.0.0-479-g8dfdd8f3-dirty for Black Magic Probe, ST-Link v2 and v3, CMSIS-DAP, J-Link, FTDI (MPSSE) and WCH-Link Using 1d50:6018 DFD496DE Black Magic Debug Black Magic Probe (ST-Link/v2) v2.0.0-479-g8dfdd8f3-dirty Running in Test Mode Target voltage: 3.31V Speed set to 6.000MHz for JTAG Resetting TAP Change state to Shift-DR Scanning out ID codes Return to Run-Test/Idle Change state to Shift-IR Scanning out IRs Return to Run-Test/Idle Change state to Shift-DR Return to Run-Test/Idle ID code 0x1000563d: Andes Tech RISC-V DTM. RISC-V debug v0.13/v1.0 DMI RISC-V debug v0.13 DM Hart has 4 data registers and 8 progbuf registers Attempting 128-bit read on misa CSR access failed: 2 CSR access failed: 2 CSR access failed: 2 CSR access failed: 2 Attempting 64-bit read on misa CSR access failed: 3 CSR access failed: 3 CSR access failed: 3 Attempting 32-bit read on misa Hart 0: 32-bit RISC-V (arch = 80000025), rv32igcb ISA (exts = 0090112f), vendor = 61e, impl = 410 Hart has 8 trigger slots available -> riscv32_probe *** 1 HPM53xx rv32igcb RAM Start: 0x00000000 length = 0x40000 RAM Start: 0x00080000 length = 0x40000 RAM Start: 0xf0400000 length = 0x8000 Flash Start: 0x80000000 length = 0xfff0000 blocksize 0x1000 ``` ### BMF(stlink_v2) Test ```bash hello_world ^_^ >:gdb-multiarch -nx build/output/demo.elf -ex "tar ext /dev/ttyACM0" -ex "mon j" -ex "att 1" -ex "load" GNU gdb (Ubuntu 12.1-0ubuntu1~22.04.2) 12.1 Copyright (C) 2022 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "aarch64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <https://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from build/output/demo.elf... Remote debugging using /dev/ttyACM0 Target voltage: 3.32V Available Targets: No. Att Driver 1 HPM53xx rv32igcb Attaching to program: /home/firefly/Documents/Code/hpm_workspace/hello_world/build/output/demo.elf, Remote target 0x20017a50 in ?? () Loading section .nor_cfg_option, size 0x10 lma 0x80000400 Loading section .boot_header, size 0x90 lma 0x80001000 Loading section .start, size 0x48 lma 0x80003000 Loading section .vectors, size 0x360 lma 0x80003048 Loading section .text, size 0xb4d8 lma 0x800033a8 Loading section .eh_frame, size 0x28 lma 0x8000e880 Loading section .data, size 0x1c8 lma 0x8000e8a8 Start address 0x80003000, load size 47888 Transfer rate: 10 KB/sec, 886 bytes/write ``` <!-- Explain the **details** for making this change. * Is a new feature implemented? * What existing problem(s) does the pull request solve? * How does the pull request solve these problems? Please provide enough information so that others can review your pull request. Information embedded in the description part of the commits doesn't count. --> ## 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)) * [x] 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 <!-- put "fixes #XXXX" here to auto-close the issue(s) that your PR fixes (if any). -->
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 30c7b4d19b
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 6a35779386
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月10日 04:45:07 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 6a35779386
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 55e2443ff1
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月10日 04:46:36 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 55e2443ff1
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 6f781f08ee
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月10日 12:05:35 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 6f781f08ee
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 8f88c612f6
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月10日 12:12:05 +02:00
Compare
dragonmux left a comment
Copy link

There are definititely improvements could be made, but this is a good start. Please see the review below for what stands out to us - some of the functions, particularly around Flash handling, feel like they keep repeating themselves.. this makes them prime targets for refactoring into a common function and then the specific functionality needed for the particular operation around that.

There are definititely improvements could be made, but this is a good start. Please see the review below for what stands out to us - some of the functions, particularly around Flash handling, feel like they keep repeating themselves.. this makes them prime targets for refactoring into a common function and then the specific functionality needed for the particular operation around that.
@ -0,0 +52,4 @@
#include "riscv_debug.h"
#include "jep106.h"
#define ANDES_RV_GPR_RA (1U) /* x1 - return address */

Please drop the parens around all these single item constants - nothing else in the code base does this, so please don't cargo cult you own style in here.

Please drop the parens around all these single item constants - nothing else in the code base does this, so please don't cargo cult you own style in here.
Author
Contributor
Copy link

OK, I have removed the parentheses for the single constants.

OK, I have removed the parentheses for the single constants.
dragonmux marked this conversation as resolved
@ -0,0 +114,4 @@
/* HPM68XX series memory layout */
#define HPM68XX_XPI_CTL_BASE (0xf3000000U)
#define HPM68XX_SRAM_ILM_BASE (0x00000000U)
#define HPM68XX_SRAM_ILM_SIZE (256U * 1024U)

NB to previous note: parens in situations like this are fine - there are two things with an operator in the define - that's what the parens are there to ensure order of ops for when substituted.. but doing it for all constants is the thing we don't do in BMD.

NB to previous note: parens in situations like this are fine - there are two things with an operator in the define - that's what the parens are there to ensure order of ops for when substituted.. but doing it for all constants is the thing we don't do in BMD.
Author
Contributor
Copy link

As mentioned before, the suggested changes have been implemented.

As mentioned before, the suggested changes have been implemented.
dragonmux marked this conversation as resolved
@ -0,0 +153,4 @@
#define HPM_ALGO_STACK_BASE_ADDR (HPM_ALGO_LOAD_BASE_ADDR + 10240)
#define HPM_ALGO_BUFF_BASE_ADDR (HPM_ALGO_STACK_BASE_ADDR + 256)
/*

Please use the code base multi-line comment style:

/*
 * A multi-line
 * comment
 * looks like this
 */

Please note the start of line *'s aligned to the start and end of comment ones. This and the next comment should just b one signle comment with some sort of explainer as to what this table means and why it's here - we can infer it's probably because of the constants below, but there's no clear through line to them and thus what those constants actually mean and so why this block is here.

Please use the code base multi-line comment style: ```c /* * A multi-line * comment * looks like this */ ``` Please note the start of line `*`'s aligned to the start and end of comment ones. This and the next comment should just b one signle comment with some sort of explainer as to what this table means and why it's here - we can infer it's probably because of the constants below, but there's no clear through line to them and thus what those constants actually mean and so why this block is here.
Author
Contributor
Copy link

In the new code, the format of multiple lines of comments has been changed.

In the new code, the format of multiple lines of comments has been changed.
dragonmux marked this conversation as resolved
@ -0,0 +196,4 @@
#define HPM_IMPLID_HPM67XX (0x00000330U) /* mimpid for HPM67XX */
#define HPM_IMPLID_HPM53XX (0x00000410U) /* mimpid for HPM53XX */
/* HPMicro chip identification via RISC-V CSR registers (mvendorid, marchid, mimpid)

Same note about multi-line comment style.

Same note about multi-line comment style.
Author
Contributor
Copy link

As mentioned before, the suggested changes have been implemented.

As mentioned before, the suggested changes have been implemented.
dragonmux marked this conversation as resolved
@ -0,0 +199,4 @@
/* HPMicro chip identification via RISC-V CSR registers (mvendorid, marchid, mimpid)
* Note: mvendorid is already converted by BlackMagic (0x31E -> 0x61E)
*/
typedef struct {

Please don't define anonymously named structs - struct hpm_chip_id - please name it.. this matches the typedef. Structures in BMD are typedef'd with _s suffixing their name, making the typedef for this hpm_chip_id_s please.

Please don't define anonymously named structs - `struct hpm_chip_id` - please name it.. this matches the typedef. Structures in BMD are typedef'd with `_s` suffixing their name, making the typedef for this `hpm_chip_id_s` please.
Author
Contributor
Copy link

Thank you. This change has been implemented.

Thank you. This change has been implemented.
dragonmux marked this conversation as resolved
@ -0,0 +210,4 @@
{JEP106_MANUFACTURER_ANDES, HPM_ARCHID_ANDES_D45, HPM_IMPLID_HPM68XX, "HPM68xx"},
{JEP106_MANUFACTURER_ANDES, HPM_ARCHID_ANDES_D45, HPM_IMPLID_HPM67XX, "HPM67xx"},
{JEP106_MANUFACTURER_ANDES, HPM_ARCHID_ANDES_D25, HPM_IMPLID_HPM53XX, "HPM53xx"},
{0, 0, 0, NULL} /* Terminator */

The more commonly used term for this is sentinel - also please include the trailing , after the closing } for this struct instance so clang-format doesn't reformat this badly.

The more commonly used term for this is `sentinel` - also please include the trailing `,` after the closing `}` for this struct instance so clang-format doesn't reformat this badly.
Author
Contributor
Copy link

Thank you. This change has been implemented.

Thank you. This change has been implemented.
dragonmux marked this conversation as resolved
@ -0,0 +221,4 @@
/* Search for exact match */
for (size_t i = 0; hpm_chip_table[i].name != NULL; i++) {
if (hpm_chip_table[i].arch == arch && hpm_chip_table[i].impl == impl) {

This inner if is considered a single-line statement, so please drop its braces ({}) - however the for loop outside is not because there are two statement lines within the {} (yes, we know technically the if counts as one syntactically.. we're talking visually) so its braces remain.

This inner `if` is considered a single-line statement, so please drop its braces (`{}`) - however the `for` loop outside is not because there are two statement lines within the {} (yes, we know technically the `if` counts as one syntactically.. we're talking visually) so its braces remain.
Author
Contributor
Copy link

OK, it has been changed.

OK, it has been changed.
dragonmux marked this conversation as resolved
@ -0,0 +229,4 @@
return NULL; /* Generic fallback */
}
typedef struct {

Same thing about anonymous structs, and please put all struct definitions together before the first function.

Same thing about anonymous structs, and please put all struct definitions together before the first function.
Author
Contributor
Copy link

OK, it has been changed.

OK, it has been changed.
dragonmux marked this conversation as resolved
@ -0,0 +230,4 @@
}
typedef struct {
uint32_t total_sz_in_bytes;

size, not sz please - total_size_bytes, or just total_size is more than fine for a name here. Cutting vowels out is not useful and just leads to confusion for other readers unfamiliar with your choice of vowels to drop.

`size`, not `sz` please - `total_size_bytes`, or just `total_size` is more than fine for a name here. Cutting vowels out is not useful and just leads to confusion for other readers unfamiliar with your choice of vowels to drop.
Author
Contributor
Copy link

Changed

Changed
dragonmux marked this conversation as resolved
@ -0,0 +246,4 @@
static hpm_xpi_cfg_t xpi_cfgs;
static const uint8_t hpm_flash_algo[]=

Rather than embedding a giant blob of code, please use the flashstub directory and mechanism and use that to provide the data to embed here. Source for this blob is not optional for it to be able to be included in BMD.

Rather than embedding a giant blob of code, please use the flashstub directory and mechanism and use that to provide the data to embed here. Source for this blob is not optional for it to be able to be included in BMD.
Author
Contributor
Copy link

Thank you for reminding me of the existence of the flashstub mechanism. I have now begun to implement it in the initial stage.

Thank you for reminding me of the existence of the flashstub mechanism. I have now begun to implement it in the initial stage.
dragonmux marked this conversation as resolved
@ -0,0 +355,4 @@
{
(void)argc;
(void)argv;
uint32_t tmp = 0;

Please move this down to where the variable is first used - line 370.

Please move this down to where the variable is first used - line 370.
Author
Contributor
Copy link

This part of the code has been restructured.

This part of the code has been restructured.
dragonmux marked this conversation as resolved
@ -0,0 +356,4 @@
(void)argc;
(void)argv;
uint32_t tmp = 0;
uint32_t timeout = 0;

Please move this down to the loop it's used in. Please prefer for looping than do-while'ing.. the for version of the loop below has the more comprehensible form:
for (uint32_t timeout = 0U; timeout < HPM_ALGO_CMD_TIMEOUT; ++timeout) which is much easier to understand than a do-while as written. If timeout is absolutely required outside that loop, then define the variable right above the loop, leaving the init section of the for blank.

Part of the reason for this is that x++ has side-effects, thus x++ < value has side-effects and this winds up being surprising to the reader - we want to avoid that kind of susprise as much as possible.

Please move this down to the loop it's used in. Please prefer `for` looping than do-while'ing.. the `for` version of the loop below has the more comprehensible form: `for (uint32_t timeout = 0U; timeout < HPM_ALGO_CMD_TIMEOUT; ++timeout)` which is much easier to understand than a do-while as written. If `timeout` is absolutely required outside that loop, then define the variable right above the loop, leaving the init section of the `for` blank. Part of the reason for this is that `x++` has side-effects, thus `x++ < value` has side-effects and this winds up being surprising to the reader - we want to avoid that kind of susprise as much as possible.
Author
Contributor
Copy link

This part of the code has been restructured and is written in accordance with the similar code in the repository.

This part of the code has been restructured and is written in accordance with the similar code in the repository.
dragonmux marked this conversation as resolved
@ -0,0 +359,4 @@
uint32_t timeout = 0;
/* uint32_t flash_get_info(uint32_t flash_base, hpm_flash_info_t *flash_info) */
hpm_flash_info_t flash_info;
tc_printf(target, " cfg_xpi_header: 0x%" PRIx32 "\n", xpi_cfgs.header);

Rather than putting out what feels like machine names etc.. please output a header line such as Config:, and use more huan names such as XPI Header:, Flash Base:, etc.. do not worry about aligning everything.. it's a use of Flash space that is better avoided, especially with the fact all these strings wind up with extra spaces on the front of them. Given they're all PRIx32, please add 08 to the format specifer, as in %08 so they print at a fixed width.

Rather than putting out what feels like machine names etc.. please output a header line such as `Config:`, and use more huan names such as `XPI Header:`, `Flash Base:`, etc.. do not worry about aligning everything.. it's a use of Flash space that is better avoided, especially with the fact all these strings wind up with extra spaces on the front of them. Given they're all PRIx32, please add `08` to the format specifer, as in `%08` so they print at a fixed width.
Author
Contributor
Copy link

I have cancelled this command because it should be user input. If there is a need to add it again in the future, I will re-enable it.

I have cancelled this command because it should be user input. If there is a need to add it again in the future, I will re-enable it.
dragonmux marked this conversation as resolved
@ -0,0 +374,4 @@
target_reg_write(target, ANDES_RV_GPR_A1, &tmp, sizeof(tmp)); /* set flash header */
tmp = HPM_ALGO_LOAD_BASE_ADDR + HPM_FLASH_GET_INFO;
target_reg_write(target, ANDES_RV_GPR_DPC, &tmp, sizeof(tmp)); /* set pc */
tmp = HPM_ALGO_LOAD_BASE_ADDR + HPM_FLASH_GET_INFO + HPM_FLASH_ENTRY_LEN;

This builds on the previous variable, so just += - there's no point fully reloading the variable like this.

This builds on the previous variable, so just `+=` - there's no point fully reloading the variable like this.
Author
Contributor
Copy link

This part of the code has been refactored into hpm_run_stub.

This part of the code has been refactored into hpm_run_stub.
dragonmux marked this conversation as resolved
@ -0,0 +386,4 @@
if (tmp != 0 || timeout >= HPM_ALGO_WRITE_TIMEOUT)
return true;
target->mem_read(target, &flash_info, HPM_ALGO_BUFF_BASE_ADDR, sizeof(flash_info)); /* get flash info */
tc_printf(target, " real total size: 0x%" PRIx32 "\n", flash_info.total_sz_in_bytes);

Same comment about aligning and using hex outputs that aren't formatted to a fixed width.

Same comment about aligning and using hex outputs that aren't formatted to a fixed width.
Author
Contributor
Copy link

I have cancelled this command

I have cancelled this command
dragonmux marked this conversation as resolved
@ -0,0 +409,4 @@
target_reg_write(target, ANDES_RV_GPR_DPC, &tmp, sizeof(tmp)); /* set pc */
tmp = HPM_ALGO_LOAD_BASE_ADDR + HPM_FLASH_ERASE + HPM_FLASH_ENTRY_LEN;
target_reg_write(target, ANDES_RV_GPR_RA, &tmp, sizeof(tmp)); /* set ra */
target_halt_resume(target, false); /* run flash algo */

This run-and-loop pattern appears in at least two places - please refactor into a function to be called so it can be named, and maintained just once.

This run-and-loop pattern appears in at least two places - please refactor into a function to be called so it can be named, and maintained just once.
Author
Contributor
Copy link

This part of the code has been refactored into hpm_run_stub.thank you for your reminder.

This part of the code has been refactored into hpm_run_stub.thank you for your reminder.
dragonmux marked this conversation as resolved
@ -0,0 +428,4 @@
static bool hpm_xpi_cmd_config(target_s *const target, int argc, const char **argv)
{
if (argc < 4 || argc > 6) {
DEBUG_ERROR("xpi_cfg args invalid \n");

Extra space at the end of the message. Please simplify the message down a touch to something like Invalid arguments - the user already knows what monitor command the typed to get here.

Extra space at the end of the message. Please simplify the message down a touch to something like `Invalid arguments` - the user already knows what monitor command the typed to get here.
Author
Contributor
Copy link

Changed

Changed
dragonmux marked this conversation as resolved
@ -0,0 +451,4 @@
xpi_cfgs.opt1 = strtoul(argv[5], NULL, 0);
break;
default:
return false;

This return is impossible to hit because of teh above if check.. so, just leave it an empty default block.

This `return` is impossible to hit because of teh above `if` check.. so, just leave it an empty `default` block.
Author
Contributor
Copy link

Changed

Changed
dragonmux marked this conversation as resolved
@ -0,0 +458,4 @@
return true;
}
const command_s hpm_xpi_cmd_list[] = {

This monitor command list should be defined nearer the top of the file - forward declaring the monitor functions is not only recomended, but preferred, with monitor functions appearing after everything else in the file.

This monitor command list should be defined nearer the top of the file - forward declaring the monitor functions is not only recomended, but preferred, with monitor functions appearing after everything else in the file.
Author
Contributor
Copy link

Changed

Changed
dragonmux marked this conversation as resolved
@ -0,0 +582,4 @@
target_add_flash(target, flash);
}
bool hpm_xpi_probe(target_s *const target)

This and the function above should be the two first functions to appear in this file. Please use forward declarations of functions to make that happen. See how something like stm32h5.c or similar is organised.

This and the function above should be the two first functions to appear in this file. Please use forward declarations of functions to make that happen. See how something like stm32h5.c or similar is organised.
Author
Contributor
Copy link

OK, it has been changed.

OK, it has been changed.
dragonmux marked this conversation as resolved
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 8f88c612f6
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 130ce5f114
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日 11:41:26 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 130ce5f114
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 c05aa142ed
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日 11:48:02 +02:00
Compare
mTOTm changed title from (削除) Feature: add new targets: hpm53xx,hpm67xx,hpm68xx (削除ここまで) to Feature: add new targets: hpm53xx,hpm67xx,hpm68xx,HPM6Pxx 2026年04月13日 11:51:09 +02:00
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from c05aa142ed
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 133cf5ed37
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日 11:57:22 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 133cf5ed37
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 5951809b7a
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日 12:22:48 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 5951809b7a
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 3a97a62b26
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日 12:31:24 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 3a97a62b26
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 b3b5aee6b7
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日 18:29:44 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from b3b5aee6b7
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 d96692dc45
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日 18:34:57 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from d96692dc45
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 84c23a08c0
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月14日 03:54:03 +02:00
Compare
dragonmux left a comment
Copy link

Need to go through the new code more carefully and all, but there are a few notes - particularly around a check that can't ever succeed. Please prefer to introduce your change set not as one übercommit, but as a series - eg, bringing the target probe and build system changes in with a stub probe function, then detection, then the Flash stub stuff, then Flash handling, then target-specific commands.. übercommits are hard to work around if there's anything wrong, and to dissect.

Please also check over the contribution guidelines on how to suffix commits - flashstub/hpmicro: and hpm_xpi: would be suitable suffixes for the commit scheme suggested. If you don't break things down into multiple commits as that's a lot of work (understandable.. something for future contribs) then suffixing the commit with hpm_xpi: would be suitable. Use the message to describe in a sentence what the commit does please.

Need to go through the new code more carefully and all, but there are a few notes - particularly around a check that can't ever succeed. Please prefer to introduce your change set not as one übercommit, but as a series - eg, bringing the target probe and build system changes in with a stub probe function, then detection, then the Flash stub stuff, then Flash handling, then target-specific commands.. übercommits are hard to work around if there's anything wrong, and to dissect. Please also check over the contribution guidelines on how to suffix commits - `flashstub/hpmicro: ` and `hpm_xpi: ` would be suitable suffixes for the commit scheme suggested. If you don't break things down into multiple commits as that's a lot of work (understandable.. something for future contribs) then suffixing the commit with `hpm_xpi: ` would be suitable. Use the message to describe in a sentence what the commit does please.
@ -0,0 +267,4 @@
bool hpm_xpi_probe(target_s *const target)
{
riscv_hart_s *hart = riscv_hart_struct(target);
if (!hart) {

It's impossible to get here and for this check to fail - riscv_hart_struct() cannot fail at this point. There's no need to check for NULL on the result.

It's impossible to get here and for this check to fail - `riscv_hart_struct()` cannot fail at this point. There's no need to check for NULL on the result.
Author
Contributor
Copy link

OK, it has been changed.

OK, it has been changed.
dragonmux marked this conversation as resolved
@ -0,0 +273,4 @@
}
const char *chip_name = hpm_identify_chip(hart->vendorid, hart->archid, hart->implid);
if (!chip_name) {

Please drop the braces - it's a single-statement if.

Please drop the braces - it's a single-statement `if`.
Author
Contributor
Copy link

OK, it has been changed.

OK, it has been changed.
dragonmux marked this conversation as resolved
Author
Contributor
Copy link

@dragonmux wrote in #2228 (comment):

There are definititely improvements could be made, but this is a good start. Please see the review below for what stands out to us - some of the functions, particularly around Flash handling, feel like they keep repeating themselves.. this makes them prime targets for refactoring into a common function and then the specific functionality needed for the particular operation around that.

Thanks for the thorough review, and sorry about the übercommit — being my first contribution, I didn't quite get the granularity right. I've now broken the changes into smaller commits and also fixed the two code issues you pointed out. Will definitely follow the commit guidelines moving forward. Appreciate your patience.

@dragonmux wrote in https://codeberg.org/blackmagic-debug/blackmagic/pulls/2228#issuecomment-13006542: > There are definititely improvements could be made, but this is a good start. Please see the review below for what stands out to us - some of the functions, particularly around Flash handling, feel like they keep repeating themselves.. this makes them prime targets for refactoring into a common function and then the specific functionality needed for the particular operation around that. Thanks for the thorough review, and sorry about the übercommit — being my first contribution, I didn't quite get the granularity right. I've now broken the changes into smaller commits and also fixed the two code issues you pointed out. Will definitely follow the commit guidelines moving forward. Appreciate your patience.
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 84c23a08c0
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 8ded4a7a2a
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月17日 21:36:10 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 8ded4a7a2a
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 c36048d89d
Some checks failed
ci/woodpecker/pr/build-firmware/6 Pipeline was successful
ci/woodpecker/pr/build-firmware/5 Pipeline was successful
ci/woodpecker/pr/build-firmware/1 Pipeline was successful
ci/woodpecker/pr/build-firmware/8 Pipeline was successful
ci/woodpecker/pr/build-firmware/4 Pipeline was successful
ci/woodpecker/pr/build-firmware/3 Pipeline was successful
ci/woodpecker/pr/build-firmware/7 Pipeline was successful
ci/woodpecker/pr/build-firmware/2 Pipeline was successful
ci/woodpecker/pr/build-firmware/9 Pipeline was successful
ci/woodpecker/pr/build-firmware/16 Pipeline was successful
ci/woodpecker/pr/build-firmware/13 Pipeline was successful
ci/woodpecker/pr/build-firmware/15 Pipeline was successful
ci/woodpecker/pr/build-firmware/14 Pipeline was successful
ci/woodpecker/pr/build-firmware/11 Pipeline was successful
ci/woodpecker/pr/build-firmware/10 Pipeline was successful
ci/woodpecker/pr/build-firmware/12 Pipeline was successful
ci/woodpecker/pr/build-firmware/17 Pipeline was successful
ci/woodpecker/pr/build-linux/1 Pipeline was successful
ci/woodpecker/pr/build-linux/2 Pipeline was successful
ci/woodpecker/pr/build-firmware/20 Pipeline was successful
ci/woodpecker/pr/build-firmware/19 Pipeline was successful
ci/woodpecker/pr/build-firmware/18 Pipeline failed
ci/woodpecker/pr/build-windows Pipeline was successful
2026年04月18日 03:29:35 +02:00
Compare
mTOTm changed title from (削除) Feature: add new targets: hpm53xx,hpm67xx,hpm68xx,HPM6Pxx (削除ここまで) to Feature: add new targets: hpm53xx,hpm67xx,hpm68xx,hpm6pxx 2026年04月18日 12:14:50 +02:00
dragonmux left a comment
Copy link

We've done a more detailed review of the Flash stub code and linker script now - please see below as there are some points it could definitely use improvements on.

With these things addressed, this is shaping up extremely nicely and we think in the next round or two of reviews we'll be able to approve it and merge. Thank you for sticking with the process.

We've done a more detailed review of the Flash stub code and linker script now - please see below as there are some points it could definitely use improvements on. With these things addressed, this is shaping up extremely nicely and we think in the next round or two of reviews we'll be able to approve it and merge. Thank you for sticking with the process.
@ -0,0 +56,4 @@
#define HPM_MCACHE_CTL_DC_EN_SHIFT 1U
#define HPM_MCACHE_CTL_DC_EN_MASK (1U << HPM_MCACHE_CTL_DC_EN_SHIFT)
#define ALGO_TEXT_SECTION __attribute__((section(".flash_algo.text")))
#define ALGO_DATA_SECTION __attribute__((section(".flash_algo.data")))

As noted in the linker script, neither of these two section defines should be necessary - please drop them. Standard section names are predictable and sufficient.

As noted in the linker script, neither of these two section defines should be necessary - please drop them. Standard section names are predictable and sufficient.
Author
Contributor
Copy link

these two section has been removed.

these two section has been removed.
@ -0,0 +72,4 @@
#define ROMAPI_SUPPORTS_HYBRIDXPI() (ROM_API_TABLE_ROOT->xpi_nor_dri_if->version >= 0x56010300)
typedef struct xpi_nor_cfg_opt {
union {

Using a union with an anonymous struct that has bitfields invokes hard implementation-defined behaviour which may not even be consistent between versions of a given compiler, much less between different compiler vendors. Please avoid bitfields, entirely. They're not well enough defined by the C specification and it's not even given what order the values defined in the structure will actually appear in memory (endian), and using any other types than unsigned int, int, and and signed int is not guaranteed to work in any capacity - the compiler may in fact even just completely ignore the type you request and give you an entirely different integer type. Please see https://en.cppreference.com/c/language/bit_field for details on why they're such an enormously bad idea.

Please prefer instead a well named uint32_t value and using macros defining mask values and shifts w/ bit manipulation operations. This is why BMD does this everywhere else.

In this particular case, uint32_t header; replacing this entire union is the preference, along with macros such as XPI_CFG_OPT_HEADER_TAG_MASK and XPI_CFG_OPT_HEADER_TAG_SHIFT for accessing the tag bits applied as (header >> XPI_CFG_OPT_HEADER_TAG_SHIFT) & XPI_CFG_OPT_HEADER_TAG_MASK.

Using a union with an anonymous struct that has bitfields invokes hard implementation-defined behaviour which may not even be consistent between versions of a given compiler, much less between different compiler vendors. Please avoid bitfields, entirely. They're not well enough defined by the C specification and it's not even given what order the values defined in the structure will actually appear in memory (endian), and using any other types than `unsigned int`, `int`, and and `signed int` is not guaranteed to work in any capacity - the compiler may in fact even just completely ignore the type you request and give you an entirely different integer type. Please see https://en.cppreference.com/c/language/bit_field for details on why they're such an enormously bad idea. Please prefer instead a well named uint32_t value and using macros defining mask values and shifts w/ bit manipulation operations. This is why BMD does this everywhere else. In this particular case, `uint32_t header;` replacing this entire union is the preference, along with macros such as `XPI_CFG_OPT_HEADER_TAG_MASK` and `XPI_CFG_OPT_HEADER_TAG_SHIFT` for accessing the tag bits applied as `(header >> XPI_CFG_OPT_HEADER_TAG_SHIFT) & XPI_CFG_OPT_HEADER_TAG_MASK`.
Author
Contributor
Copy link

The mask and shift macros are now being used instead of bit fields as required.

The mask and shift macros are now being used instead of bit fields as required.
@ -0,0 +169,4 @@
* Function table entry point
* This creates the jump table at the start of the stub code
*/
__asm__(".section .func_table, \"ax\"\n"

Because this is being done in assembly instead of C, you'll want to mark each of the 4 functions it uses as __attribute__((used)) to avoid their being optimised out. This is the correct way to do this so DCE can work.

Because this is being done in assembly instead of C, you'll want to mark each of the 4 functions it uses as `__attribute__((used))` to avoid their being optimised out. This is the correct way to do this so DCE can work.
Author
Contributor
Copy link

all necessary functions have been modified with attribute((used)).

all necessary functions have been modified with __attribute__((used)).
@ -0,0 +266,4 @@
ALGO_TEXT_SECTION uint32_t flash_erase(uint32_t flash_base, uint32_t address, uint32_t size)
{
int32_t stat = 0;
uint32_t align;

Given this is only used in the if (left >= block_size) branch, please only define it in that branch. We are in C11 - we do not have to do C89 variable declarations. It's preferable not to even because as written this invites a future contributor to read the variable before it has been initialised, which invokes Undefined Behaviour (UB) and we really want to avoid this being even possible to start with. Moving it to the front of line 274 as const uint32_t align = block_size - (start % block_size); avoids this entirely.

Given this is only used in the `if (left >= block_size)` branch, please only define it in that branch. We are in C11 - we do not have to do C89 variable declarations. It's preferable not to even because as written this invites a future contributor to read the variable before it has been initialised, which invokes Undefined Behaviour (UB) and we really want to avoid this being even possible to start with. Moving it to the front of line 274 as `const uint32_t align = block_size - (start % block_size);` avoids this entirely.
Author
Contributor
Copy link

OK, it has been changed.

OK, it has been changed.
@ -0,0 +279,4 @@
left -= align;
start += align;
}
while (left > block_size) {

Rather than this for loop disguised as a while loop, we suggest a transform to make it easier to understand:

size_t offset = 0U;
for (; offset < left; offset += block_size) {
	if ((left - offset) < block_size)
		break;
	stat = ROM_API_TABLE_ROOT->xpi_nor_dri_if->erase_block(xpi_base, ch, &nor_config, start + offset);
	if (stat != 0)
		break;
}
left += offset;

Following this pattern further, it may be possible to simplify this entire function and make it easier to understand.

Rather than this for loop disguised as a while loop, we suggest a transform to make it easier to understand: ```c size_t offset = 0U; for (; offset < left; offset += block_size) { if ((left - offset) < block_size) break; stat = ROM_API_TABLE_ROOT->xpi_nor_dri_if->erase_block(xpi_base, ch, &nor_config, start + offset); if (stat != 0) break; } left += offset; ``` Following this pattern further, it may be possible to simplify this entire function and make it easier to understand.
Author
Contributor
Copy link

thanks, it has been changed.

thanks, it has been changed.
@ -0,0 +294,4 @@
ALGO_TEXT_SECTION uint32_t flash_program(uint32_t flash_base, uint32_t address, uint32_t *buf, uint32_t size)
{
int32_t stat;

Given this is initialised and used exactly once, if you really need to define a variable.. do so at the site it's first used, so there's no possible use-before-init UB and mark it const. If not, just directly return from the ROM table call.

Given this is initialised and used exactly once, if you really need to define a variable.. do so at the site it's first used, so there's no possible use-before-init UB and mark it `const`. If not, just directly `return` from the ROM table call.
Author
Contributor
Copy link

it has been changed.

it has been changed.
@ -0,0 +8,4 @@
* https://github.com/hpmicro/hpm_sdk/tree/main/samples/openocd_algo
*/
ENTRY(_init)

There's no need to define an entry point - the ELF isn't being used directly, it's not useful. This linker script however fails to define a memory map and where it's going to be located in SRAM and thus why it requires a GOT and PIC. However, this stub is loaded at the fixed HPM_STUB_LOAD_ADDR (0x00000000U) so can be statically linked to this address without consequence. Please do so.

There's no need to define an entry point - the ELF isn't being used directly, it's not useful. This linker script however fails to define a memory map and where it's going to be located in SRAM and thus why it requires a GOT and PIC. However, this stub is loaded at the fixed `HPM_STUB_LOAD_ADDR` (0x00000000U) so can be statically linked to this address without consequence. Please do so.
Author
Contributor
Copy link

it has been changed.

it has been changed.
@ -0,0 +15,4 @@
.text : {
*(.func_table)
KEEP(*(.flash_algo.text*))
KEEP(*(.rodata))

These KEEP directives force the compiler to keep even unused R/O data and such - please don't do that. If you want this all to work how it's intended to, the KEEP goes on the function table section and then the other bits that are required to stop the compiler optimising out get marked used by attribute in the C side.

Similarly, you can stick to standard section names which then simplifies the Flash stub code.. .text, .data and .bss (for 0-init data) are going to be where your code and data go.

See the RP2040 Flash stub linker script (rp.ld) for more.

We would suggest the .text output section should look like this from the available input sections having dropped all the special stuff:

	.text :
	{
		KEEP(*(.func_table))
		*(.text.*, .text)
		*(.rodata.*, .rodata)
		*(.data.*, .data)
		*(.bss.*, .bss)
	}
These `KEEP` directives force the compiler to keep even unused R/O data and such - please don't do that. If you want this all to work how it's intended to, the `KEEP` goes on the function table section and then the other bits that are required to stop the compiler optimising out get marked used by attribute in the C side. Similarly, you can stick to standard section names which then simplifies the Flash stub code.. .text, .data and .bss (for 0-init data) are going to be where your code and data go. See the RP2040 Flash stub linker script (rp.ld) for more. We would suggest the .text output section should look like this from the available input sections having dropped all the special stuff: ``` .text : { KEEP(*(.func_table)) *(.text.*, .text) *(.rodata.*, .rodata) *(.data.*, .data) *(.bss.*, .bss) } ```
Author
Contributor
Copy link

it has been changed.

it has been changed.
@ -0,0 +22,4 @@
*(.text*)
__etext = .;
}
.discard : {

None of the symbol definitions being made in this .discard block are being referenced or used - so, please drop all of them - they're entirely unnecessary. Please also avoid introducing __'d symbols - they are reserved for the implementation (compiler, C standard library) to use, not us, and so use of them C-side invokes UB.

None of the symbol definitions being made in this .discard block are being referenced or used - so, please drop all of them - they're entirely unnecessary. Please also avoid introducing `__`'d symbols - they are reserved for the implementation (compiler, C standard library) to use, not us, and so use of them C-side invokes UB.
Author
Contributor
Copy link

it has been changed.

it has been changed.
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from c36048d89d
Some checks failed
ci/woodpecker/pr/build-firmware/6 Pipeline was successful
ci/woodpecker/pr/build-firmware/5 Pipeline was successful
ci/woodpecker/pr/build-firmware/1 Pipeline was successful
ci/woodpecker/pr/build-firmware/8 Pipeline was successful
ci/woodpecker/pr/build-firmware/4 Pipeline was successful
ci/woodpecker/pr/build-firmware/3 Pipeline was successful
ci/woodpecker/pr/build-firmware/7 Pipeline was successful
ci/woodpecker/pr/build-firmware/2 Pipeline was successful
ci/woodpecker/pr/build-firmware/9 Pipeline was successful
ci/woodpecker/pr/build-firmware/16 Pipeline was successful
ci/woodpecker/pr/build-firmware/13 Pipeline was successful
ci/woodpecker/pr/build-firmware/15 Pipeline was successful
ci/woodpecker/pr/build-firmware/14 Pipeline was successful
ci/woodpecker/pr/build-firmware/11 Pipeline was successful
ci/woodpecker/pr/build-firmware/10 Pipeline was successful
ci/woodpecker/pr/build-firmware/12 Pipeline was successful
ci/woodpecker/pr/build-firmware/17 Pipeline was successful
ci/woodpecker/pr/build-linux/1 Pipeline was successful
ci/woodpecker/pr/build-linux/2 Pipeline was successful
ci/woodpecker/pr/build-firmware/20 Pipeline was successful
ci/woodpecker/pr/build-firmware/19 Pipeline was successful
ci/woodpecker/pr/build-firmware/18 Pipeline failed
ci/woodpecker/pr/build-windows Pipeline was successful
to d8d74921b9
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月26日 12:21:14 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from d8d74921b9
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 488f2f905c
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月26日 12:24:24 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 488f2f905c
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 598fbeedce
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月16日 04:47:50 +02:00
Compare
mTOTm force-pushed dev/jiance.zhang/add_hpm_supoort from 598fbeedce
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 e340c93233
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月18日 02:59:14 +02:00
Compare
Author
Contributor
Copy link

@dragonmux may I ask what else I need to do for this submission to move it toward being merged?

@dragonmux may I ask what else I need to do for this submission to move it toward being merged?
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 doesn't have enough approvals yet. 0 of 1 approvals granted.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u dev/jiance.zhang/add_hpm_supoort:mTOTm-dev/jiance.zhang/add_hpm_supoort
git switch mTOTm-dev/jiance.zhang/add_hpm_supoort
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!2228
Reference in a new issue
blackmagic-debug/blackmagic
No description provided.
Delete branch "mTOTm/blackmagic:dev/jiance.zhang/add_hpm_supoort"

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?