如何在codevision avr 中定义保存在FLASH指定地址的数组或者参数?
如何在codevision avr 中定义绝对地址的数组?本人打算使用IAP功能保存一些参数到FLASH中,而且要把参数定义到一个页面中,方便擦写,节省空间,
但是需要将参数定义在FLASH中的绝对地址中,我查了半天,也不知道在codevision avr 中如何定义啊?
各位高手帮帮忙!! 用flash 指针访问 楼上能详细点么?
楼上是不是理解为这样的:
unsigned char flash *p;
unsigned char c;
p=c;
是这样访问么?
我的主要问题是: 就是例如,将c定义在flash 中某个起始空间地址,例如0x100,该如何定义? 无解. CVAVR不支持FLASH的绝对定位. c编译器不支持rom的绝对定位.
方法1:
uchar flash c;
uchar flash *p;
p = c;
软后用: p/页面大小 得到c所在的页面序号
p%页面大小 得到c所在的页面偏移.然后就可以操作了......
方法2:
把变量保存到flash后面的空白页面里. 直接用IAP来操作. 用内嵌汇编可以实现定义到指定地址.
但如何读出,也许只有CVAVR知道. 谢谢各位了,我找到一个方法,应该可以,还没下载到单片机试过:
CVAVR中嵌入汇编可以实现绝对定位,然后使用IAP更新FLASH内容,使用FLASH指针可以读出FLASH内容;
汇编如下:
#asm
ORG $0c10
.CSEG
.DB0x01,0x02,0x03,0x04
#endasm
就可以将 0x01,0x02,0x03,0x04 定义到 FLASH空间 0x01,0x02,0x03,0x04中去; 忘记回复了,按照我在五楼的回答也不行,大家不要被误导。 现在搞定了没有啊?
页:
[1]