我在尝试将演示程序上传到新的stm32f4discovery板时遇到问题,这就是我正在做的事情:
telnet localhost 4444
Open On-Chip Debugger
> reset init
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
> flash write_image demo.hex
device id = 0x10016413
flash size = 8192kbytes
flash write algorithm aborted by target
error executing stm32x flash write algorithm
flash memory write protected
flash write failed = 00000010
error writing to flash at address 0x08000000 at offset 0x00000000
in procedure 'flash'
我做错了什么?我试过flash保护,stm32f2x解锁但响应仍然是相同的:'flash memory write protected',我错过了什么?我正在使用来自st.com的预编译演示程序,来自'Project / Demonstration / Binary'的软件包'STM32F4-Discovery_FW_V1.1.0'。
答案 0 :(得分:3)
在重写闪存之前,必须先删除闪存。
monitor flash protect 0 0 11 off
monitor flash erase_address 0x08000000 0x40000
monitor flash write_image erase *"/path/to/hex/file.hex"* 0 ihex
或者使用arm-none-eabi-gdb和ELF代替telnet和hex文件,并使用以下命令:
arm-none-eabi-gdb
target remote localhost:3333
monitor reset halt
file */path/to/elf/file.elf*
load
monitor reset
continue
请注意,使用ELF文件时,您无需指定其所在的地址(通常为0x08000000或带引导加载程序的0x08008000)。
另外,考虑使用像OpenBLT这样的引导程序,它将帮助您掌握VTOR,偏移,堆栈地址等原则。