打印
[AVR单片机]

字符串如何定位FLASH区间求助.....

[复制链接]
1650|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

使用特权

评论回复
5
chen3bing| | 2011-9-15 08:38 | 只看该作者
可以了。把#pragma data:code
和#pragma data:data去掉就可以了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

222

帖子

1

粉丝