用codewarrior(eclipse)调试Kinetis时,如何将某个变量定义在指定的地址上呢?
下面以codewarrior10.3调试KL05Z32为例说明,将变量放到0x900和0x20000000上。
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
变量定义在指定地址,可以用来判断复位原因等。函数定义在指定地址,做自升级的时候有用到。
一周热门 更多>