【cw10.x使用分享】将变量定义在指定地址

2020-02-20 21:03发布

codewarrior(eclipse)调试Kinetis时,如何将某个变量定义在指定的地址上呢?

下面以codewarrior10.3调试KL05Z32为例说明,将变量放到0x9000x20000000上。
1,  修改连接文件



我的连接文件名字为MKL05Z32_flash.ld
在该文件中添加如下内容
  .myBufBlock 0x20000000 :  {    KEEP(*(.myBufSection)) /* keep my variable even if not referenced */  } > m_data    .myRomBlock 0x900:  {    KEEP(*(.myRomSection)) /* keep my variable even if not referenced */  } > m_text
2,  定义我们的变量
main.c中添加如下代码:
unsigned char __attribute__((section (".myBufSection"))) buf[128];unsigned char __attribute__((section (".myRomSection"))) Data[128]={0x68,0x89,065,};unsigned char __attribute__((section (".myRomSection"))) Data2[128]={0x68,0x89,065,};

3,  编译工程
4,  查看map文件



map文件看,变量被我们放到了指定的地址处。

工程下载地址:http://www.myhcs08.com/downloads.php?file_id=299


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
32MCU
1楼-- · 2020-02-20 23:33
收藏.顶一下!
zndz410
2楼-- · 2020-02-21 03:02
 精彩回答 2  元偷偷看……
mcucow
3楼-- · 2020-02-21 04:26
变量定义在指定地址, 有什么应用的好处? 或者说能达到什么目的。
fengyunyu
4楼-- · 2020-02-21 09:08
mcucow 发表于 2014-9-26 12:50
变量定义在指定地址, 有什么应用的好处? 或者说能达到什么目的。

变量定义在指定地址,可以用来判断复位原因等。函数定义在指定地址,做自升级的时候有用到。
mcucow
5楼-- · 2020-02-21 11:06
fengyunyu 发表于 2014-9-26 13:48
变量定义在指定地址,可以用来判断复位原因等。函数定义在指定地址,做自升级的时候有用到。 ...

谢谢 学习了
自升级没玩过 有机会试试看
不过复位原因 是不是还可以借助写EEPROM 或一步一步调试

一周热门 更多>