地址空间规划
打开m16def.inc、可以看到如下面的定义,它和手册里面描述的FlashROM、SRAM、EEPROM等的地址空间一一对应。
; ***** DATA MEMORY DECLARATIONS *****************************************
.equ FLASHEND = 0x1fff ; Note: Word address、这里一共是8K word的flash ROM
.equ IOEND = 0x003f ; IO寄存器的地址空间是0x0000-0x003F、但它们被映射到0x0020-0x005F
.equ SRAM_START = 0x0060 ; 0x0060-0x0045F这1KB的地址空间是内部RAM使用的地址空间
.equ SRAM_SIZE = 1024 ;
.equ RAMEND = 0x045f ;
.equ XRAMEND = 0x0000 ; 这里可能是为外部RAM预留的地址空间 - question-001
.equ E2END = 0x01ff ; EEPROM一共有512B,占据着0x0000-0x01FF的地址空间
.equ EEPROMEND = 0x01ff ; 这个地址送到EEPROM控制寄存器使用
.equ EEADRBITS = 9 ; 512个单元需要9位地址线来访问
#pragma AVRPART MEMORY PROG_FLASH 16384 ; 8K word = 16K byte
#pragma AVRPART MEMORY EEPROM 512
#pragma AVRPART MEMORY INT_SRAM SIZE 1024
#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x60