嵌入式系统启动与设备树详解
1. 从引导加载程序到内核
当引导加载程序将控制权传递给内核时,它需要传递一些基本信息,具体如下:
- 机器编号:在不支持设备树的PowerPC和Arm平台上用于识别SoC类型。
- 已检测到的硬件基本细节:至少包括物理RAM的大小和位置以及CPU的时钟速度。
- 内核命令行:一个普通的ASCII字符串,用于控制Linux的行为,例如指定包含根文件系统的设备名称。
- 可选信息:设备树二进制文件的位置和大小、初始RAM磁盘(initramfs)的位置和大小。
信息传递方式因架构而异,且近年来有所变化。过去,PowerPC引导加载程序传递指向板信息结构的指针,Arm则传递指向A标签列表的指针。但传递的信息有限,大部分需在运行时发现或硬编码到内核作为平台数据。随着设备树的出现,情况得到了改善。自2013年2月Linux 3.8发布以来,Arm系统逐渐采用设备树来收集硬件平台信息,使单个内核二进制文件能在多种平台上运行。
2. 设备树简介
如果使用Arm或PowerPC SoC,很可能会遇到设备树。设备树是一种灵活定义计算机系统硬件组件的方式,它只是静态数据,而非可执行代码。通常由引导加载程序加载并传递给内核,也可与内核镜像捆绑。其格式源自Sun Microsystems的OpenBoot引导加载程序,遵循IEEE 1275 - 1994标准。如今,它被广泛应用于Arm Linux实现,在MIPS、MicroBlaze、ARC等架构中也有一定应用。
3. 设备树基础
Linux内核的 arch/$ARCH/boot/dts
超级会员免费看
订阅专栏 解锁全文
957

被折叠的 条评论
为什么被折叠?



