Arm 使用OpenOcd闪存ELF文件会导致ELF头写入闪存
我使用OpenOcd来刷新STM32 ARM Cmake项目的Elf图像 在mem.ld脚本中,闪存扇区的起始地址分配有一个地址偏移量0x08020200 如果使用OpenOCD和write_image命令将Elf文件写入闪存,则Elf头似乎在0x08020000处写入闪存 应用程序二进制文件在0x08020200处正确写入闪存(0x08020200处的前四个字节反映堆栈指针值) 由于0x08020200是闪存扇区5(0x08020000-0x0803FFFF)内的地址,我希望OpenOcd write_image命令的自动擦除功能能够擦除整个扇区5(因为只能擦除完整扇区) 是什么导致ELF头写入地址0x08020000处的闪存 我执行了以下步骤:Arm 使用OpenOcd闪存ELF文件会导致ELF头写入闪存,arm,stm32,elf,openocd,Arm,Stm32,Elf,Openocd,我使用OpenOcd来刷新STM32 ARM Cmake项目的Elf图像 在mem.ld脚本中,闪存扇区的起始地址分配有一个地址偏移量0x08020200 如果使用OpenOCD和write_image命令将Elf文件写入闪存,则Elf头似乎在0x08020000处写入闪存 应用程序二进制文件在0x08020200处正确写入闪存(0x08020200处的前四个字节反映堆栈指针值) 由于0x08020200是闪存扇区5(0x08020000-0x0803FFFF)内的地址,我希望OpenOcd
- 手动擦除整个闪存
- 使用OpenOcd dump_image命令转储整个flash内容
- 选中转储的图像表示清晰的闪存(所有字节0xFF)
- 使用OpenOcd write_image命令刷新test.elf文件
- 再次使用OpenOcd dump_image命令转储整个flash内容
- 选中0x08020200处的前四个字节反映堆栈指针值
- 已检查0x08020000->ELF标头处的闪存内容已写入闪存
write\u image
命令?您是否使用类型
参数?它不回答问题。OP不是在询问如何刷新图像,我的意思是这个bug与openOCD无关。因为对于下载映像,您需要使用一些驱动程序,当我使用stm32程序员CLI时,我看到了相同的问题。为了进行检查,我使用stm32程序员下载固件(不带openOCD),并在版本2.5和2.6中重现此错误。