CC2541 内存区域

ROM或者闪存,叫程序存储区,写的程序是存在这里面的,上电后从这里面执行。程序存储区也分为片内和片外,闪存或者罗不管是片内还是片外的,只能用来定义常量,是用代码来修饰。也就是说,用代码来修饰的东西,在程序运行过程中,不能修改。

51-RAM

  • 内部RAM的低128位(00-7F),对应Ç语言就是数据;直接或间接寻址内部RAM的0×20~值为值为0x2F是一块可位寻址区,对应于Ç语言的BDATA。
  • 内部RAM的高128位(80-FF),对应Ç语言就是IDATA;间接寻址。
  • IDATA的范围是256位(00-FF),可以看出IDATA是包含数据(00-7F)的,区别只是寻址方式不同,同时在80〜FF,这块片内RAM通常用于中断和函数调用的堆栈,一般不区使用的的.idata是用类似ç中的指针方式访问的。
  • 特殊功能寄存器(SFR)
  • 外部RAM 64K(0000-FFFF)。前256个算是一页,这一页比较特殊,是用pdata来修饰的,当然,也可以用xdata来修饰。除了第一页的256个以外的其他65280个空间,只能用XDATA来修饰;

向地址80H地址写一个数值,内部的高128位RAM?还是SFR?是用指令。

直接寻址访问的就是SFR
R0或者R1间接寻址内部高128位RAM
DPTR或者是R0,R1间接寻址且配合的是MOVX指令访问外部外部RAM中地址

存储类型与存储区关系

  •      data --->可寻址片内ram
  •      bdata --->可位寻址的片内ram
  •      idata --->可寻址片内ram,允许访问全部内部ram
  •      pdata --->分页寻址片外ram(MOVX @ R0)(256 BYTE /页)
  •      xdata --->可寻址片外ram(64k地址范围FFFFH)
  •      code --->程序存储区(64k地址范围),对应MOVC @DPTR

 

8051 CPU核心是一个单周期8051兼容的核心。它有三个不同的内存访问总线(SFR,DATA和CODE / XDATA),具有对SFR,数据和主SRAM的单周期访问。它还包括一个调试接口和一个18输入的扩展中断单元.CPU和内存的详细功能将在第2章中介绍。

- - - - - - - - - - - - - - - - - -

内存仲裁程序是系统的核心,因为它通过SFR总线将CPU和DMA控制器与物理内存和所有外设连接起来。仲裁内存器有四个内存访问点,其中的访问可以映射到三个物理内存中的一个:RAM,闪存和XREG / SFR寄存器。内存仲裁程序负责执行对同一物理内存的同时内存访问之间的仲裁和排序。

- - - - - - - - - - - - - - - - - -

这是低功耗应用程序的一个重要特性。

- - - - - - - - - - - - - - - - - -

32,64,96,128或256 kb的闪存块为设备提供了在线可编程的非易失性程序内存,并映射到CODE和XDATA内存空间。除了保存程序代码和常量之外,非易失性内存还允许应用程序保存必须保存的数据,以便在重新启动设备后可用例如,使用这个特性可以使用保存的特定于网络的数据,从而避免完全启动和网络查找-连接过程的需要。

8051 CPU架构有四个不同的RAM内存空间.8051有独立的内存空间用于程序内存和数据内存 .8051内存空间如下(详见2.2.1节和2.2.2节):

1,CODE。用于程序内存的只读存储器空间。这个内存空间的地址是64 KB。

2,DATA。可由单周期CPU直接指令或间接访问的读写数据内存空间。这个内存空间的地址是256字节。数据内存空间的下128字节可以直接或间接寻址,而上128字节只能间接寻址。

3,XDATA。读写数据内存空间,通常需要4-5个CPU指令周期来访问。这个内存空间的地址是64 KB【0-FFFF】。对XDATA内存的访问也比数据访问慢,因为CODE和XDATA内存空间在CPU核心上共享一个公共总线,因此不能与XDATA访问并行执行来自代码的指令预取

4,SFR。读写一种寄存器内存空间,可由单个CPU指令直接访问。这个内存空间由128字节组成。对于地址可被8整除的SFR寄存器,每个位也可以单独寻址。

这四个不同的内存空间在8051架构中是不同的,但是在设备中有部分重叠,以简化DMA传输和硬件调试器操作。

不同的内存空间如何映射到三个物理内存(闪存程序存储器,SRAM和存储器映射寄存器)在2.2.1和2.2.2节中进行了描述。

内存映射内存映射与标准8051内存映射在两个重要方面不同,如下所述。

首先,为了允许DMA控制器访问所有物理内存,从而允许不同8051内存空间之间的DMA传输,将SFR和DATA内存空间的部分映射到XDATA内存空间(见图2-1)。

其次,可以使用两种替代方案进行代码内存空间映射。

如图1所示,第一种方案是标准8051映射,其中只有程序内存(即闪存)映射到CODE内存空间。该映射是设备重置后的默认映射,如图2-2所示。

2,第二种方案用于从SRAM执行代码。在这种模式下,SRAM映射到0x8000到(0x8000 + SRAM_SIZE - 1)的区域,映射如图2-3所示。从SRAM执行代码可以提高性能并降低功耗。

XDATA的上32 KB是一个只读区域,称为XBANK(参见图2-1)。任何可用的32 KB闪存blonk都可以在这里映射。这使得软件可以访问整个闪存。这个区域通常用来存储额外的常量数据。有关所有8051内存空间映射的详细信息在2.2.2节中给出。

图2-1到图2-3给出了显示不同物理内存如何映射到CPU内存空间的内存映射图。可用闪存库的数量取决于闪存大小选项。

128byte SFR地址---> xdata [7080-70FF];

256byte DATA地址---> xdata [0000-1FFF];

 

CPU的内存空间:

XDATA内存空间.XDATA内存映射如图2-1所示。

1,SRAM映射到地址范围0x0000到(SRAM_SIZE - 1)。若SRAM_SIZE = 8 kb【0x0000-0x1FFF】
2,XREG区域映射到1 KB地址范围(0x6000-0x63FF)。这些寄存器是附加寄存器,有效地扩展了SFR寄存器空间。一些外围寄存器和大多数无线电控制和数据寄存器都映射在这里
3,SFR寄存器映射到地址范围(0x7080-0x70FF)。
4,闪光灯信息页(2KB)映射到地址范围(0x7800- 0x7FFF的)这是一个只读区域,包含有关设备的各种信息
.5,XDATA内存空间的上32 KB(0x8000-0xFFFF)是只读闪存代码库(XBANK),使用MEMCTR.XBANK [2:0比特,可以映射到任何可用的闪光空白
0.6,闪存,SRAM和寄存器到XDATA的映射允许DMA控制器和CPU访问单个统一地址空间中的所有物理内存
0.7,写入内存映射(图中阴影部分)未的实现的区域读取数据将返回0×00。对只读区域(即闪烁区域)的写操将被忽略
如图8所示,代码的内存空间.CODE存空间为64 KB,分为公共区域(0x0000k - 0x7FFF的的)。和银行区域(0x8000-0xFFFF),如图2-2所示公共区域总是映射到银行区域可以映射到任何可用的32 KB闪存银行(从0到7,共256k)。可用闪存银行的数量取决于闪存大小选项。使用闪存银行 - 较低的32 KB物理闪存(银行0)。选择寄存器FMAP选择闪存银行。在32 kb的设备上,没有闪存可以映射到银行区域。从该区域读取数据将在这些设备上返回0×00。
9,允许程序执行从SRAM,可以SRAM映射到低银行区域的范围从0 x8000-(0 x8000 + SRAM_SIZE - 1)。其余的当前选择的bank仍然是映射到的地址范围(0 x8000 + SRAM_SIZE) - 0 xffff。设置MEMCTR.XMAP位启用此功能
.10,CODE的内存空间.CODE内存的8位地址范围映射到SRAM的上256字节,即从(SRAM_SIZE - 256)到(SRAM_SIZE - 1)的地址范围。用于执行代码
0.11,SFR内存空间。通过这个内存空间可以访问128条目的硬件寄存器区域.SFR寄存器也可以通过地址范围(0x7080-0x70FF)的XDATA地址空间访问。一些特定于CPU的SFR寄存器驻留在CPU内核中,只能使用SFR内存空间访问它们,而不能通过映射到XDATA内存空间的重复映射访问它们。这些特定的SFR寄存器列在SFR寄存器中。

iamgeBiamgeA          
126976126976BIM工程代码0x0000-0x07FF 0000   
 7CODE_BEG0x0830 80011   
    100022   
    180033   
    200044   
    280055   
    300066   
 CODE_END0x3FFF 380077   
8 CODE_BEG0x4030 400088   
    480099   
    50001010   
    58001111   
    60001212   
    68001313   
    70001414   
 CODE_END0x7FFF 78001515   
16 BANK1_BEG0x18000 180001601100008000 
    18800171   
    19000182   
    19800193   
    1A000204   
    1A800215   
    1B000226   
    1B800237   
    1C000248   
    1C800259   
    1D0002610   
    1D8002711   
    1E0002812   
    1E8002913   
    1F0003014   
 BANK1_BEG0x1F000 1F8003115   
16 BANK2_BEG0x28000 280003202200008000 
    28800331   
    29000342   
    29800353   
    2A000364   
    2A800375   
    2B000386   
    2B800397   
    2C000408   
    2C800419   
    2D0004210   
    2D8004311   
    2E0004412   
    2E8004513   
    2F0004614   
 BANK2_BEG0x2F000 2F8004715   
16 BANK3_BEG0x38000 380004803300008000 
    38800491   
    39000502   
    39800513   
    3A000524   
    3A800535   
    3B000546   
    3B800557   
    3C000568   
    3C800579   
    3D0005810   
    3D8005911   
    3E0006012   
    3E8006113   
    3F0006214   
 BANK3_BEG0x3F000 3F8006315   
6 BANK4_BEG0x48000 480006404400008000BANK4用作存储常量数据段映射到代码段中
    48800651  
    49000662  
    49800673  
    4A000684  
 BANK4_END0x4AFFF 4A800695  
 10BANK4_BEG0x4B000 4B000706  
    4B800717  
    4C000728  
    4C800739  
    4D0007410  
    4D8007511  
    4E0007612  
    4E8007713  
    4F0007814  
 BANK4_END0x4FFFF 4F8007915  
 16BANK5_BEG0x58000 580008005500008000BANK5用作存储常量数据段映射到代码段中;BANK5数据会传输到XDATA的区域中去
    58800811  
    59000822  
    59800833  
    5A000844  
    5A800855  
    5B000866  
    5B800877  
    5C000888  
    5C800899  
    5D0009010  
    5D8009111  
    5E0009212  
    5E8009313  
    5F0009414  
 BANK5_END0x5FFFF 5F8009515  
 16BANK6_BEG0x68000 680009606600008000 
    68800971   
    69000982   
    69800993   
    6A0001004   
    6A8001015   
    6B0001026   
    6B8001037   
    6C0001048   
    6C8001059   
    6D00010610   
    6D80010711   
    6E00010812   
    6E80010913   
    6F00011014   
 BANK6_END0x6FFFF 6F80011115   
 13BANK7_BEG0x78000 7800011207700008000 
    788001131   
    790001142   
    798001153   
    7A0001164   
    7A8001175   
    7B0001186   
    7B8001197   
    7C0001208   
    7C8001219   
    7D00012210   
    7D80012311   
 BANK7_END0x7E7FF 7E00012412   
  NV1  7E80012513   
  NV2  7F00012614   
  位锁页锁位页面  7F80012715   
     78000128     
            
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值