STM32H7x option_write reads incorrect address in flash
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:
- Most recent commit - https://github.com/STMicroelectronics/OpenOCD/commit/0a084c29345576911fb8d10fcbd158d0361b6186
- Added support for STM32H7R/H7Sx - https://github.com/STMicroelectronics/OpenOCD/commit/aa109db19ffd22eb05e18b010140fb562934533b
- One commit prior to adding support for STM32H7R/H7Sx - https://github.com/STMicroelectronics/OpenOCD/commit/b62cbc2e853189e730fd94e6d9c0a1d3ceb2661f
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
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của STMicroelectronics/OpenOCD
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 67/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
-
bug
STMicroelectronics/OpenOCD#44 · 1 bình luận · 1 người được giao ·
-
Request to upstream STM32 support (e.g. STM32H5) or provide pre-built binaries of the ST fork Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
STMicroelectronics/OpenOCD#42 · 9 bình luận · 5 reaction ·
Tất cả issue của STMicroelectronics/OpenOCD
Issue tương tự
-
task
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
vsanthanam/JBird#429 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
bug documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
es-ude/OnDeviceTraining#459 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
bilelmoussaoui/gobject-linter#199 · 1 bình luận ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
bradcypert/plum#53 ·