【cw10.x使用分享】将变量定义在指定地址
用codewarrior(eclipse)调试Kinetis时,如何将某个变量定义在指定的地址上呢?下面以codewarrior10.3调试KL05Z32为例说明,将变量放到0x900和0x20000000上。
1,修改连接文件
http://www.myhcs08.com/php/attachment/diary/Mon_1310/84343_b5f01b239a4c492.png
我的连接文件名字为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;unsigned char __attribute__((section (".myRomSection"))) Data={0x68,0x89,065,};unsigned char __attribute__((section (".myRomSection"))) Data2={0x68,0x89,065,};
3,编译工程
4,查看map文件
http://www.myhcs08.com/php/attachment/diary/Mon_1310/84343_d1ce58aaa971ceb.jpg
从map文件看,变量被我们放到了指定的地址处。
工程下载地址:http://www.myhcs08.com/downloads.php?file_id=299
收藏.顶一下! 楼主这个经验好,又学习了一招。但是常量可以保存到指定地址吗? 变量定义在指定地址, 有什么应用的好处? 或者说能达到什么目的。 mcucow 发表于 2014-9-26 12:50
变量定义在指定地址, 有什么应用的好处? 或者说能达到什么目的。
变量定义在指定地址,可以用来判断复位原因等。函数定义在指定地址,做自升级的时候有用到。 fengyunyu 发表于 2014-9-26 13:48
变量定义在指定地址,可以用来判断复位原因等。函数定义在指定地址,做自升级的时候有用到。 ...
谢谢 学习了
自升级没玩过 有机会试试看
不过复位原因 是不是还可以借助写EEPROM 或一步一步调试
页:
[1]