标准51系列内核的逻辑空间为哈佛结构,也就是说,程序空间和地址空间是分开的。具体分为:

CODE区:存放程序代码和一些常量信息,有16根地址总线,寻址范围为0x0000~0xFFFF,共计64K

DATA区:存放运行中的数据,8根地址总线,寻址范围为0x00~0xFF,共计256个字节,其中,低128字节可直接寻址,高128字节可间接寻址。

XDATA:外部数据存储器,间接寻址,16根地址总线,寻址范围为0x0000~0xFFFF.共计64K。

Technorati 标签: CC2530 Flash

51系列内核的物理存储空间划分为Flash,SRAM,SFR,Info Page,XREG。

逻辑空间划分为4类,CODE、DATA、SFR、XDATA。

CODE全部映射到Flash中去,DATA区全部映射到SRAM中去,其中,低128字节的DATA可直接或间接寻址,高128字节只能间接寻址。XDATA大部分映射到Flash,少部分映射到SRAM中。DMA在XDATA上寻址。

这里,就有一个疑问了,既然CC2530系列内部Flash最大可达256K,最小可以为32K。但是CODE区可寻址范围最大只有64K,如何去寻址256K呢?为了兼容不同系列的Flash大小空间读写问题,以32K为一个bank单位,最大空间256K,划分为8个bank,编号为bank0~bank7,其中,bank0是root bank,始终占有。那么CODE寻址还剩下32K空间,因此,最多可以再映射一个bankx(x=1~7),其中,x值的选择由FMAP[2:0]数值来确定将高位空间映射到剩下的0x8000-0xFFFF 中去。

空间结构图如下:

下图是示意Flash映射分配图

 

Flash中,一个page的大小为2K,.SRAM映射的空间为低位的8K空间,地址范围为0x0000~0x1FFF.其顶部256个字节用于映射DATA区。

那么,在这么些bank里面,每个区域又是如何划分的呢?这就要用到IAR的全局链接文件f8w2530.xcl了。

f8w2530.xcl文件时IAR的链接工具的配置文件,其中,定义了许多段(-Z.-P)、宏(-D)。

 

对于一些NV项目的存储,链接文件中有如下说明:

内部NV项存储地址开始和结束,总体预留空间为6个page,也就是12K。

 

在Flash中的最后一个bank的最后一个page,保留使用,其内容分布如下:

 

CC2530之Flash映射的更多相关文章

  1. CC2530的Flash

    CC2530F256内部集成一个增强型8051单片机,拥有8 KB SRAM和256 KB内部Flash存储器.内部Flash主要用来保存程序代码和常量数据.由于传统8051代码存储空间寻址范围只有6 ...

  2. 第24章 QSPI—读写串行FLASH

    本章参考资料:<STM32F76xxx参考手册>.<STM32F76xxx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>及<S ...

  3. ARM地址重映射机制

    转:http://blog.csdn.net/yuanzhangmei1/article/details/8395028 ARM体系结构中,系统上电或复位后,处理器将从地址0x0处取第一条指令,因此, ...

  4. linux下Pl353 NAND Flash驱动分析

    linux的NAND Flash驱动位于drivers/mtd/nand子文件夹下: nand_base.c-->定义通用的nand flash基本操作函数,如读写page,可自己重写这些函数 ...

  5. 30个类手写Spring核心原理之MVC映射功能(4)

    本文节选自<Spring 5核心原理> 接下来我们来完成MVC模块的功能,应该不需要再做说明.Spring MVC的入口就是从DispatcherServlet开始的,而前面的章节中已完成 ...

  6. (转载)spring mvc DispatcherServlet详解之一---处理请求深入解析

    要深入理解spring mvc的工作流程,就需要先了解spring mvc的架构: 从上图可以看到 前端控制器DispatcherServlet在其中起着主导作用,理解了DispatcherServl ...

  7. 转 android launch flow

    Android系统开机主要经历三个阶段: bootloader启动 Linux启动 Android启动 启动文件: 对于机器从通电到加载Linux系统一般需要三个文件:bootloader(引导文件) ...

  8. android开机启动过程

    Android系统开机主要经历三个阶段: bootloader启动 Linux启动 Android启动 启动文件: 对于机器从通电到加载Linux系统一般需要三个文件:bootloader(引导文件) ...

  9. MTD NANDFLASH驱动相关知识介绍

    转:http://blog.csdn.net/zhouzhuan2008/article/details/11053877 目录 MTD总概述 MTD数据结构 MTD相关层实现 MTD,Memory ...

随机推荐

  1. 23+ Useful HTML5 Open Source Online Video Players & Libraries,

    Akamai’s Open Video Player for HTML5 <video> Akamai has released a new Open Video Player for H ...

  2. js数组的管理[增,删,改,查]

    今天在设计表单的时候遇到对数组的一些处理的问题,比如说怎么创建一个数组,然后牵扯到数组的增删改查的方法.请看API FF: Firefox, N: Netscape, IE: Internet Exp ...

  3. spring 学习总结

    前几天,一直在学spring,然后又学习spring mvc ,再回过头去看spring,本来不是特别熟悉,竟然几乎全部忘记了.于是,立刻写这篇博客来总结一下.这是我写的其中一个程序,大概的逻辑流程. ...

  4. Android 高级UI设计笔记22:Android 指示引导页(带圆点)

    1. 引导页: 我们在安装某个软件首次运行时,大部分都会有一个引导页的提示,介绍软件新功能的加入或者使用说明等,支持滑动且下面会有几个圆点,显示共有多少页和当前图片的位置,类似如下效果: 2. 引导页 ...

  5. ArcGIS 投影转换(AE)

    private void btnOK_Click(object sender, EventArgs e) { try { CheckError(); this.checkEdit1.Enabled = ...

  6. USB HID 协议入门

    转载请注明来源:cuixiaolei的技术博客 USB HID设备类的应用场合 USB HID类是USB设备的一个标准设备类,包括的设备非常多.HID类设备定义它属于人机交互操作的设备,用于控制计算机 ...

  7. Unslider--使用手册系列(一)

    Unslider--入门篇 背景:因工作需求,需要完成一个图片轮播效果,因博主不是专业的前端开发人员,so google之,经过挑选最终选择使用Unslider插件完成工作. 一.Unslider插件 ...

  8. JVM 运行时内存结构

      1.JVM内存模型       JVM运行时内存=共享内存区+线程内存区 1).共享内存区       共享内存区=持久带+堆       持久带=方法区+其他       堆=Old Space ...

  9. Javascript函数(定义、传值、重载)

    Javascript 函数的定义的方式有不止一种. 第一种方式: function fn1(){ alert(typeof fn1); alert(“fn1”); } 在调用的时候直接就可以fu1() ...

  10. 51nod B君的圆锥(数学)

    题目链接: B君的圆锥 基准时间限制:1 秒 空间限制:131072 KB  B君要用一个表面积为S的圆锥将白山云包起来.   B君希望包住的白山云体积尽量大,B君想知道体积最大可以是多少.   注意 ...