本节描述了 AM62P 使用的两个引导流程序列。只读存储器 (ROM) 代码是在器件启动时或上电复位 (POR) 后自动运行的第一个代码块。ROM 引导加载程序代码是硬编码到器件中的。由于内部存储器容量有限,这是一段非常小的二进制代码。ROM 引导加载程序启动后,接下来会加载次级程序 加载器,以实现 Linux 特定的引导流程,或者加载次级引导加载程序,以实现基于实时操作系统 (RTOS) 的引导流程。还可以根据所需用例自定义这些引导序列。
- 次级程序 加载程序主要用于初始化外部双倍数据速率 (DDR) 存储器,并为下一阶段的引导加载程序 U-Boot 设置引导过程。U-Boot 运行在 DDR 中,提供更广泛的功能,例如命令行 (CMD) 支持、器件驱动程序架构和 Kconfig 架构。然后,U-Boot 加载内核镜像,以便在 A53 内核上启动高层操作系统 (HLOS),如 Linux。
- 次级引导加载程序 是基于 FreeRTOS 的引导加载程序,负责执行特定于器件的初始化,加载相应的二进制文件以初始化后续内核,并最终启动应用程序。在 AM62P 上,次级引导加载程序 分为两个阶段,分别是阶段 1 和阶段 2。阶段 1 初始化 DDR 并将 SBL 阶段 2 和器件管理器二进制文件加载到 DDR 中。SBL 阶段 2 有两个线程并行运行,一个 SBL 阶段 2 线程执行启动序列,启动硬件安全模块 (HSM) M4 内核、MCU-R5 内核以及在 A53 内核上运行的 Linux;另一个线程加载器件管理器,打开应用程序所需的驱动程序。