存储器映射讲解.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
_____ 存储器映射 存储系统功能概览 CM3 的存储器系统与从传统 ARM 架构的相比,已经有过脱胎换骨般的改革了: 第一, 它的 存储器映射是预定义 的,并且还规定好了哪个位置使用哪条总线。 第二, CM3 的存储器系统支持所谓的 “位带”( bit-band )操作 。通过它,实现了 对单一比特的原子操作。位带操作仅适用于一些特殊的存储器区域中,见本章论述。 第三, CM3 的存储器 系统支持非对齐访问和互斥访问 。这两个特性是直到了 v7M 时 才出来的。 最后, CM3 的存储器系统 支持 both 小端配置和大端配置 。 3.5.1 存储器映射简介 Cortex-M3 支持 4GB 存储空间,分成了 6 块:代码、 SRAM 、外设、外部 RAM 、 外部设备、系统级。 系统级 外部设备 外部 RAM 外设 SRAM 代码 0xFFFFFFFF 0xE0000000 0xDFFFFFFF 0xA0000000 0x9FFFFFFF 0 0x5FFFFFFF 0 0x3FFFFFFF 0 0x1FFFFFFF 0 内核私有内容 外部设备 外部 RAM 片上外设 片上 SRAM 代码 -- 闪存地址重载及断点单元 (FPB) -- 数据观察点单元 (DWT) -- 仪器化跟踪宏单元 (ITM) -- 嵌入式跟踪宏单元 (ETM) -- 跟踪端口接口单元 (TPIU) --ROM 表 3.5.2 存储器映射空间 内部 SRAM 区的大小是 512MB ,用于让芯片制造商连接片上的 SRAM ,这个区通过 系统总线来访问。在这个区的下部,有一个 1MB 的区间,被称为“位带区” . 地址空间的另一个 512MB 范围由片上外设(的寄存器)使用。这个区中也有一条 32MB 的位带别名,以便于快捷地访问外设寄存器,外设区内不允许执行指令。 还有两个 1GB 的范围,分别用于连接外部 RAM 和外部设备,它们之中没有位带。两 者的区别在于外部 RAM 区允许执行指令,而外部设备区则不允许。 最后还剩下 0.5GB 的隐秘地带, CM3 内核的闺房就在这里面,包括了系统级组件, 内部私有外设总线,外部私有外设总线,以及由提供者定义的系统外设。 私有外设总线有两条: --- AHB 私有外设总线,只用于 CM3 内部的 AHB 外设,它们是: NVIC, FPB, DWT 和 ITM 。 ---APB 私有外设总线,既用于 CM3 内部的 APB 设备,也用于外部设备(这里的 “外部”是对内核而言)。 CM3 允许器件制造商再添加一些片上 APB 外设到 APB 私 有总线上,它们通过 APB 接口来访问。 NVIC 所处的区域叫做“系统控制空间( SCS )”,在 SCS 里的除了 NVIC 外, 还有 SysTick 、 MPU 以及代码调试控制所用的寄存器 系统控制空间 (SCS) 最后, 未用的提供商指定区也通过系统总线来访问 ,但是不允许在其中执行指令。 CM3 中的 MPU 是选配的,由芯片制造商决定是否配上。 上述的存储器映射只是个 粗线条的模板 ,半导体厂家会提供更展开的图示,来表明芯 片中片上外设的具体分布, RAM 与 ROM 的容量和位置信息。 3.5.3 位绑定操作 在片上 SRAM 区和片上外设区的下部,各有一个 1MB 的区间,被称为 “ 位带区 ”。 该位带区还有一个对应的、 32MB 的 “位带别名 (alias) 区 ”,容纳了 8M 个“位变量” (对比 8051 的只有 128 个位变量)。 位带区对应的是最低的 1MB 地址范围,而位带别名区里面的每个字对应 位带区的 一个比特 。 位带操作只适用于数据访问,不适用于取指。通过位带的功能,可以把 多个布尔型数据打包在单一的字中,却依然可以从位带别名区中,像访 问普通内存一样地使用它们。 位带别名区中的 访问操作是原子的 ,消灭了传统的“读-改-写”三步 曲。 位带区对应的是最低的 1MB 字节( 8M 位)地址范围,而位带别名区里面的 每 个 字 对应位带区的一个 比特 。 位带区与位带别名区的膨胀对应关系图 举例:欲设置地址 0x2000_0000 中的比特 2 ,则使用位带操作的设置过程如下图所示: 对应的汇编代码 位带读操作相对简单些: 位带操作的概念其实

文档评论(0)

wangsux + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档