ZigBee学习笔记_存储器

今天查看下CC2530的存储器,方便对源码的阅读,SLANRF-2530DK系统中有三个物理存储器:8K的SRAM、256K的闪存以及一个XREG/SFR寄存器。系统通过内存仲裁器来管理,内存仲裁器通过SFR总线,将CPU和DMA控制器和物理存储器和所有外设连接在一起。内存仲裁器有4个存取访问点,访问每一个可以映射到这三个物理存储器之一。

一、首先说下存储空间:8051CPU有4个不同的存储空间

ZigBee学习笔记_存储器_第1张图片

CODE:一个只读存储空间,用于程序存储,空间地址是64KB。

DATA:一个可读/写的数据存空间,可以直接或间接被一个单周期CPU指令访问。这一存储空间地址是256字节,DATA存储空间较低的128字节可以直接或间接寻址,较高的128字节只能间接寻址。

XDATA:一个可读/写数据存储空间,通常需要4-5个CPU指令周期来访问。这一存储空间地址是64KB,而且访问XDATA存储器慢于访问DATA,因为CODE和XDATA存储空间共享CPU内核上的一个通用总线,因此来自CODE的指令预取不能和XDATA访问并行执行。

SFR:一个读/写的寄存器存储空间,可以直接被一个CPU指令访问。这一存储空间含有128字节。对于地址能被8整除的SFR寄存器,每一位还可以单独寻址。

这四个存储空间在8051结构中是分开的,但是在设备中有部分是重叠的,以减轻DMA传输和硬件调试操作的负担。

二、存储器映射

在文档中给出了三个映射图

ZigBee学习笔记_存储器_第2张图片

ZigBee学习笔记_存储器_第3张图片

对于图2-1来说,通过XDATA存储空间可以访问全部物理存储空间,低端映射的是SRAM区,DATA存储空间映射到SRAM的高256字节处,SFR和XREG寄存器也都可以看到映射的地址,XDATA的高32KB空间可映射到可用的闪存区。

对于CODE存储器空间映射有两个备用机制

(1) 第一个机制是标准的8051映射,只有程序存储器映射到CODE存储空间。设备复位后默认使用的。

(2) 第二个机制用于执行来自SRAM的代码。在这种模式下SRAM映射到0x8000到(0x8000 + SRAM_SIZE-1)的区域,剩下的24KB空间仍可以映射到可用的闪存区。

DATA存储空间:映射到SRAM的高256字节中,(SRAM_SIZE-256)到(SRAM_SIZE-1)

SFR存储空间:128个硬件寄存器区域通过这一存储空间来访问。同时,SFR寄存器还可以通过XDATA地址空间(0x7080-0x70FF)来访问。

三、接下来就是地址的访问了,这个应该跟访问指令相关了就,才可知道具体是访问的哪个物理存储设备。

你可能感兴趣的:(ZigBee学习笔记_存储器)