打印
[AVR单片机]

avr-gcc 的eeprom绝对定位真的能用么?

[复制链接]
2627|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
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了

好滴啊

使用特权

评论回复
5
gdxizhilang| | 2013-6-7 08:21 | 只看该作者
读写EEPROM,使用GCC自带的库函数,倒是用过,没记得写过.eep2,但是编译后会由系统自己生成。
楼主是要在0x30的地址读写一个字节,还是从0x30连续读写几个字节啊,这两种情况好像都没记得定义过.eep2。

使用特权

评论回复
6
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楼,由于那个帖子很久了,也不知道当时用的编译器的版本
,我按照他的那种方法却不行,很是奇怪啊

使用特权

评论回复
7
gdxizhilang| | 2013-6-7 11:36 | 只看该作者
没这样搞过,按照刚才说的试了试,应该可以,但是不知道楼主在烧录的时候怎么设置的,有没有关系,如图烧录选项中的Auto->Program EEPOM勾选
不知道行不行,楼主可以试试

使用特权

评论回复
8
huangxz|  楼主 | 2013-6-7 11:36 | 只看该作者
今天居然有个很意外的发现,编译生成的hex里面居然还残留.eep2的信息在里面,可以.eep文件里面却只有0段偏移的

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

使用特权

评论回复
9
gdxizhilang| | 2013-6-7 11:39 | 只看该作者
对,刚才发现系统自己生成的.eep文件是系统自定义的0x200

使用特权

评论回复
10
huangxz|  楼主 | 2013-6-7 11:42 | 只看该作者
gdxizhilang 发表于 2013-6-7 11:36
没这样搞过,按照刚才说的试了试,应该可以,但是不知道楼主在烧录的时候怎么设置的,有没有关系,如图烧录 ...

呵呵,你说的那种简单的方法是没有问题的,
关键是gcc里面的自定义段可以解决很多程序设计的结构问题。
奇怪在eeprom里面却不行,但明明看到已经有前辈实现的.

使用特权

评论回复
11
huangxz|  楼主 | 2013-6-7 16:01 | 只看该作者
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

176

主题

4917

帖子

11

粉丝