【转载】AVR 单片机与GCC 编程_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【转载】avr 单片机与gcc 编程其次章 存储器操作2.1 存储器组织结构avr 系列单片机内部有三种类型的被自立编址的存储器,它们分离为:flash 程序存储器、内部sram 数据存储器和eeprom 数据存储器。flash 存储器为1k128k 字节,支持并行编程和串行下载,下载寿命通常可达10,000 次。因为avr 命令都为16 位或32 位,程序计数器对它按字举行寻址,因此flash 存储器按字组织的,但在程序中拜访flash 存储区时专用命令lpm 可分离读取指定地址的凹凸字节。寄存器堆(r0r31)、i/o 寄存器和sram 被统一编址。所以对寄存器和i/o 口的操作用法与拜访

2、内部sram 同样的命令。其组织结构2-1 所示。screen.width-200)this.style.width=screen.width*0.85;"> 图2-1 avr sram 组织 32 个通用寄存器被编址到最前,i/o 寄存器占用接下来的64 个地址。从0x0060 开头为内部sram。外部sram 被编址到内部sram 后。avr 单片机的内部有644k 的eeprom 数据存储器,它们被自立编址,按字节组织。擦写寿命可达100,000 次。2.2 i/o 寄存器操作i/o 专用寄存器(sfr)被编址到与内部sram 同一个地址空间,为此对它的操作和sram 变

3、量操作类似。sfr 定义文件的包含:include ,这是通过给avr-gcc 指令行添加-wl,-tdata,addr 选项来实现的,其中addr 必需是0x800000 加sram 实际地址。例如 要将.data 段从0x1100 开头,则addr 要给出0x801100。三.bss 段没有被初始化的ram 区全局或静态变量被分配到此段,在应用程序被执行前的startup过程中这些变量被清零。另外,.bss 段有一个子段 .noinit , 若变量被指定到.noinit 段中则在startup 过程中不会被清零。将变量指定到.noinit 段的办法如下:int foo _attribute

4、_ (section (“.noinit”);因为指定到了.noinit 段中,所以不能赋初值,犹如以下代码在编译时产生错误:int fol _attribute_(section(“.noinit”)=0x00ff;四.eeprom 段此段存储eeprom 变量。static unsigned char eep_buffer3 _attribute_(section(“.eeprom”)=1,2,3;在链接选项中可指定段的开头地址,如下的选项将.noinit 段指定位到ram 存储器0x2000 地址处。avr-gcc . -wl,-section-start=.noinit=0x80200

5、0要注重的是,在编译时avr-gcc 将flash、ram 和eeprom 内的段在一个统一的地址空间内处理,flash 存储器被定位到0 地址开头处,ram 存储器被定位到0x800000 开头处,eeprom 存储器被定位到0x810000 处。所以在指定段开头地址时若是ram 内的段或eeprom 内的段时要在实际存储器地址前分离加上0x800000 和0x810000。除上述四个段外,自定义段因需要而可被定义。因为编译器不知道这类段的开头地址,又称它们为未定义段。必须在链接选项中指定自定义段的开头地址。如下例:void mysection(void) _attribute_(section(".mysection");void mysection(void)printf("hello avr!");链接选项:avr-gcc . -wl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论