Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

STM32H7x option_write reads incorrect address in flash

Đang mở
#45 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
45/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
c
Lĩnh vực
devtools, embedded-iot

Hướng nghiên cứu

Start in src/flash/nor/stm32h7x.c and compare stm32h7_read_flash_reg_by_index, used by option_write, with stm32x_read_flash_reg, used by option_read. Reproduce with the STM32H757BIT6 configuration, then run the documented stm32h7x option_read and option_write commands across the referenced commits. Done means option_write reads the correct flash address and updates the option byte as expected.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

A recently added support for STM32H7R/H7Sx MCUs (https://github.com/STMicroelectronics/OpenOCD/commit/aa109db19ffd22eb05e18b010140fb562934533b) broke stm32h7x option_write command on STM32H757BIT6. I tested stm32h7x option_write command with 3 different commits:

Hardware

  • STM32H757BIT6 - dual core
  • STLINK-V3MINIE

Software

OpenOCD is running in a Docker container:

RUN git clone https://github.com/STMicroelectronics/OpenOCD.git && \
    cd OpenOCD && \
    git checkout insert_git_commit_here && \
    ./bootstrap && \
    ./configure --enable-stlink && \
    make -j$(nproc) && \
    make install && \
    cd .. && \
    rm -rf OpenOCD

I am running OpenOCD with the following command
openocd -f openocd_stm32h757.cfg

I am connecting to the OpenOCD with telnet
telnet 127.0.0.1 4444

Configuration file:
# openocd_stm32h757.cfg
source [find interface/stlink-dap.cfg]
transport select dapdirect_swd
source [find target/stm32h7x_dual_bank.cfg]
reset_config srst_only 

Test results

I tried disabling booting of CM4 by changing option byte FLASH_OPTSR_PRG and also tried stm32h7x option_write example in the OpenOCD documentation section 12.5.2. The output of the commands tested with different commits are shown in a table below. Only commit b62cbc2 produced expected results and wrote the option byte.

Command Most recent https://github.com/STMicroelectronics/OpenOCD/commit/0a084c29345576911fb8d10fcbd158d0361b6186 STM32H7R/H7Sx support https://github.com/STMicroelectronics/OpenOCD/commit/aa109db19ffd22eb05e18b010140fb562934533b Prior to adding support https://github.com/STMicroelectronics/OpenOCD/commit/b62cbc2e853189e730fd94e6d9c0a1d3ceb2661f
reset - - -
stm32h7x option_read 0 0x1c Option Register: <0x5200201c> = 0x1bc6aaf0 Option Register: <0x5200201c> = 0x1bc6aaf0 Option Register: <0x5200201c> = 0x1bc6aaf0
stm32h7x option_write 0 0x20 0x00000000 0x00400000 Failed to read memory at 0x51e3be78
error while reading from address 0x51e3be78
Failed to read memory at 0xe000edf4
error while reading from address 0x856d9473
-
stm32h7x option_read 0 0x1c Option Register: <0x5200201c> = 0x1bc6aaf0 Option Register: <0x5200201c> = 0x1bc6aaf0 Option Register: <0x5200201c> = 0x1b86aaf0
stm32h7x option_write 0 0x20 0x8000000 0x8000000 Failed to read memory at 0x51e3be78
error while reading from address 0x51e3be78
Failed to read memory at 0xe000edf4
error while reading from address 0x856d9473
-
stm32h7x option_read 0 0x1c Option Register: <0x5200201c> = 0x1bc6aaf0 Option Register: <0x5200201c> = 0x1bc6aaf0 Option Register: <0x5200201c> = 0x1b86aaf0

Observations

Different functions are used in src/flash/nor/stm32h7x.c for reading values for commands option_read and option_write.

commit OpenOCD command function in stm32h7x.c
aa109db stm32h7x option_read stm32x_read_flash_reg
aa109db stm32h7x option_write stm32h7_read_flash_reg_by_index
b310b3b stm32h7x option_read stm32x_read_flash_reg
b310b3b stm32h7x option_write stm32x_read_flash_reg

Conclusion

It seems function stm32h7_read_flash_reg_by_index in src/flash/nor/stm32h7x.c used in option_write command reads incorrect address from flash.

Thanks in advance!

Ngôn ngữ chính
C
Star
202
Fork
57
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của STMicroelectronics/OpenOCD

Tất cả issue của STMicroelectronics/OpenOCD

Issue tương tự

Thêm issue về C

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.