首页 论坛 原厂专区 NXP(freescale) MCU [经验分享]KL系列在CW中定义常量到指定的flash位置

发帖 回复

[资料] [经验分享]KL系列在CW中定义常量到指定的flash位置
398 查看
1 回复
 楼主 | 发布于 2020-10-09 | 只看楼主
分享到:

    鉴于有些网友在使用KL系列的时候遇到了常量定义到指定flash位置的问题,所以这里专门分享一贴供需要的网友参考。
    KL系列将常量定义到指定的flash位置和飞思卡尔8位的定义方式有所不同,并不是直接使用例如:const int a @0x1000=0; 这样类型的语句能够解决。
   首先需要开辟一个块用于存储自定义常量,然后才可以直接写入。
下面以KL25为例,讲解具体的操作方法。
第一步: 在.ld文件中的memory中开辟一个段,定义起始地址以及长度。
如下图:

起始地址为0x0001E000, 长度为8k。具体的地址以及长度,根据用户自己的需要定义。
关于.ld文件,可以到工程的Project_Settings下Linker_Files中找到。
第二步:定义具体的输出段情况,如下图:

关于.ld的脚本意思,可以参看附件中的 PDF文档,在第3章有讲解具体的脚本含义。
第三步:在主程序中定义期望的常量。
例如定义:
__attribute__((section (".romsymbols"))) char test[4] ={0x55,0xAA,0x55,0xaa};
第四步:测试结果

3.jpg (139.49 KB, 下载次数: 4)

下载附件

2014-3-13 14:52 上传


可以看到,仿真后在0X0001E000地址开始,看到定义好的数据,完成了常量在flash中指定位置的定义。
本例程的测试代码在附件中,大家需要可以参考。

本帖有更多资源,需 登录 才可以下载,没有帐号?立即 注册

(0 ) (0 )
回复 举报

回复于 2020-10-09 沙发

感谢分享
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    全部板块

    返回顶部