本文以CC2530的F256为例,即有256kb的flash存储器和8K的sram存储器

一、CC2530里的四种存储空间(结构上划分的存储空间,并不是实际的存储器,是一种理论上的概念)
           1.  CODE    程序存储器   用处存放程序代码和一些常量
               有16根地址总线,所以CODE的寻址范围是 0000H~FFFFH 共64KB
           2.  DATA     数据存储器   用于存放程序运行过程中的数据
               有8根地址总线,所以DATA的寻址空间为 00H~FFH 共256 byte.低128位可以直接寻址,高128位只能间接寻址。
           3. XDATA   外部数据存储器(只能间接寻址,访问速度比较慢)  DMA是再XDATA上寻址的,这一点很重要
              有16根地址总线,所以 XDATA 的寻址空间为 0000H ~ FFFFH 共64K
           4.  SFR   特殊功能寄存器  就是那些T1CTL, EA, P0 等配置寄存器存储的地方 共128K。因为CC2530的配置寄存器比较多,所以一些多余的寄存器就放到了 XREG  里面。XREG的大小为1K XREG的访问速度比 SFR慢。

以上4中存储空间只是4种不同寻址方式的概念,并不代表物理上具体的存储设备。例如 FLASH 或者 EEPROM都可以作为物理的存储媒介映射 到CODE上,DRAM或者SRAM都可以作为存储媒介映射到DATA中。CODE和DATA是存储空间的概念,FLASH、SRAM、EEPROM等是具体的物理存  储设备,这两个概念不要混淆。这好比,电脑需要RAM和ROM,这个ROM可以是西部数据的硬盘,也可以使三星的硬盘,也可以是不同材料的固态硬盘。一个是存储空间,另一个是具体的物理存储设备。

二、关于CODE存储器的映射
      大家肯定会有疑问:既然CODE的寻址范围只有64KB,那CC2530F256怎么有256KB的flash呢?
      正是为了解决寻址空间不足的问题,CC2530才提出了映射的概念。(当然,映射的另一重要目的是为了DMA)
      CC2530把FLASH存储器分成了几个bank,每个bank的大小是32KB,即对于F256来讲,它有8个bank分别是bank0~bank7(不同芯片,bank数目不同)。通过FMAP.MAP[2:0] 控制,把不同的编号的bank映射到CODE上,解决了寻址空间受限制的问题。上图..
 
       从图中可以看出,bank0是rootbank,就是程序开始执行的地方,这个common area始终都是对应FLASH存储器的0000H~7FFFH,   上面的另一半可以映射bank0~7. 我以前一直疑惑,为什么common area已经有bank0了,上面怎么还可以有bank0,从user guide里看,这样是可以的,就比如CC2530F32,只有一个bank0,它也只能这么映射了吧。

三、关于XDATA存储器的映射
关于XDATA的映射,可以这么说:一切都是为了DMA!!  为了让DMA能访问所有的存储区域,所以把所有的存储器都映射到了XDATA上。上图:
 
       从图中可以看出,XDATA中包含了所有存储器的映射,包括256kb的FLASH存储器,8K 的SRAM存储器,还有 SFR , XREG, INFORMATION FAGE。这里看出来,其实CC2530的DATA,和 XDATA,都是用SRAM作为物理存储媒介的,但是它们的寻址方式不一样,所以访问DATA,比访问XDATA要快。至于SFR,XREG,INFORMATION PAGE,我不知道它们用了什么物理存储媒介,但是它们都被映射到XDATA上,可以被DMA访问。
       这里要搞清楚一个概念,映射到XDATA上,不代表就只能用XDATA的寻址方式访问。比如SFR,它虽然被映射到了XDATA上,只能说明,DMA可以通过访问XDATA来操作SFR,但是CPU还是可以通过单周期访问SRF.打个比方,我们平时坐的公交车上都有一把逃生应急锤,在紧急情况下可以敲破窗子逃生。我们平时不会使用锤子敲碎窗子进出车厢,我们平时有车门可以走。但是在特殊情况下(比如DMA要操作某个存储器中的数据时),我们可以用特殊的方法(从XDATA上的映射来得到我们想要的数据)。

四、关于从SRAM启动代码
  
      这种情况下,CC2530把SRAM存储器整个都映射到了CODE的bank area,可以从SRAM中执行代码。不要理解错了,这里只是说可以从SRAM中运行代码,不代表程序从SRAM中启动。程序还是会从 CODE的rootbank的0000H开始执行,只不过我们可以通过程序控制,让程序跳到 8000H之后,执行我们SRAM中想要的代码。

CC2530存储空间的使用

IAR中CC2530的有两种代码模式,Near和Banked。其中Banked模式是ZStack使用的模式,ZStack的ROM使用大约在100多KB。其中Near是普通的51单片机模式,只支持64KB的访问范围

CC2530存储器映射相关推荐

  1. Cortex-M3中的存储器映射

    文章目录 1 Cortex-M3中的存储器映射 1 Cortex-M3中的存储器映射 Cortex-M3中的预定义的存储器映射,如下图,注意,这里指的是规范,实际厂家并不一定完全按照这个规范做. SR ...

  2. ARM的存储器映射与存储器重映射【转载】2009-12-14 10:29最近在用LPC2148,看到了一篇文章,感觉很有帮助,就转了过来。

    ARM的存储器映射与存储器重映射[转载]2009-12-14 10:29最近在用LPC2148,看到了一篇文章,感觉很有帮助,就转了过来. arm处理器本身所产生的地址为虚拟地址,每一个arm芯片内都 ...

  3. stm32存储结构 存储器映射

    问题: 1   什么是存储器映射?是怎么一个运作过程? 2   stm32总体架构 3   CM3内核结构 1 STM32系统结构 要想深刻理解STM32的存储器,需要首先知道STM32的系统结构. ...

  4. Cortex M3存储器映射

    CortexM3存储器系统 宗旨:技术的学习是有限的,分享的精神是无限的. CM3 只有一个单一固定的存储器映射.这一点极大地方便了软件在各种 CM3 单片机间的移植. 存储空间的一些位置用于调试组件 ...

  5. 【STM32存储器映射-寄存器基地址-偏移】

    前言 在学习STM32的时候,我们看到很多的寄存器编程, 比方说LED灯: //GPIOB.5端口输出高电平GPIOB->ODR|=1<<5; //PB.5 输出高GPIOE-> ...

  6. Cortex-M3存储器映射

    CM3存储器映射概览 CM3的地址空间是4GB,程序可以在代码区.内部SRAM区以及外部RAM区中执行.但是因为ICode总线与DCode总线只能访问代码区,因此最理想的是把程序放到代码区,从而使取指 ...

  7. s3c6410存储器映射

    1.引导镜像区  0x0000_0000~0x07FF_FFFF 2.内部存储区 (1) 内部ROM      0x0800_0000~0x0BFF_FFFF (2) 内部SRAM    0x0C00 ...

  8. CC2530存储器读写

    CC2530共计有256KBflash,每2KB划分为1page,每16page划分为1 bank,如图: 在读取flash中数据的时候,首先要知道是读的哪个第几个bank中的数据,因为要把对应的fl ...

  9. MKL25Z128 Cortex-M0微处理器架构定义的存储器映射

  10. 蓝桥杯基础模块9:IO口扩展与存储器映射

    一.模块题目 二.原理简述 三.源码 (1)I0扩展 //头文件 #include "reg52.h" //延时函数 void Delay(unsigned int t) {

最新文章

  1. 盘点2019年336起机器人及相关领域投融资事件!注重细分领域深耕行业复苏趋势显现...
  2. [原创]通过编写PowerDesigner脚本功能批量修改属性
  3. CSS || 三栏布局,两边固定,中间自适应
  4. python基础代码-python基础代码
  5. Ubuntu16.04(64位)下面使用Doxygen+Graphviz分析python代码
  6. 缓存(Cache)管理 ---- 系列文章
  7. td之间的间距怎么改_论文的一级标题、二级标题格式怎么弄?
  8. python2没有pip命令_解决Windows下python和pip命令无法使用的问题
  9. Delphi使用经验笔记。
  10. python标准库os.path中_Python零基础入门学习19:常用标准库之os.path子库
  11. 封装一个FTPClient连接池工具类
  12. 计算机组成原理英文词汇,“计算机组成原理”课专业词汇英汉对照.pdf
  13. 中文网页中的字体选型及开发指南
  14. Ubuntu下载QQ
  15. 中国数字音乐——版权问题之公司分析
  16. 程序员能力的四个境界
  17. select函数使用细节
  18. 成都百知教育关于Shopee 平台政策规则解读!
  19. 百度,阿里,搜狐公司社招面试题及总结
  20. 题目:输入一个8bit数,输出其中1的个数,只能使用1bit全加器

热门文章

  1. c语言数据结构和数据类型_C语言中的数据类型
  2. 二级c语言题库分类,二级C语言题库分类.xls
  3. 联想智能云教室部署(网络同传)
  4. 学生管理系统 c语言版
  5. java实验报告遇到的问题,JAVA实验报告_doc
  6. android 人脸识别边框_Android相机预览,指定区域显示预览框,在区域内出现人脸进行人脸识别,并抓拍人脸照片存在本地...
  7. Java中的数据结构之常见的五种数据结构
  8. xshell和xftp免费版下载地址
  9. mysql sql loader_Sql Loader的简单使用
  10. dism++封装系统使用教程_【原创】最新WIN10系统封装教程2019系列(一)——定制母盘...