mingdu.zheng at gmail dot com
http://blog.csdn.net/zoomdy/article/details/78708490
问题描述
STM32F7的Flash可以在两个地址空间可见,一是AXIM接口的0x08000000处,二是ITCM接口的0x00200000处。如果将Flash定位到0x08000000处,使用J-Link调试下载程序没有问题;如果将Flash定位到0x00200000,那么J-Link不会下载程序了,说明J-Link只识别0x08000000作为STM32F7的Flash起始地址,不能识别0x00200000。我使用的STM32F7具体型号是:STM32F769BI。
解决办法
我用的调试器是GDB,GDB有load命令用来下载程序,load命令有一个可选参数,用来指定下载程序的偏移(offset),利用load命令的offset参数,告诉J-Link下载到0x08000000处就可以了。
load app.elf 0x07E00000
load命令最后面那个0x07E00000就是偏移,ELF文件中的下载地址是0x00200000,该地址加上0x07E00000就是0x08000000,J-Link就可以正确下载了。
如果使用的是GNU ARM Eclipse,那么可以在调试配置的Initialization Commands里面加入带偏移的load命令,并取消Load executable复选框,见下图,这样不用每次在GDB终端输load命令。
本文介绍了解决STM32F769BI型号芯片中Flash在不同地址空间加载的问题。当Flash位于0x00200000时,J-Link无法正常工作。通过GDB load命令的偏移参数,将加载地址调整为0x08000000,解决了此问题。

2908

被折叠的 条评论
为什么被折叠?



