Eclipse搭建stm32+jlink开发环境全攻略(进阶篇二)

来源:互联网 发布:那英我知喜欢你现场版 编辑:程序博客网 时间:2024/05/16 10:40

Eclipse搭建stm32+jlink开发环境全攻略

进阶篇(二)

我们设计程序往往会遇到这样的一个需求,那就是我们的程序起始位置需要重新定位,并不是默认的0x08000000,这种情况往往出现在有使用bootloader的情况中,0x08000000处往往存放我们的bootloader程序,然后0x08000000+N出存放我们的应用程序(APP)。那在MDK下这种情况很好解决,无非就是修改几个地址和大小变量。在eclipse中也同样简单。

比如现在,我使用的芯片为stm32f103rc,flash=256K,ram=48K,我需要把我的程序下载到0x08004000处,并且能够通过已经编译好的bootloader启动这个程序,根据前面的相关章节,我们可以知道:

1\首先我们编译的时候,需要将输出文件的起始地址定位为0x08004000

2\然后我们在下载的时候,我要将二进制文件烧写到flash中的0x08004000处

3\调试程序的时候我们也能够正确的将调试器定位到0x08004000处来正确的启动调试

我们一步一步来解决上面的三个地方。

1、修改编译地址:

这个地址应该叫做链接地址,在链接文件中

如图所示,我将FLASH的ORIGIN修改为0x08004000,因为我的bin文件需要链接到这个地址,那么flash的剩余空间也要跟着调整,0x4000=16K,原本flash有256K,所以剩余240K。由于我的ram不需要修改,所以_estack和ram段的值都没有变。

2、修改下载地址:

前面我们已经讲解了使用jlink脚本进行一键下载,下载由于我们的下载地址改变了,那么我们只需要修改脚本中的loadfile的目的地址即可

3、修改调试地址

如果细心的同学可能已经发现了,在eclipse的jlink调试选项中,已经自带有修改调试偏移地址的选项,如下图所示

只需要修改下面的偏移地址即可,上面的应该是对应ram的吧。

测试一下

可以看到点击调试后首先进行程序的下载,可以看到程序被下载到0x08004000,这个地址正是我们期望的地址,说明没问题。然后启动gdb后停止在了main函数的开始位置,OK一切正常。

注:本人github中有工程模版
Github地址

0 0
原创粉丝点击