单片机存储
以后用博客记笔记了,因为手写实在是有点慢,而且还有不工整的问题,导致自己后面懒得看
红色的表示不懂得地方
黄色的表示一些问题
绿色表示问题的解决
cc2530的存储空间
CODE:只读的存储空间,用于程序存储,其最大寻址空间为64KB。
DATA:读写的数据存储空间,可以直接或间接被一个周期cpu指令访问,最大寻址空间为256B,较低的128B可以直接访问或间接访问,高128位只能通过间接访问。
XDATA:读写的数据存储空间,通常需要4或5个cpu指令周期来访问,存储空间为64KB,且访问XDATA的存储器慢于访问DATA,因为CODE和XDATA存储空间共享cpu内核上的一个通用总线。
SFR:一个读写寄存器存储空间,可直接被一个cpu指令访问,有128字节空间。(什么鬼,寄存器能有128字节的空间?SFR到底是个什么鬼?是寄存器,还是一个存储空间?)
注:cc2530用的是51单片机的内核(16位地址总线)。
映射
XDATA映射:
XBANK:XDATA较高的32KB区域,只读,作用是储存常量数据,任何可用的32KB闪存都可以在这里被映射出来,可用寄存器MEMCTR选择可用的闪存区域。
物理存储器信息页面映射到XDATA的地址区域为0x7800~0x7FFF,只读区域,存储与芯片有关的信息。
8051的SFR寄存器映射的地址区域为0x7080~0x70FF。
SRAM的映射地址为0x0000~SRAM_SIZE-256。(这里的SRAM意思是静态RAM吗?单片机里也有这种设备吗?)
8051的DATA映射空间为SRAM_SIZE-256~SRAM_SIZE-1。
CODE映射:
用来存放程序代码及常量的程序存储器,其寻址空间为64KB,需将Flash映射到CODE的地址范围,在CC2530F256种FLASH存储空间为256KB,所以,CC2530将Flash分成了几个区域(Bank),每个Bank 为32KB大小,对于CC2530F256有8个Bank,通过寄存器的操作来决定将哪一个Bank映射到CODE上。Bank0总是映射到物理闪存存储器较低的32KB。
映射寄存器
两个,一个是MEMCTR,另一个是FMAP,两个都是8位的寄存器
MEMCTR:控制Flash的哪一个BANK映射到XDATA的XBANK区。
FMAP:控制物理闪存存储器的BANK区域代码区映射到CODE存储空间的程序地址区域0x8000~0xFFFF。(这里也就是说,CODE存储空间的地址就是0x8000~0xFFFF,而这个寄存器的功能就是把那一块物理区域“BANK”映射到那段地址里。)。