本帖最后由 大头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行”,可查看起始地址是否和设定吻合。 |