硬件对内存的管理
armv7v8
ARM是统一编址的,也就是外设和(内存A)进行统一的编址,共同形成了4G物理地址空间(32位为例子)。
内存控制器属于外设,内存属于(内存A).
一个soc内部及外扩的内存都属于(内存A).
存储器架构
哈佛架构
cortex-M cortex-A
MPU MMU 的概念定义及实现定义
MPU:
The memory protection unit (MPU) is used to manage the CPU accesses to memory to prevent one task to accidentally corrupt the memory or resources used by any other active task
MMU:
Complex operating systems typically use a virtual memory system to provide separate, protected address spaces for different processes.
Processes are dynamically allocated memory and other memory mapped system resources under the control of a Memory Management Unit (MMU).
The MMU allows fine-grained control of a memory system through a set of virtual to physical address mappings and associated memory properties held within one or more structures known as Translation Lookaside Buffers (TLBs) within the MMU.
具体芯片
定义了内部内存的大小
定义了内存控制器的IP
定义了是否有MPU,是否有MMU
内存控制器
ARM对(内存A)的管理统一编址,其实是通过内存控制器管理的.
内存控制器控制的内存包括所有的(内存A)
内部内存(sram)
通过内存控制器所属管脚接GPIO外扩的(1-n片)内存芯片(sram,sdram,ddr sdram,ddr2,ddr3,ddr4,ddr5)
内存控制器给每片芯片(内外部ram)分配了不同的地址范围.
初始化及读写内存
初始化
对于外部内存,初始化内存控制器即可.
对于内部内存,无需初始化.(因为在soc生产出来后,内部内存芯片是已知的,所以厂家完全可以硬编码初始化内存控制器)
读写内存
内存控制器给每片芯片(内外部ram)分配了不同的地址范围.
如果要读写每片内存的话,例如该内存芯片中有个地址为0x08000000,要写为0x12345678,并将其打印出来,用C语言表示为:
写 : *(volatile unsigned int *)(0x08000000)=0x12345678;
读 : printf("%dn",*(volatile unsigned int *)(0x08000000));
内存安全控制
MPU与MMU
MPU :
将内存分块,给不同的访问权限.
对代码分块,给不同的访问权限.
当代码对内存访问时,比较权限关系,从而判定权限是否越界.
MMU :
在MPU基础上,增加虚拟地址与物理地址的转换
软件对内存的管理
硬件对多个内存块编码了不同的地址范围.
软件该怎么管理这些地址范围呢?(管理不包括初始化)
根据软件的发展,有不同的管理方式,针对以下分类
MPU-MMU-no
以cortex-M的STM32F407ZGT6(不使能MPU) 为例
MPU-with
以cortex-M的STM32F407ZGT6 为例
MMU-With
s3c2440 和 I.MX6ULL 在这方面一致,以 I.MX6ULL 为例
其他
----------------------统一编址
ARM是统一编址的,也就是外设和内存进行统一的编址,共同形成了4G物理地址空间(32位为例子)。
----------------------独立编址
独立编址是说,内存和外设分别编址,同样一个32根地址线的处理器,内存可用的地址空间为4G,外设可用的地址空间也为4G.
同样的地址怎么区分是访问内存还是外设呢,独立编址里采用了不同的地址总线来区分是访问内存还是访问外设,也就是说,独立编址就是内存一根总线,外设一根总线,他们互不干涉,通过指令来加以区分,目前主流电脑上一般都采用独立编址。
上一篇:嵌入式linux开发 (二十三) 内存管理(5) s3c2440内存管理
下一篇:嵌入式linux开发 (十三) FLASH(3) s3c2440外扩NAND FLASH
推荐阅读最新更新时间:2024-11-17 17:12
设计资源 培训 开发板 精华推荐
- 具有 6V 栅极驱动器的 LTC3892HUH-2 高效率、双路 3.3V/8.5V 输出同步降压转换器的典型应用电路
- 2.8寸HDMI显示器兼STC32开发板
- LMV821SQ3T2G 单路低电压、带迟滞比较器的典型应用电路
- #第七届立创电赛#基于N32G455示波器
- ADP2380-EVALZ,ADP2380 评估板,20V,4A,同步降压稳压器,低侧驱动器
- EVAL-ADUM3221AEBZ,iCoupler ADuM3221EBZ 评估板,4A 输出隔离栅极驱动器
- 86 彩色温控盒子
- STM32F030F4 小巧开发板
- AM3GW-4815SZ 15V 3 瓦 DC-DC 转换器的典型应用
- TEA1731DB0001: TEA1731 40 W 19.5 V Notebook adapter
- 2024年Automechanika Shanghai海量同期活动刷新历届记录,汇聚行业智慧,共谋未来发展
- 企业文化分享 如何培养稀缺的硅IP专业人员?SmartDV开启的个人成长与团队协作之旅
- 恩智浦发布首个超宽带无线电池管理系统解决方案
- 北交大本科生探秘泰克先进半导体开放实验室,亲历前沿高科技魅力
- 新帅上任:杜德森博士(Dr. Torsten Derr)将于2025年1月1日出任肖特集团首席执行官
- 边缘 AI 如何提升日常体验
- 苹果要首发!台积电宣布2nm已准备就绪
- AMD有望用上全新芯片堆叠技术:延迟大幅减少、性能显著提升
- 宁德时代发布10月战报
- 2024年10月电池行业:增长势头不减!