【经验分享】KL25在MDK中将函数指定到flash地址

2020-02-11 10:01发布

【经验分享】KL25在MDK中将函数指定到flash地址
一,        经验分享描述
          在之前的经验分享中写了些在KE02下,CW,IAR以及keil的编译环境中,如何定义constant到指定的flash地址。但是实际上,大家在使用我们kinetis的过程中,可能也希望能够灵活的将某个函数直接定义到指定的flash地址,这样,如果改变这个函数,实际上,只需要改变函数所在的flash,而不需要更新所有的flash。所以,为了方便大家操作,我们论坛里已经推出了在CW以及IAR下,如何指定函数到具体的flash地址,本文就讲解下,在MDK的环境下如何实现指定函数到具体的flash地址。
二,        经验分享在MDK环境下实现
         该经验分享要在MDK中实现函数的绝对地址指定,一共有两点需要注意:scatter文件中函数绝对地址的开辟以及程序中将函数定义到定义的绝对地址处。
下面来仔细讲解这两点
1.在.sct文件中定义函数要存放的地址
.sct文件可以在工程的UV4Build文件夹中找到,找到后可以拖进MDK界面中即可以打开,可以使用如下格式定义这个地址:
  ER_IROM2 绝对地址 FIXED
  {
        *.o (段地址名)
               }
例如,在本次试验中,希望将函数定义到flash地址:0x0001E000这个地址,靠近flash空间的尾部。实际我们的定义如下图:
6.jpg (58.03 KB, 下载次数: 0) 下载附件 2014-8-19 14:05 上传
三,        附件
附件提供了本文的PDF,以及测试代码。
【经验分享】KL25在MDK中将函数指定到flash地址.pdf (322.07 KB, 下载次数: 63) 2014-8-19 14:07 上传 点击文件名下载附件


KL25_MDK_funflash.rar (1.29 MB, 下载次数: 41) 2014-8-19 14:07 上传 点击文件名下载附件

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
36条回答
Juggernaut
1楼-- · 2020-02-15 08:08
支持楼主~
jsszdfdn
2楼-- · 2020-02-15 10:58
你好楼主 最近写了一段BOOT程序 并用到了分散加载,我用的是STM32F4芯片 ,我将加密程序指定到了一个分区,然后运行BOOT,一切正常,包扩这段加密程序,然后我将这个分区的程序删除了,然后重新运行,但是串口波特率不对了,发现是时钟配置不对了,然后我有恢复到之前,然后有正常了,不知楼主遇到过这样的问题么?
vaneno
3楼-- · 2020-02-15 13:08
 精彩回答 2  元偷偷看……
jiki119
4楼-- · 2020-02-15 13:39
将这个函数,单独列为一个独立的文件,单独编译并指定位置就不会出现
19楼担心的问题了。
单飞
5楼-- · 2020-02-15 18:47
没有调试通过。。。在0x08007200留几个字节,函数指定到0x08008000地址,然后0x08007200被修改成了0。不指定函数的位置,0x08007200地址的数据都是1(下载时全擦,未使用,所以为1),怀疑函数指定的地址不对,影响的。
Magicfjpg
6楼-- · 2020-02-15 21:27
很少用分散加载,
但有必要mark。

一周热门 更多>