嵌入式linux开发 (十八) 内存管理(2) ARM内存管理

发布者:Yuexiang666最新更新时间:2022-08-08 来源: csdn关键字:嵌入式linux  内存管理  ARM 手机看文章 扫描二维码
随时随地手机看文章

硬件对内存的管理

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  内存管理  ARM 引用地址:嵌入式linux开发 (十八) 内存管理(2) ARM内存管理

上一篇:嵌入式linux开发 (二十三) 内存管理(5) s3c2440内存管理
下一篇:嵌入式linux开发 (十三) FLASH(3) s3c2440外扩NAND FLASH

推荐阅读最新更新时间:2024-11-17 17:12

基于ARM和μC/OS-II的车载定位终端的设计
  为了达到节省能源、降低排放的目标,电子控制技术在货车、工程车以及农用车的柴油机上得到快速发展和应用。随着机车电控化技术发展,车载定位终端的数据采集交互速度以及运行的稳定性已成为衡量该设备的一个重要指标。为进一步提升车载定位终端的实时性和稳定性,文中设计了一种基于ARM处理器和 C/OS II操作系统的车载定位终端。应用ARM处理器实现数据交互的高速性,应用 C/OS II操作系统解决程序运行的稳定性问题。   1 、车载终端整体结构及功能介绍   车载定位终端主要由CPU(包括S3C44BOX芯片,2MbyteNorFlash和8MByteSDRAM),GPS卫星数据接收电路,GPRS无线数据上传电路和CAN控制器及数据收发模
[单片机]
基于<font color='red'>ARM</font>和μC/OS-II的车载定位终端的设计
基于ARM与WinCE的演示系统软件设计
引言   演示系统从最初的纯光学幻灯机开始,已经有了数十年的历史。发展至今,凭借与PC的整合优势,数字投影技术已经成为主流。传统意义上的数字演示系统由PC和投影设备组成,实现控制器、信号源和光学投影3部分功能。在演示过程中,由演示者直接操作PC,并由PC将待显示信号输出到投影设备。PC作为控制器和信号源,处于核心地位。在这一结构中,以PC作为信号源有利于发挥其较强的处理能力,能够带来比较好的演示效果;同时,作为控制器,PC可以利用其丰富的人机交互能力提供便捷的操作。但另一方面,以PC为核心的演示系统也存在以下局限性: ① 对PC的依赖性。演示系统必须配备1台PC,作为操作和提供演示信号之用,为演示带来不便。
[单片机]
用IAR EWARM开发嵌入式系统时目标代码的链接与定位
1 数据段和代码段的作用 IAR C/C-+编译器是一种具有世界先进水平的标准C/C-+编译器,支持符合ANSI C标准的C或C++编程语言。源程序经编译后生成包含数据或代码存储器逻辑映像的数据段和代码段。每个段都有一个段名和一个表示其存储器空间的段类型。段类型CODE表示ROM中的执行代码,段类型CONST表示ROM中的数据,段类型DATA表示RAM中的数据。段名可与段类型相同,但其意义不一样,实际使用时不能混淆。表l所列为IAR C/C++编译器所使用的各种段、段类型及其读/写属性说明。 1.1 数据段 数据位于DATA段中,包括静态(static)存储器、堆栈(stack)、堆(heap)以及已定位的数据。DATA段可
[单片机]
用IAR EWARM开发嵌入式系统时目标代码的链接与定位
基于ARM9的一种新型馈线自动化终端设计
引言 随着智能电网研究的兴起和城乡电网结构的不断改进,对配电网自动化提出了更高的要求。具有选择性、能快速切除故障、具备故障自愈能力的馈线终端(Feeder Terminal Unit,FTU)成为研究热点。参考文献中基于数字处理器DSP,参考文献中应用ARM与DSP分别开发设计了馈线自动化终端装置。 上述参考文献采用不同的处理器,使用不同的技术,设计了配电网馈线终端,但所设计装置存在着成本高、配置灵活性低和安装布线困难等问题。ARM微处理器具有较强的处理能力,运算速度快、性能高、功耗低、成本低、体积小,是馈线终端核心控制器件的首选。物联网技术是新一代信息技术的重要部分,具有广阔的应用前景,可以实现馈线终端数据无线通信。新型能源太阳
[单片机]
基于<font color='red'>ARM</font>9的一种新型馈线自动化终端设计
基于ARM的嵌入式USB图像采集与显示
   引言   目前市场上大部分的图像采集与处理系统是基于DSP 芯片的,这种图像采集与处理系统成本高、功耗高、体积约束等特点并不适用于一些简单的应用。随着USB 摄像头的普及和基于ARM 的嵌入式芯片的快速发展,将二者结合的便携性越来越受人们欢迎。本文介绍了一种基于三星S3C2440A 芯片的嵌入式USB 摄像头图像采集与显示方案,该方案具有良好的可移植性和扩展性,并且成本、大小和实时处理都能够满足市场需求。   1 系统架构   系统通过当前市场上应用最广泛的中芯微公司生产的zc301p 芯片的USB 摄像头进行图像采集,然后将图像信息传送到ARM 芯片中进行处理,最终通过基于Qt/Embedded 编写的图形显示程序在
[单片机]
基于<font color='red'>ARM</font>的嵌入式USB图像采集与显示
ARMGNU伪指令
符号定义伪指令 .global,.local,.set,.equ .global 使得符号对连接器可见,变为对整个工程可用的全局变量 .global symbol .local 表示符号对外部不可见,只对本文件可见 .local symbol .set 给一个全局变量或局部变量赋值,和.equ的功能一样 .set symbol expr .set start, 0x40 .set start, 0x50 mov r1, #start ;r1里面是0x50 .equ 和.set一样,只是格式不同 symbol .equ expr start .equ, 0x40 start .equ, 0x50 mov r1
[单片机]
基于ARM9程序状态寄存器CPSR
定义:程序状态寄存器; 功能:反映数据运算状态,控制系统模式等; 特点:程序状态寄存器不属于通用寄存器; 关于CPSR的访问,ARM专门为其设立了两条指令: MRS:CPSR到通用寄存器传递数据指令; MSR:通用寄存器到CPRS传递数据指令; (1)MSR 通用寄存器→CPSR 格式:MSR{条件} CPSR | SPSR_field,寄存器Rm或立即数 功能:恢复或改变CPSR的值。 CPRS | SPRS:尖括号内只能是CPRS或SPRS指令,这取决于当前处理器工作模式; field域:用于设置CPSR中需要操作的位;(下面详细介绍) CPSR位域: field域的表示: 为条件标志位域,用 f 表示 为状态位域,用
[单片机]
基于<font color='red'>ARM</font>9程序状态寄存器CPSR
ARM指令中的内存访问指令的总结
内存访问指令 LDR,STR,LDM,STM LDR:表示从内存中读取数据到寄存器当中,如ldr r0, ;表示从r2指向的内存单元读取数据保存到r0当中 STR:表示把寄存器当中的数据保存到内存单元当中,如str r1, ;表示把r1中的值保存到地址为r2指向的内存单元当中 LDM/STM是指内存访问指令,用一条指令就可以读取多个数据,格式如下 LDM{cond} address_mode rn {!} register_list {^} STM{cond} address_mode rn {!} register_list {^} 其中cond代表条件码 1. ia (increment after):事后递增
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved