J-Link调试STM32F7不能下载程序到ITCM接口的Flash

来源:互联网 发布:淘宝卖家店铺不见了 编辑:程序博客网 时间:2024/06/05 15:55

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命令。
这里写图片描述