单片机存储

以后用博客记笔记了,因为手写实在是有点慢,而且还有不工整的问题,导致自己后面懒得看

红色的表示不懂得地方

黄色的表示一些问题

绿色表示问题的解决

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”映射到那段地址里。)。

    

猜你喜欢

转载自www.cnblogs.com/longbaoshushu/p/11810952.html