【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


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。