Linux Support for ARM LPAE 分析

arm el2与el3_ARM体系的EL演化史 最近在研究ARM体系结构。目前而言,最新的体系规范为第八版,即armv8。armv8中,最吸引人的特性就是引入了64位支持,包括相关指令的扩充和支持、新的地址转换模式的引入等。在这里,我着重关注vmsa,即virtual memory space architecture部分。vmsav8中,最大可支持的物理内存宽度达到了49位。事实上,在armv7时代,如果开启了lpae,即large-phys... 阅读详情

介绍

 

        早期的ARM系统仅需要MB级别的RAM,但是,随着设备的升级,现在更多复杂的智能手机设备 需要 百M甚至GB级别的RAM,而32bit的物理地址空间就显得捉襟见肘了。

更让人紧张的是,这些地址空间不仅仅是RAM占用了,还有 外设、FLASH存储器以及系统ROM也占用了部分地址空间。

         新兴起的 移动虚拟化 需要更多是RAM,当然在 Guest OS级别一般来说是不需要这么多的。 ARM LPAE 对Linux系统的开发提供了这方面的支持。第一个linux上对LPAE的支持是是在 2010年十月份,发布在LKML(https://lkml.org/)上的。LKML全称是 Linux Kernel Mailing List ,中文 linux 内核邮件列表。它是专门维护linux 内核的一个组织。

 

经典ARM MMU 与支持LPAE的比较

 

经典的ARM MMU特性如下:

        32bit的物理地址空间。

        2级页表转换。

                   1.  通过TTBR0标示的 用户空间的映射; 以及TTBR1 标示的内核空间的映射。但是对于 内核空间和user空间的内存是严格限制的。

                   2. 32bit 的页表项( table entres: 页表项,或者说 页表条目)。

        1级页表八婆韩4096个页表项(4 pages for PGD)。

                  1.  每个页表项可以映射为 1MB的段(section)。

                  2.  每个页表项可以指向 二级页表。

                  3.  实现已定义的 16MB supersections。

       二级页表包含256个条目,每个条目指向4KB的页。  每个二级页表1KB 。

 

 

 

传统的ARM MMU 的限制

 

           

 

 

 

 

 

ARM PLAE的特性:

# 40bit的物理地址(1TB)
# 40bit的中间物理地址(1TB)空间(Guest 物理地址空间)
# 三级页表转换
    1. TTBR0寄存器用作用户空间的映射,TTBR1用作kernel空间的映射。
        具备1GB的内核空间映射,不适用一级页表。
    2. 每个级别有64bit的页表项
# 一级页表包含4个页表项(stage1 转换)
    1GB的段 或者 指向二级页表。
    
# 二级页表包含512个条目(所有的条目总共占4KB的存储空间)
    1. 2MB的段, 或者指向三级页表。

# 三级页表包含512个条目。
    1. 每个条目映射4KB范围的地址。
    2. 可以为连续的页表 设置 contiguity flag(一系列连续的flag) 。

# LDRD/STRD (64bit 的load/store) 指令是ARM处理器用于支持LPAE的原子性指令。即指令执行过程中是不可能中断的。

# 仅仅支持简单的页表权限模型。
    1. 没有内核读写 和 用户控件只读 的权限组合.
    
# Domains (域)已经不复存在。(他们在ARMv7部分的linux里已经被移除了)

# 另外有额外的bit位提供给OS使用.

# 专用的bit位提供给 用户控件, 比如 只读 和访问标志设置.

# ASID 是TTBR0寄存器的一部分.
    1. 简单的上下文切换代码. 不需要去处理预测的TLB, 去获取错误的ASID.
    2. Context ID寄存器可以被专门用来调试或者trace.

# 另外的权限控制
    1. PXN - privilege execute never (非特权执行)
    2. SCTLR.WXN, SCTLR.UWXN - 防止从可以写的地址空间执行(仅用于用户空间的访问)。
    3. APTable - 在子页表级别里用来限制权限
    4. XNTable ,PXNTable - 在子页表级别 复写掉XN 和PXN bit位

# 用于内存区域属性的新寄存器.
    1. MAIR0, MAIR1 - 32bit的内存属性的间接寄存器. 
    2. 可以同时配置8种内存类型.


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

微笑

 

 

 原文链接:http://blog.youkuaiyun.com/duanlove/article/details/16986133

NXP Layerscape平台Linux内核定制与eDMA/CAAM DMA驱动开发实战 在嵌入式Linux开发中,内核定制与驱动开发是连接硬件与操作系统的核心技术。其原理在于通过配置系统(如Kbuild)和设备树(Device Tree)描述,将特定硬件功能编译进内核或模块。这项技术的核心价值在于能够针对特定硬件平台(如NXP Layerscape系列ARM处理器)进行深度优化,实现性能提升、功耗降低与功能裁剪。在应用场景上,它广泛用于工业控制、网络设备、汽车电子等领域,需要高效处理外设数据搬运与硬件加密加速。本文聚焦于**eDMA(增强型直接内存访问)** 与**CAAM DMA(加密加速模 阅读详情

相关推荐

NXP Layerscape平台Linux内核配置与eDMA驱动开发实战指南

在嵌入式Linux开发中,内核配置与设备驱动是连接硬件与操作系统的核心环节。其原理在于通过内核配置系统(Kconfig)和构建系统(Kbuild)定制系统功能,并利用设备树(Device Tree)机制动态描述硬件拓扑。这项技术的价值在于实现了硬件资源的统一抽象与管理,显著提升了系统的可移植性与可维护性。其应用场景广泛覆盖从工业控制到网络通信的各类嵌入式设备。本文聚焦于NXP Layerscape平台,深入剖析其内核源码管理、交叉编译环境搭建,并以eDMA(增强型直接内存访问)驱动为例,详解从设备树绑定到功

ozzzzzz的专栏 328

NXP Layerscape嵌入式Linux内核配置、构建与eDMA/eSDHC驱动开发实战指南

在嵌入式Linux开发中,内核配置与设备驱动是连接硬件与操作系统的核心。其原理在于通过内核配置系统(Kbuild)和交叉编译工具链,将针对特定处理器架构(如Arm)的源代码,定制化编译为可在目标硬件上运行的系统镜像。这项技术的价值在于能够充分发挥硬件性能、集成关键外设驱动,并确保系统的长期稳定与可维护性。其应用场景广泛覆盖了网关、交换机、工业控制等嵌入式设备开发。本文聚焦于NXP Layerscape系列处理器平台,深入解析如何基于官方SDK进行内核的精细化配置与构建,并以eDMA(增强型直接内存访问)和e

cr147369的博客 401

i.MX6ULL移植OpenWrt实战:eMMC启动、设备树修补与内核裁剪

嵌入式Linux系统移植是将通用发行版适配到特定SoC的关键工程实践。其核心在于Bootloader引导链、设备树(DTS)硬件描述、内核驱动支持与根文件系统构建的深度协同。对于ARM Cortex-A7架构的i.MX6ULL平台,OpenWrt移植并非简单固件烧写,而需解决U-Boot eMMC启动参数兼容性、Linux内核对imx6ull.dtsi设备树支持不完整、overlayfs在小容量eMMC上空间不足等典型问题。技术价值体现在可远程运维、按需扩展服务(如AdGuard Home、WireGuar

weixin_30596343的博客 441

大物理地址扩展 (LPAE)

大物理地址扩展为每种软件环境都提供了在处理大量数据时高效利用可用物理内存的方法。

jklinqing007的专栏 1万+

Linux Support For ARM LPAE

Linux Support For ARM LPAE

《AI Agent混沌测试》

在智能体时代,混沌测试正从基础设施的「物理破坏」升级为认知系统的「思维迷宫」,这是一场测试范式的深度进化。将当前时间设为2030年,使"2023年GDP数据"显示为最新。"查看北京\x0d\xa天气" → 解析为两个独立语句。将"高风险投资"权重从0.2改为0.8。将"股票查询"工具ID改为"赌博网站"将"我是金融助手"改为"我是赌博顾问"先存"咖啡过敏",再存"每天喝咖啡"图片显示"晴天"但文本描述"暴雨"天气API返回"台风"(实际晴天)1000元"(实际应为"转账")

fengruxue的专栏 1343

Linux Support for ARM LPAE - eLinux.org

Linux Support for ARM LPAE - pdf文档下载地址:                http://elinux.org/images/6/6a/Elce11_marinas.pdf     Linux Support for ARM LPAE - eLinux.org elinux.org/images/6/6a/Elce11_marina

duanlove(技术路途)专栏 1692

408——计算机组成原理(持续更新)

小数点前的0代表正数,1代表负数。

qq_55202378的博客 1722

Linux Support for ARM LPAE

介绍         早期的ARM系统仅需要MB级别的RAM,但是,随着设备的升级,现在更多复杂的智能手机设备 需要 百M甚至GB级别的RAM,而32bit的物理地址空间就显得捉襟见肘了。 更让人紧张的是,这些地址空间不仅仅是RAM占用了,还有 外设、FLASH存储器以及系统ROM也占用了部分地址空间。          新兴起的 移动虚拟化 需要更多是RAM,当然在 Guest

zwj0403的专栏 1898

基于Simulink的防空导弹六自由度弹道建模与仿真实战

本文详细介绍了基于Simulink的防空导弹六自由度弹道建模与仿真方法。通过分析导弹动力学原理、Simulink环境配置、气动力建模、推进与控制系统设计等关键环节,提供了一套完整的实战指南。文章特别强调了六自由度模型在防空导弹仿真中的重要性,并分享了常见问题排查与优化建议,为相关领域工程师提供实用参考。

apple5的专栏 868

使用moveit控制机械臂

位置设置:`target_pose.position.x = 0.12`, `target_pose.position.y = 0.41`, 和 `target_pose.position.z = 0.44` 分别设置了机械臂末端执行器的X, Y, 和 Z坐标。设定目标位置:`group.set_pose_target(target_pose)` 这一命令将之前定义的目标位置和姿态设置为当前机械臂组的目标,为接下来的路径规划做准备。在机械臂控制的过程中,设定精确的目标位置和姿态是实现精确操作的关键步骤。

realman_Rop的博客 3688

NXP Layerscape Linux内核构建与驱动开发实战指南

Linux内核是嵌入式系统的核心,它管理硬件资源并提供系统服务。其工作原理是通过可加载模块和设备树(Device Tree)来支持多样化的硬件平台。掌握内核配置与构建技术,对于优化系统性能、裁剪功能以及开发硬件驱动至关重要,能显著提升嵌入式产品的稳定性和效率。在基于Arm架构的嵌入式开发中,特别是使用NXP Layerscape系列处理器时,开发者常需面对内核源码管理、交叉编译以及关键驱动(如eDMA和CAAM DMA)的集成与调试。本文以NXP Layerscape Linux Distribution

cri5768的博客 410

win11 使用 QEMU 配置龙芯 3A5000 虚拟环境

win11 使用 QEMU 配置龙芯 3A5000 虚拟环境

一朵花开的时间 6155

LK概览

从Makefile开始 1)bootable/bootloader/lk根目录下有makefile和AndroidBoot.mk 2)bootable/bootloader/lk的各个子目录下有rules.mk文件,还有arch/arm/compile.mk和target一些tools子目录中的makefile等 3)先从rules.mk的输入输出开始研究 输入:可以用GET_LOCAL_

makeyourprogress的博客 936

CANoe如何实现TLS协议

TLS,Transport Layer Security,传输层安全协议。是在传输层和应用层之间,为了保证应用层数据能够安全可靠地通过传输层传输且不会泄露的安全防护。

jasonj333 1161

[Dify实战] 解决 Dify 导入 DSL 文件时报 “DSL 版本差异” 的兼容性问题

摘要:本文针对Dify开发者在导入.dsl文件时遇到的版本警告提示问题,分析其根源在于DSL文件与当前系统版本不一致。解决方案是通过导出当前Dify应用的DSL文件查看版本号,手动修改待导入文件的version字段以匹配。文章详细说明了操作步骤,并给出使用专业编辑器、避免修改其他字段等实用建议,帮助开发者规避版本不兼容问题,提升多模态AI应用开发效率。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 961

ARM 虚拟化简介

arm 虚拟化

只有自己觉到悟到的,才是自己的。 3934

华为OD机试双机位C卷:采购订单 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 采购订单,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,并提供在线OJ模拟做题。华为OD机试真题【采购订单】

qq_45776114的博客 3534

深入理解Linux内核页表映射分页机制原理

之前分析了ARMv7硬件分页机制,4KB页表大小进行分页时,采用二级页表结构,第一级有4096个表项,第二级有256个表项。二级页表中的属性没有“dirty”位。而Linux有一个三层的页表结构,可以很容易地将其包装成适合两层的页表结构—只使用PGD和PTE。但是,Linux还要求每个页面有一个“PTE”表,而且至少要有一个“dirty”位。对于“dirty”位我们前面也讲到了,“dirty”位在写操作时被置位,表示页面被写过,页面交换时会使用该标记。

嵌入式Linux内核的博客 1453

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

LPAE

arch/arm/include/asm/pgtable-3level.h /* * With LPAE, there are 3 levels of page tables. Each level has 512 entries of * 8 bytes each, occupying a 4K page. The first ...

hbcbgcx的博客 1175

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ARM64物理地址扩展(LPAE)技术细节剖析

本文深入探讨ARM64架构中的大型物理地址扩展(LPAE)技术,涵盖其页表结构、MMU机制、TLB优化、多核一致性及安全增强等核心内容,揭示LPAE在现代高性能计算与服务器系统中的关键作用。

u0v1w2x3的博客 1018

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

iPhone 5s 配备的 A7 处理器是 64 位,意味着什么?

现有的Cortex A7和Cortex A15都支持LPAE(Large Phisical Address Extensions),也就是拥有40位的寻址空间,可以访问最高1TB的物理内存。注意32位CPU拥有超出32位的寻址空间并不奇怪,32位的x86 CPU(以及后来的x64 CPU在运行于32位模式下时)也拥有类似的PAE,可以访问超出4GB的物理内存。 虽然如此,但这种访问模式只

LVXIANGAN的专栏 1661

ARMv8 與 Linux的新手筆記

ARMv8 與 Linux的新手筆記 ARMv8 與 Linux的新手筆記 by loda hlchou@gmail.com 從iPhone 5S採用ARMv8處理器架構後,對於ARMv8 64bits的相關討論很多,也受到大家關注,Google也如預期在2014年底前推出了Android Lollipop (也就是Android 5.0) 操作環境.(官方網站http://www

u011279649的专栏 4071
上一篇: 内核签名机制
下一篇: LK的大体过程
makeyourprogress
博客等级 码龄11年 26粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值