arm el2与el3_Linux arm64内核启动

本文介绍了ARM64架构中异常级别EL2与EL3的特性,以及Linux内核启动过程的关键步骤,包括物理内存初始化、设备树安装、内核镜像解压和启动。强调了在启动内核前,boot loader需要进行的内存管理、设备配置等工作,以及在进入内核时的CPU状态、缓存和系统寄存器的设置要求。
摘要由CSDN通过智能技术生成

原创翻译,转载请注明出处。

arm64的异常模型由一组异常级别(EL0-EL3)组成。EL0,EL1有安全模式和非安全模式的区别。EL2是虚拟机管理级别并且只有非安全模式。EL3是最高优先级并且只存在安全模式中。

为了描述方便,下面将使用术语“boot loader”来简化所有执行在cpu将控制权转交给内核之前的软件的称呼。这里包含了安全监视器(secure monitor)和虚拟机管理器(hypervisor)的代码,或者可能是少量用来准备一个最小的启动环境的指令。

基本上,boot loader至少提供以下几个功能:

安装与初始化物理内存

安装设备树

解压内核镜像

启动内核镜像

1、安装与初始化物理内存

boot loader需要初始化物理内存,内核将使用这些内存来存储volatile类型的数据。这个是与机器有关的,可能使用了内部算法自动的定位并取得物理内存的大小,

或者可能是机器有关内存方面的特性,也可能是boot loader设计者知道的获取内存某种方法。(囧)

2、安装设备树

dtb(device tree blob)必须位于8-BYTE对齐的位置并且不能超过2MB的大小。因为dtb会被映射到最大2MB的缓存块上,它不能放在任何映射了特定属性的2M区域内。

注意,在内核4.2以前,要求将DTB放在内核镜像里以text_offset为起始位置的512M区域内。

3、解压内核镜像(这个是可选的)

arm64(aarch64)的内核当前并不提供自解压功能,因此需要解压在boot loader里完成(比如gzip格式)。如果boot loader不支持解压,可以使用不压缩的镜像来启动。

4、启动内核镜像</

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值