ARMv8 boot

  • boot
为什么可以是 无 EL3 ?
	因为 EL2和EL3 是选配的
UEFI 被认为是在 trust world 之内的代码吗?
	UEFI 不是 trust world 之内的代码

安全支持 无UEFI  的boot
	bl1.bin(FSBL) -> ATF(bl2.bin bl31.bin bl32.bin) -> bl33.bin(u-boot) ->  LinuxImage
	// FSBL 是soc厂商做进入的
	// ATF 一般是 用户可编辑的第一个代码,一般存放于 非易失性存储器,具体要看soc的boot flow
	// ATF 代码 在 https://github.com/ARM-software/arm-trusted-firmware
	// U-boot 可以被 UEFI 替代
	
	// bl1.bin bl2.bin bl33.bin 最终在系统运行时都不存在了
	// 存在的只有 BL31.bin(ATF) BL32.bin(TrustOS) LinuxImage(NoTrustOS)
安全支持  UEFI  下的boot
	bl1.bin(FSBL) -> ATF(bl2.bin bl31.bin bl32.bin) -> bl33.bin(UEFI) ->  LinuxImage


无安全支持 无UEFI  boot
	bootrom(FSBL) -> u-boot/grub ->  LinuxImage
非安全支持  UEFI 下的boot
	bootrom(UEFI) -> u-boot/grub  -> LinuxImage
	或
	bootrom(UEFI) -> LinuxImage

UEFI
	统一可扩展固件接口 (UEFI) 是一种规范,它定义了操作系统和平台固件之间的软件接口。
	UEFI 主要用于定义用于在平台上启动操作系统的固件服务,但确实添加了一些运行时服务。
	该规范由UEFI 论坛发布,Arm 是该论坛的董事会成员。

ARM64与UEFI
	https://blog.csdn.net/zdy0_2004/article/details/49516817
	http://blog.sina.com.cn/s/blog_98a4dde701019mmq.html
	https://tech.hqew.com/news_1562750
	https://community.arm.com/support-forums/f/embedded-forum/7016/uefi-on-arm-v8-based-linux-embedded-system
	ARM v8选用UEFI作为官方bootloader
		UEFI 2.4 Specification release includes ARMv8-A AArch64 (64-bit ISA) support
			我看不出UEFI有什么优势让ARM选择它作为官方loader
			可能ARM跟UEFI组织有什么利益分成吧
			毕竟uboot不属于ARM控制,而UEFI让ARM加入了。
		在X64上,UEFI加载grub2
		在ARM64上,UEFI取代U-boot?
		// 为什么要将UEFI 和 U-boot 比较?
		// 我认为 U-boot 和grub 才是同一层级的东西 .BIOS 和 UEFI 是同一层级的东西
		// 是这样没错,但是UEFI有发展成 直接 load kernel 的趋势,那么 grub 和 u-boot 都没有用武之地了
		// 因为 bootrom(arm)或者bios(x64) 是 UEFI的话,那么会直接load kernel ,就没有 uboot和grub什么事了
		// 当然UEFI也支持 加载 uboot 和 grub ,从而由 uboot/grub 来 load kernel
8083414|UEFI编程实践 罗冰
	https://zhuanlan.zhihu.com/p/405897922
UEFI 与 BIOS 区别
	https://www.zhihu.com/question/21672895
EFI Image
	https://en.wikipedia.org/wiki/EFI_system_partition

uefi启动linux内核有两条路径:
  1. uefi直接进入uefi shell来启动linux内核
  2. uefi直接进入uefi shell启动grub启动器,然后进入grub shell启动linux内核

  • QEMU 平台对ARMv8 boot的支持
		QEMU supports two types of guest image boot for virt, and the way for the guest code to locate the dtb binary differs:
			1.For guests using the Linux kernel boot protocol (this means any non-ELF file passed to the QEMU -kernel option) 
				the address of the DTB is passed in a register (r2 for 32-bit guests, or x0 for 64-bit guests)
			2.For guests booting as “bare-metal” (any other kind of boot)
				the DTB is at the start of RAM (0x4000_0000) // 类似 u-boot.bin 或者 UEFI.bin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值