搜索
bottom↓
回复: 6

请教IAR环境下:如何在EEPROM和FLASH中定义变量 我的困惑

[复制链接]

出0入0汤圆

发表于 2005-11-6 19:41:32 | 显示全部楼层 |阅读模式
__eeprom

Controls the storage of data objects in eeprom memory space.

The __eeprom memory attribute allows you to place initialized and non-initialized variables in the built-in EEPROM of the AVR microcontroller. These variables can be used like any other variable and provide a convenient way to access the built-in EEPROM.

以上摘自IAR帮助文件,但是照上面所说,用__eeprom修饰变量,可将变量存放在EEPROM中,但是编译遇到以下错误,不知何故,望高手指点一二,谢谢!我这样用的:

__eeprom unsigned char i;



编译结果:

Error[Be009]: memory attributes not allowed on auto variables or parameters D:\科研相关\传感器网络\工具箱\IAR4.10a\程序\main.c 41



同时向诸位大侠请教在flash中定义变量的方法,非常困惑,因为如果help文件有误的话,我只好用其他编译器了,痛苦ing

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2005-11-6 23:19:24 | 显示全部楼层
/*===================数据结构定义=========================*/

        typedef struct _eeprom_struct

          {       

                union

                {

                            struct

                              {

                                uchar a[4];       //放大倍数

                                     uint e_addr;      //站址

                                     uint e_crc;       //crc

                        } eeprom;

                               uchar eep_data[8];      

               }e_u;                 

         }eeprom_struct;

/*====================变量定义============================*/

        #pragma location=0x00

                __no_init __eeprom eeprom_struct a1;     

        #pragma location=0x28

                __no_init __eeprom eeprom_struct a2;

        #pragma location=0x50

                __no_init __eeprom eeprom_struct a3;

        #pragma location=0x78

                __no_init __eeprom eeprom_struct a4;



//====================flash中定义的变量==================//

         __flash uchar serial[4]={0x05,0x11,0x03,0x01};     //序列号  

        __flash float default_zoom=2.5000;                 //放大系数

        __flash uchar head[6]={0xbb,0xbb,0xbb,0xff,0x55,0x00};



在flash中定义的变量好象不能定位到绝对地址,不过可以从.map文件中查看到,当然也可以从hex文件中仔细的查看。

出0入0汤圆

发表于 2005-11-6 23:22:15 | 显示全部楼层
另外这位兄弟用的是什么版本的IAR呢?我用过IAR V2.31E,IAR V3.20b/c/d以及4.0的版本都可以的。3.20以上可以产生map文件和ICCAVR的.mp文件差不多,可以查看具体的编译结果信息。所有的AVR C编译工具中,IAR的效率和友好程度还是不错的,兄弟还是用这个好!

出0入0汤圆

 楼主| 发表于 2005-11-7 09:22:19 | 显示全部楼层
多谢Houseivan大哥,我用的是4.0,感觉还不错

就是一开始入门,可能会遇到这样那样的问题,多谢大哥指点。

多谢

出0入0汤圆

 楼主| 发表于 2005-11-7 09:38:27 | 显示全部楼层
对了,不知Houseivan对 *.xcl文件有没有研究,我看上面说如果外接RAM的话,要修改以下内容,不知如何修改?谢谢!

  .xcl部分内容:

/*

* Modify these lines if you have an external SRAM connected to the system.

*

* Note: Remember to turn on the external data and address busses in

*       __low_level_init if external memory is used.

*/

-D_..X_EXT_SRAM_BASE=_..X_SRAM_BASE

-D_..X_EXT_SRAM_END=_..X_SRAM_END



/*

我用的芯片是mega128l,外接了32k RAM,不知以上如何修改。还有 __low_level_init 在什么地方?感谢!

出0入0汤圆

发表于 2013-7-29 10:45:29 | 显示全部楼层
好像是得加上 __no_init  __eeprom  如果不加__no_init编译器不认识,有资料是这么显示的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-24 01:20

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

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