CC2540 内存结构分析

    cc2540有4个存储类型:CODE, DATA, XDATA, SFR。

    CODE:地址空间占64k,只读。


    CODE代码区的Bank选择是通过寄存器FMAP实现的。


    CODE代码区的映射方式有两种:第一种是默认的,即CODE地址区域全部映射到FLASH,用于存储代码,如上图;第二种用于从SRAM执行代码,因此部分SRAM存储空间的地址会被映射到CODE区。


    有没有注意到SRAM_SIZE?这个值依据不同的芯片而不同:


    因此,对于CC2540来说,SRAM被映射到CODE地址域的字节大小为8KB。

    从SRAM执行代码可以加快执行速度和减少功耗。

   DATA:地址空间占256个字节,可读写,访问速度最快,其中低128字节可以直接访问或间接访问,而后128字节只能间接访问。

   XDATA:地址空间占64K,可读写,访问速度要慢于DATA(DATA区:1个指令周期,XDATA:4~5个指令周期)。XDATA区和CODE区占用同一条总线,因此指令的提取和XDATA区的数据存储不能同时进行。XDATA的地址主要映射到FLASH区域、也映射到部分的SFR区域和DATA区域,主要是为了支持DMA,因为DMA通过XDATA来实现数据的搬运,因此需要通过XDATA的地址域来访问SFR区域和DATA区域的资源。

    XDATA地址域主要分布为:


    由此可知,XDATA的前32k地址用于访问SRAM,而SRAM地址域中的[SRAM_SIZE-256, SRAM_SIZE-1]部分又映射到DATA区,此外XREG和SFR都映射到寄存器,不同的是,XREG寄存器主要用于配置和控制RF,它是蓝牙的底层硬件支持,而SFR是51内核和一些外设所包含的寄存器。INFORMATION PAGE是2KB大小的只读区域,主要存储一些固化信息如设备的蓝牙IEEE地址和TI的地址等。

    XDATA的高32k地址用于访问FLASH,CC2540一共有128页,每页2KB空间,一共256KB的FLASH空间,前面我们已经知道,CODE地址域已经有64K空间映射到了FLASH,而且是只读的,因此只剩下192KB用于存储数据(实际上更少)。那么在XDATA地址域中是如何选择BANK呢?就是靠MEMCTR寄存器。





   SFR:特殊寄存器,地址空间占128字节,其中寄存器地址为8字节对齐的,它的每个位也被独立编址。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值