[AVR单片机] avr-gcc 的eeprom绝对定位真的能用么?

[复制链接]
3268|10
 楼主| huangxz 发表于 2013-6-6 19:06 | 显示全部楼层 |阅读模式
uint8_t  SomeVariable2[32] __attribute__((section(".eep2"))) = "123456";

我的.eep2是这么定义的

但是编译结果的文件.eep里面却没有这个内容,请教高手

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
qin552011373 发表于 2013-6-6 22:04 | 显示全部楼层
没用过捏。。。。。。。。。。。。。。
 楼主| huangxz 发表于 2013-6-6 22:12 | 显示全部楼层
qin552011373 发表于 2013-6-6 22:04
没用过捏。。。。。。。。。。。。。。

用用试一下呗,就当练练avr了
qin552011373 发表于 2013-6-6 22:13 | 显示全部楼层
huangxz 发表于 2013-6-6 22:12
用用试一下呗,就当练练avr了

好滴啊
gdxizhilang 发表于 2013-6-7 08:21 | 显示全部楼层
读写EEPROM,使用GCC自带的库函数,倒是用过,没记得写过.eep2,但是编译后会由系统自己生成。
楼主是要在0x30的地址读写一个字节,还是从0x30连续读写几个字节啊,这两种情况好像都没记得定义过.eep2。
 楼主| huangxz 发表于 2013-6-7 10:10 | 显示全部楼层
gdxizhilang 发表于 2013-6-7 08:21
读写EEPROM,使用GCC自带的库函数,倒是用过,没记得写过.eep2,但是编译后会由系统自己生成。
楼主是要在0 ...

恩,用GCC自带的库函数确实是可以,如果定义

uint8_t EEMEM SomeVariable3 = 0x55;


就还在eeprom的0地址出现0x55,但是我想指定偏移定义段,奇怪的是我用绝对地址定义flash,定义ram都没有问题,如
void bsp_init(void) __attribute__((section(".flash2")));
uint16_t __attribute__((section(".flash3"))) kep_val = 0x1998;

就是定义eeprom的时候有问题,在a论坛上看到一个post说是可以
http://www.amobbs.com/thread-680007-1-1.html 第28楼
(有图有真相)
第35楼,由于那个帖子很久了,也不知道当时用的编译器的版本
,我按照他的那种方法却不行,很是奇怪啊
gdxizhilang 发表于 2013-6-7 11:36 | 显示全部楼层
没这样搞过,按照刚才说的试了试,应该可以,但是不知道楼主在烧录的时候怎么设置的,有没有关系,如图烧录选项中的Auto->Program EEPOM勾选
不知道行不行,楼主可以试试
 楼主| huangxz 发表于 2013-6-7 11:36 | 显示全部楼层
今天居然有个很意外的发现,编译生成的hex里面居然还残留.eep2的信息在里面,可以.eep文件里面却只有0段偏移的

好像是avr-obj的时候,没有把.eep2段的给分离出去一样.真是搞不懂啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
gdxizhilang 发表于 2013-6-7 11:39 | 显示全部楼层
对,刚才发现系统自己生成的.eep文件是系统自定义的0x200
 楼主| huangxz 发表于 2013-6-7 11:42 | 显示全部楼层
gdxizhilang 发表于 2013-6-7 11:36
没这样搞过,按照刚才说的试了试,应该可以,但是不知道楼主在烧录的时候怎么设置的,有没有关系,如图烧录 ...

呵呵,你说的那种简单的方法是没有问题的,
关键是gcc里面的自定义段可以解决很多程序设计的结构问题。
奇怪在eeprom里面却不行,但明明看到已经有前辈实现的.
 楼主| huangxz 发表于 2013-6-7 16:01 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:醒来才发现,一切都是一场梦

177

主题

4937

帖子

11

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