4401|1

28

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

avr flash地址问题 [复制链接]

本帖最后由 大头BB 于 2014-8-1 15:11 编辑

开发环境:avr studio 6    attiny841    8Kflash      地址0x0000-0x0fff
1.sudio 6 烧写flash时候地址是怎么分配的,是从0x0000开始按顺序编满为止,还是说studio 6随机分配地址空间。
2.在studio 6中如何查看ram和flash空间大小
3.如何在程序中定义一个地址区间,譬如说,定义一个从地址0x0001起始的100个byte的数组a[],只允许这个数组访问,如何实现。
我计划是在程序中把一些参数值写入到flash做掉电保存,eeprom不够用,现在可以写入也可以读取,但是我不知道写入的地址空间是否为flash的应用程序空间,然后把程序代码给擦除了。

自己找到方法来,转载过来
一.您可通过如下步骤来实现,指定程序代码空间在flash中的位置。
1.在Atmel Studio 6.1中打开目标
2.在Solution Explorer窗口选中项目文件名,右键单击Property;
3.选中Toolchain->AVR/GNU Linker->Memory Settings;
4.在该对话框FLASH segment窗口中,选中Add Item;
5.在空行中输入:.text=0x500 其中0x500为期望的程序空间起始地址,注意目标地址(0x1000)被除2的关系;
6.保存设置并对工程进行Build Solution;
7.打开Solution Explorer->Output Files->**.lss文件(**表示项目名)在“LMA列与.text行”,可查看起始地址是否和设定吻合。

最新回复

程序的地址如无指定,编译程序会从0起始分配。器件的RAM和ROM使用率问题可以从编译后产生的列表文件中看到,集成环境的话应该有指示区或相关查询指令,好好研究一下软件就应该明白。 如果你要在程序存储器内存储数据,如果该数据是常数,那么在程序里直接定义即可,如果是需要IAP存储的数据,那么首先要看你用的MCU是否支持IAP以及实现IAP的方式,然后才能确定能否这么做以及怎么做。就AVR而言,在程序存储器中存储变量是无法直接实现的。  详情 回复 发表于 2014-8-1 16:19
点赞 关注
 

回复
举报

1万

帖子

139

TA的资源

版主

沙发
 
程序的地址如无指定,编译程序会从0起始分配。器件的RAM和ROM使用率问题可以从编译后产生的列表文件中看到,集成环境的话应该有指示区或相关查询指令,好好研究一下软件就应该明白。
如果你要在程序存储器内存储数据,如果该数据是常数,那么在程序里直接定义即可,如果是需要IAP存储的数据,那么首先要看你用的MCU是否支持IAP以及实现IAP的方式,然后才能确定能否这么做以及怎么做。就AVR而言,在程序存储器中存储变量是无法直接实现的。
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表