搜索
bottom↓
回复: 9

IAR绝对地址变量定位请教?

[复制链接]

出20入70汤圆

发表于 2014-8-11 09:53:59 | 显示全部楼层 |阅读模式
第一次用430芯片,也是第一次接触IAR编译器。

事情是这样的:
       我在FLASH中预留了一段(512bytes)空间当EEPROM使用。但随着程序的不断增加,FLASH剩余空间越来越小,编译后的CODE地址已经到了我预留的FLASH空间,事实上预留空间后还有FLASH空间。
       我试着将预留空间定义一个绝对地址变量,使程序CODE代码越过这段预留空间,但始终不成功。
       那位兄弟遇到过这种情况,请指点一二。

出20入70汤圆

 楼主| 发表于 2014-8-11 10:06:15 | 显示全部楼层
__no_init char_arr_static[512]@0xFC00;

上面的定义方式貌似没用,CODE依旧会被编译连接到0xFC00所在段中。

出0入0汤圆

发表于 2014-8-11 10:08:29 | 显示全部楼层
没用过430
arm有icf文件控制变量分配
430也有类似的吧

出20入70汤圆

 楼主| 发表于 2014-8-11 10:10:00 | 显示全部楼层
y574924080 发表于 2014-8-11 10:08
没用过430
arm有icf文件控制变量分配
430也有类似的吧

430貌似没有icf文件,我找过,没看到。不过还是多谢!

出0入0汤圆

发表于 2014-8-11 10:16:18 | 显示全部楼层
techbaby 发表于 2014-8-11 10:10
430貌似没有icf文件,我找过,没看到。不过还是多谢!

那就看看Project -> Options -> Linker的设置,应该就在那里配置的

出0入0汤圆

发表于 2014-8-11 10:28:45 | 显示全部楼层
430不需预留FLASH,多数型号本身都有预留信息段0x1000-0x10FF作为数据存储用,共256字节,每64字节为一块,可按块擦除。不仔细看数据手册的错。

出20入70汤圆

 楼主| 发表于 2014-8-11 10:46:53 | 显示全部楼层
dalarang 发表于 2014-8-11 10:28
430不需预留FLASH,多数型号本身都有预留信息段0x1000-0x10FF作为数据存储用,共256字节,每64字节为一块, ...

info flash这块是知道的。

当初考虑到存储的这个变量是累计流量,需要频繁读写,所以就专门开辟了一段flash(非info段)。

将这段flash做一个环形操作,只在数据储存到段开始时执行擦除操作,其他位置直接执行写操作即可,这样减少此段flash的擦除操作,增加flash使用寿命。

出0入0汤圆

发表于 2014-8-11 10:53:56 | 显示全部楼层
这样啊,IAR FOR 430里面不是icf,是xcl后缀的,用法跟icf差不多,自己看看应该就能明白。

出20入70汤圆

 楼主| 发表于 2014-8-11 10:56:24 | 显示全部楼层
dalarang 发表于 2014-8-11 10:53
这样啊,IAR FOR 430里面不是icf,是xcl后缀的,用法跟icf差不多,自己看看应该就能明白。 ...

多谢!我先找找看!

出0入0汤圆

发表于 2014-8-11 11:46:26 | 显示全部楼层
__no_init uint32_t eepromdata[128]@0x20003E00;
这个是我现在在用的,正常。用在新唐IC上。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 13:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表