[AVR单片机] 字符串如何定位FLASH区间求助.....

[复制链接]
2460|4
 楼主| fu10 发表于 2011-9-14 15:51 | 显示全部楼层 |阅读模式
最近有个项目要使用AVR,在定义多个字符串常量时发现,编译器老是把它们放在RAM区里,由于处理数据的需要已经占了很大一部分RAM区,经常出现交叉占用相同区域的RAM区,造成数据出错.如下面方法定义:
   #pragma data:code
   unsigned char const *VTstr1="strings1";
   unsigned char const *VTstr2="string2";
   #pragma data:data
   还有取消#pragma data:code ,#pragma data:data后,用_FLASH也不行,后连const 放前面和后面都一样的,真是晕死.......
  请问那位大虾有这方面的经验,请指点迷津.....不胜感激!
  我用的编译工具是ICCV7 for AVR.
 楼主| fu10 发表于 2011-9-14 16:37 | 显示全部楼层
自己顶顶,终于解决了,选option---->target----->strings in FLASH only,并且*VTstr1只能改回数组VTstr1[]的形式就可以了.
 楼主| fu10 发表于 2011-9-14 16:38 | 显示全部楼层

不知那位大虾知道,请指点指点

但是问题也来了,为何不能是指针?非要是数组才可以?不解.........
chen3bing 发表于 2011-9-15 08:35 | 显示全部楼层
我的怎么不行,提示错误C:\iccv7avr!E 8535.s(8): cannot initialize RAM area
chen3bing 发表于 2011-9-15 08:38 | 显示全部楼层
可以了。把#pragma data:code
和#pragma data:data去掉就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

222

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部