ARMv7的内存管理
2013年08月17日 ⁄ 综合 ⁄ 共 782字 ⁄ 字号 小 中 大 ⁄ 评论关闭
ARMv7有三个系列: ARMv7-A, ARMv7-R, ARMv7-M
ARMv7-A: Application profile, 支持ARM和Thumb指令集, 支持MMU(Memory Management Unit)
ARMv7-R: Real-time profile, 支持ARM和Thumb指令集, 支持MPU(Memory Protection Unit), 无MMU
ARMv7-M: Micro-controller profile, 只支持Thumb指令集, 支持MPU, 无MMU
ARM的内存模式较为简单, 程序中的地址直接为逻辑地址, 内存被分成多个不重叠region区域, 拥有各自的访问控制权限. 在没有MMU的架构上, Region地址范围及权限是预先在硬件中定义的, 如
由在存在MMU的架构上, 不同的Region会
MMU是Memory Management Unit的简称, 是一块芯片, 用来管理内存地址的映射问题. MMU并不是必须的, 比如ARM-R, ARM-M架构, MMU存在的目的是为了实现虚拟内存, 即通过交换frame使SW的寻址空间大于物理内存大小. 在没有MMU的系统里, CPU放到地址总线的地址将直接用于寻址, 反之, 该地址会被送到MMU, 由MMU经过转换得到物理地址然后完成寻址. MMU对地址的转换过程对SW是透明的, 但是SW可能需要在系统启动时设置MMU转换的一些参数, 比如frame表格存放地址,
等等.
在不存在
DRAM, Dynamic Random Access Memory, 这是目前大多数IT产品用的内存类型, 一般有SDRAM和DDR. DRAM区别于SRAM之处在于构成SDRAM的电子元件会掉电, 需要系统周期性的充电以维持数据. 大部分系统在DMA芯片上集成了SDRAM充电逻辑电路, 通过时钟芯片连接到DMA芯片, 周期性的完成对SDRAM的充电过程. 这一过程对SW也是完全透明