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字节对齐的,它的每个位也被独立编址。

CC2540 内存结构分析相关推荐

  1. JVM内存结构分析:为什么需要S0和S1?

    一.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...

  2. c++单链表逆置内存结构分析

    新建一个单链表l内存结构如图: 可见是带有3个node的list. 现在分析其逆置过程的内存结构变化,c++源码如下: void reverse_4(list& l) {node* a = l ...

  3. mysql源码分析——InnoDB的内存结构分析

    一.基本的数据结构 在InnoDB中,数据的分配和存储也有自己的数据结构,在前面分析过MySql中的内存管理,但是内存管理是有一个不断抽象的过程.在InnoDB中还会有一层自己的内存管理.在InnoD ...

  4. redis list放入对象_Redis从入门到入土:详细讲解内存模型以及常用命令

    Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String.List.Hash.Set和Sor ...

  5. 基于逆向工程的内存真值检查来保卫网络物理系统

    基于逆向工程的内存真值检查来保卫网络物理系统 原文 Defending Cyber-physical Systems through Reverse Engineering Based Memory ...

  6. 20160221.CCPP体系详解(0031天)

    程序片段(01):01.结构体静态数组.c+02.结构体动态数组.c 内容概要:结构体数组 ///01.结构体静态数组.c #include <stdio.h> #include < ...

  7. java第七章jdbc课后简答题_java学习路线流程

    第一阶段JavaSE: 第一章:jdk的安装与配置 第二章:Java基础语法: 变量.常量.数据类型.关键字 运算符和表达式:运算符:+.-.*./ 表达式:正则表达式 关系及逻辑运算符:关系运算符: ...

  8. 类和对象,属性和方法

    1. 定义 类:把某一类事物的属性提取出来,形成类,类有属性(也叫成员变量/field字段)和行为 对象:一个具体的实例 注意:从类到对象的说法:1)创建一个对象2)实例化一个对象3)把类实例化 成员 ...

  9. Java基础笔记(4w字长文警告)

    Java核心笔记 提示:点击右上角关注博主,收获共同话题 下面是我的个人学习Java的笔记,现在分享给广大友友: 文章目录 Java核心笔记 0.导论 标柱注释: 学习方法: 1 java概述 1.1 ...

最新文章

  1. 没有任何基础的可以学python吗-对没有编程基础的人来说,直接学Python入门IT合适吗?...
  2. oracle 方言报错,ORACLE11g:No Dialect mapping for JDBC type: -9解决方案详解
  3. linux mysql 1366_Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法
  4. python enumerate()函数
  5. html的页面宽高变形问题,CSS+div 设计的网页在不同浏览器中变形的问题
  6. 这篇 Linux 总结得很棒啊!
  7. 简明 Vim 练级攻略 (转)
  8. 关于python中自己写的模块之前相互调用函数
  9. flash中物体运动基础之七---------碰撞处理
  10. train_test_split按比例划分
  11. 海康摄像头使用网线连接电脑后无法访问摄像头ip
  12. lm358 pdf应用电路资料及引脚图
  13. 富勒wms系统里的定时器id_WMS项目实施,该如何调研?
  14. 最适合程序员的笔记软件
  15. 网友对各种杀软的评价诗歌
  16. 微信小程序实现用户登录(详)
  17. java接口文档怎么写_如何写好API接口文档
  18. 用聚宽量化炒股-5获取数据函数-6)获取指数成分股代码函数get_index_stocks
  19. 推荐几个网站 - (可视化、博客、社区、学习网站)
  20. CleanMyMac不停要求输入密码进行更改

热门文章

  1. 跟着iMeta学做图|circlize绘制和弦图展示样本物种相对丰度
  2. 约数——Hankson的趣味题
  3. Python崛起:“人生苦短,我用Python”并非一句戏言
  4. 基于ZebraPrinter 的ZPL 命令 --Android篇
  5. 华为服务器1u系列,1u服务器是什么意思
  6. 项目工作中,管理者如何合理安排任务优先级?
  7. FC 交换机端口类型
  8. emmc tuning test-sw tuning
  9. MySQL快速生成100W条测试数据
  10. Flutter使用UDP