本文旨在展示如何利用 U-Boot Falcon 模式缩短 i.MX 8QXP 的启动时间。通用技术方案详见 AN14093 应用笔记。本文测试基于 LF-6.6.23-2.0.0 BSP 版本。
1. 按照《i.MX Yocto 项目用户指南》搭建 Yocto 编译环境。假设 BSP 位于 ~/imx-yocto-bsp 目录,构建目录为 ~/imx-yocto-bsp/build。
2. 将附件压缩包解压至 ~/imx-yocto-bsp/sources 目录,将自动创建 ~/imx-yocto-bsp/sources/meta-imx-fastboot 子目录。
3. 通过以下命令添加 meta-imx-fastboot 层到构建系统:
bitbake-layers add-layer ~/imx-yocto-bsp/sources/meta-imx-fastboot
4. 若此前已在相同目录树构建过镜像,请使用以下命令清理 u-boot-imx 和 imx-boot 软件包:
bitbake -c clean u-boot-imx imx-boot
5. 构建新镜像。本软件包默认配置为 core-image-minimal。下文将演示如何适配其他镜像类型:
bitbake core-image-minimal
6. 使用您偏好的方法将生成的映像写入 eMMC/SD 并启动电路板。
7. 默认情况下,电路板将正常启动。要启用快速启动,请在 U-Boot 中停止电路板,然后运行以下命令:
u-boot => run prepare_fdt
8. 重启开发板此后开发板将进入快速启动模式。内核和 systemd 在启动过程中输出的信息将大幅减少。您可以通过移除内核中不必要的功能和禁用 systemd 启动的非必要服务,进一步优化启动时间。具体优化方法请参阅AN14093。
9. 如需重新进入 U-Boot 模式,在开发板通电启动时,持续按住串口控制台的 'c' 键。最简单的操作方式是,在通电/按下复位键前就按住 'c' 键并保持。
我们添加的层包含 U-Boot、ATF 和 imx-mkimage 的补丁。此外,它修改了 core-image-minimal 配方。
在 U-Boot 中,新增配置文件 imx8qxp_mek_falcon_defconfig 实现 Falcon 模式所需选项,同时新增 spl_start_uboot() 函数实现。
AFT 在对应参数中添加了设备树加载地址。
在 mkimage 中,创建了两个新的目标:kernel-atf-container.img(部署到 boot 分区)和uImage(部署到 rootfs)。
core-image-minimal 配方文件的修改确保新文件被正确复制到最终镜像。
如需构建其他镜像类型,需将 core-image-minimal.bbappend 内容复制到新建文件中,并按目标镜像命名。例如构建 imx-image-full 时,可使用如下命令:
cp ~/imx-yocto-bsp/sources/meta-imx-fastboot/recipes-fsl/images/core-image-minimal.bbappend ~/imx-yocto-bsp/sources/meta-imx-fastboot/recipes-fsl/images/imx-image-full.bbappend
*** 免责声明 ***
NXP 提供的任何支持、信息和技术(“材料”)均按“现状”提供,不附带任何明示或暗示的保证, NXP 在适用法律允许的最大范围内,免除与材料相关的所有直接或间接责任及损害赔偿。 NXP 不对任何应用程序或产品设计方面的协助承担任何责任。材料仅可用于与 NXP 产品相关的用途。 您向 NXP 提供的任何关于材料的反馈均可由 NXP 无限制地使用。