0. 前言
本文以Exynos4412芯片为例,简要介绍了uboot的相关概念,并择重分析了BL2阶段的软件流程。
1. uboot简介
uboot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。
它的作用是进行系统引导(相当于BIOS)。它的目标包含以下两个方面:
- 支持多种嵌入式操作系统。如:Linux、NetBSD、VxWorks等。
- 支持多种嵌入式芯片架构。如:PowerPC、MIPS、x86、ARM等。
2. uboot硬件抽象
从uboot的设计目标中,我们可以得知uboot是一个跨平台、跨设备的引导程序,因此其对于硬件设备的抽象和封装就显得相当的重要。那么uboot是如何能以简介、高效的方式移植于不同的平台呢?它的解决方案是“board->machine->arch->cpu”框架。
- ARCH:以指令集架构作为区分标准,对应于不同的CPU系列。
- CPU:对应于IP Core的概念。
- Machine:对应于SOC。指一些专业应用的场景,芯片厂商会在芯片上集成DSP、RAM、FLASH等外部器件,这些集成了其它功能的芯片被称为SOC。
- Board: 对应于需要移植的单板。
3. BL2介绍
BL2是执行在iRAM中的代码,负责初始化CPU Core,系统时钟和D