搜索
bottom↓
回复: 7

如何在codevision avr 中定义保存在FLASH指定地址的数组或者参数?

[复制链接]

出0入0汤圆

发表于 2008-7-25 08:46:29 | 显示全部楼层 |阅读模式
如何在codevision avr 中定义绝对地址的数组?
本人打算使用IAP功能保存一些参数到FLASH中,而且要把参数定义到一个页面中,方便擦写,节省空间,
但是需要将参数定义在FLASH中的绝对地址中,我查了半天,也不知道在codevision avr 中如何定义啊?
各位高手帮帮忙!!

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

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

出0入4汤圆

发表于 2008-7-25 13:02:15 | 显示全部楼层
用flash 指针访问

出0入0汤圆

 楼主| 发表于 2008-7-25 14:15:20 | 显示全部楼层
楼上能详细点么?
楼上是不是理解为这样的:
       unsigned char flash *p;
       unsigned char c[10];

        p=c;

是这样访问么?

我的主要问题是: 就是例如,将c[10]定义在flash 中某个起始空间地址,例如0x100,该如何定义?

出0入4汤圆

发表于 2008-7-25 15:27:17 | 显示全部楼层
无解. CVAVR不支持FLASH的绝对定位. c编译器不支持rom的绝对定位.

方法1:
uchar flash c[10];
uchar flash *p;
p = c;

软后用: p/页面大小 得到c所在的页面序号
        p%页面大小 得到c所在的页面偏移.  然后就可以操作了......

方法2:
把变量保存到flash后面的空白页面里. 直接用IAP来操作.

出0入0汤圆

发表于 2008-7-25 16:03:15 | 显示全部楼层
用内嵌汇编可以实现定义到指定地址.
但如何读出,也许只有CVAVR知道.

出0入0汤圆

 楼主| 发表于 2008-7-26 15:36:52 | 显示全部楼层
谢谢各位了,我找到一个方法,应该可以,还没下载到单片机试过:
   CVAVR中嵌入汇编可以实现绝对定位,然后使用IAP更新FLASH内容,使用FLASH指针可以读出FLASH内容;

   汇编如下:
    #asm
      ORG $0c10
      .CSEG
      .DB  0x01,0x02,0x03,0x04
   #endasm

就可以将 0x01,0x02,0x03,0x04 定义到 FLASH空间 0x01,0x02,0x03,0x04中去;

出0入0汤圆

 楼主| 发表于 2009-12-3 09:49:10 | 显示全部楼层
忘记回复了,按照我在五楼的回答也不行,大家不要被误导。

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-24 03:19

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

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