4


我在尝试将演示程序上传到新的 stm32f4discovery 板时遇到问题,这就是我正在做的事情:

  1. 将板子连接到电脑
  2. openocd -f 板/stm32f4discovery.cfg
  3. 远程登录本地主机 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'
    

    我究竟做错了什么 ?我试过闪存保护,stm32f2x 解锁但响应仍然相同:'闪存写保护',我错过了什么?我正在使用来自'Project/Demonstration/Binary'的包'STM32F4-Discovery_FW_V1.1.0'的st.com的预编译演示程序。

4

1 回答 1

4

在重写之前必须删除闪存。

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、偏移量、堆栈地址等原理。

于 2013-11-23T16:17:00.390 回答