你好,
我按照以下步骤构建引导加载程序,但引导加载程序构建失败,没有任何日志记录。
请您核对一下附件中的步骤。
谢谢!
mkdir Scarthgap_New
cd Scarthgap_New
1. 获取网络安全控制器二进制文件
mkdir SECO
光盘 SECO
chmod +x imx-seco-5.9.4.1-0333596.bin
./imx-seco-5.9.4.1-0333596.bin
mkashyap@cse-dev02:~/iMX8/Scarthgap_New/SECO/imx-seco-5.9.4.1-0333596/firmware/seco$ ls -al
总计 976
drwxrwxr-x 2 mkashyap mkashyap 4096 8月26日 22:21 .
drwxrwxr-x 3 mkashyap mkashyap 4096 8月26日 22:21 ..
-rw-r--r-- 1 mkashyap mkashyap 194 7月 29 2024 commit-id.txt
-rw-r--r-- 1 mkashyap mkashyap 163840 2024年7月29日 mx8dxla1-ahab-container.img
-rw-r--r-- 1 mkashyap mkashyap 163840 2024年7月29日 mx8dxlb0-ahab-container.img
-rw-r--r-- 1 mkashyap mkashyap 76944 2024 年 7 月 29 日 mx8qmb0-ahab-container.img
-rw-r--r-- 1 mkashyap mkashyap 71312 7月29日 2024 mx8qxb0-ahab-container.img
-rw-r--r-- 1 mkashyap mkashyap 78408 7月29日 2024 mx8qxc0-ahab-container.img
-rwxr-xr-x 1 mkashyap mkashyap 423875 2024 年 7 月 29 日 SECO_FW_release_note.pdf
mkashyap@cse-dev02:~/iMX8/Scarthgap_New/SECO/imx-seco-5.9.4.1-0333596/firmware/seco$
我们使用 mx8qmb0-ahab-container.img
光盘 ../../../..
2. 下载并构建 ATF
mkdir ATF
光盘 ATF
cd imx-atf
源 /opt/fsl-imx-xwayland/6.6-scarthgap/environment-setup-armv8a-poky-linux
unset LDFLAGS
制作 PLAT=imx8qm bl31
mkashyap@cse-dev02:~/iMX8/Scarthgap_New/ATF/imx-atf/build/imx8qm/release$ ls -al
总计76
drwxrwxr-x 7 mkashyap mkashyap 4096 8月26日 22:37 .
drwxrwxr-x 3 mkashyap mkashyap 4096 8月26日 22:36 ..
drwxrwxr-x 3 mkashyap mkashyap 4096 8月26日 22:37 bl31
-rwxrwxr-x 1 mkashyap mkashyap 45213 8月 26日 22:37 bl31.bin
drwxrwxr-x 2 mkashyap mkashyap 4096 8 月 26 日 22:37 lib
drwxrwxr-x 2 mkashyap mkashyap 4096 8月26日 22:37 libc
drwxrwxr-x 2 mkashyap mkashyap 4096 八月 26 22:37 libwrapper
drwxrwxr-x 2 mkashyap mkashyap 4096 8月26日 22:37 romlib
光盘 ../../../../../
3. 下载并构建 SCFW
mkdir SCFW
cd SCFW
sudo tar xf gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz -C ./opt
cd imx-sc-firmware/src/scfw_export_mx8qm_b0
export TOOLS=/home/mkashyap/iMX8/Scarthgap_New/SCFW/Opt
执行 clean-qm
使 qm R=B0 B=var_som V=1
mkashyap@cse-dev02:~/iMX8/Scarthgap_New/SCFW/imx-sc-firmware/src/scfw_export_mx8qm_b0/build_mx8qm_b0$ ls -al
总计 3384
drwxrwxr-x 11 mkashyap mkashyap 4096 8月26日 22:47 .
drwxrwxr-x 6 mkashyap mkashyap 4096 8月26日 22:47 ..
drwxrwxr-x 3 mkashyap mkashyap 4096 8月26日 22:47 板
drwxrwxr-x 3 mkashyap mkashyap 4096 8月26日 22:44 设备
drwxrwxr-x 25 mkashyap mkashyap 4096 8月26日 22:47 司机
drwxrwxr-x 2 mkashyap mkashyap 4096 8月26日 22:44 main
-rwxrwxr-x 1 mkashyap mkashyap 184448 8 月 26 日 22:47 scfw_tcm.bin
-rwxrwxr-x 1 mkashyap mkashyap 2787784 8月26日 22:47 scfw_tcm.elf
-rw-rw-r-- 1 mkashyap mkashyap 513123 8 月 26 日 22:47 scfw_tcm.map
drwxrwxr-x 4 mkashyap mkashyap 4096 8月26日 22:44 soc
drwxrwxr-x 26 mkashyap mkashyap 4096 8月26日 22:44 ss
drwxrwxr-x 9 mkashyap mkashyap 4096 8月26日 22:47 svc
drwxrwxr-x 10 mkashyap mkashyap 4096 8月26日 22:44 测试
drwxrwxr-x 2 mkashyap mkashyap 4096 8月26日 22:44 实用程序
光盘 ../../../../../
4. 构建 u-boot
mkdir u-boot
cd u-boot
cd uboot-imx
cp ../../SECO/imx-seco-5.9.4.1-0333596/firmware/seco/mx8qmb0-ahab-container.img ./mx8qm-ahab-container.img
cp ../../SCFW/imx-sc-firmware/src/scfw_export_mx8qm_b0/build_mx8qm_b0/scfw_tcm.bin ./mx8qm-mek-scfw-tcm.bin
让 mrproper
制作 imx8qm_var_som_defconfig
make -j8
光盘 ../../
5. 制作图像
mkdir MkImage
cd MkImage
cd imx-mkimage
cp ../../SECO/imx-seco-5.9.4.1-0333596/firmware/seco/mx8qmb0-ahab-container.img ./iMX8QM/
cp ../../SCFW/imx-sc-firmware/src/scfw_export_mx8qm_b0/build_mx8qm_b0/scfw_tcm.bin ./iMX8QM/
cp ../../u-boot/uboot-imx/u-boot.bin ./iMX8QM/
cp ../../u-boot/uboot-imx/spl/u-boot-spl.bin ./iMX8QM/
cp ../../ATF/imx-atf/build/imx8qm/release/bl31.bin ./iMX8QM/
制作 SOC=iMX8QM flash_ca72
cd iMX8QM
make -f soc.mak SOC=iMX8QM MKIMG=../mkimage_imx8 PAD_IMAGE=./pad_image.sh flash_ca72
mkashyap@cse-dev02:~/iMX8/Scarthgap_New/MkImage/imx-mkimage/iMX8QM$ ls -al
总计 6792
drwxrwxr-x 3 mkashyap mkashyap 4096 8月26日 23:08 .
drwxrwxr-x 13 mkashyap mkashyap 4096 8月26日 23:06 ..
-rwxrwxr-x 1 mkashyap mkashyap 45213 8月26日 23:06 bl31.bin
-rwxrwxr-x 1 mkashyap mkashyap 2564 8月26日 22:59 expand_c_define.sh
-rw-rw-r-- 1 mkashyap mkashyap 1895424 8 月 26 日 23:08 flash.bin
-rw-rw-r-- 1 mkashyap mkashyap 9 Aug 26 23:06 head.hash
-rwxrwxr-x 1 mkashyap mkashyap 2078 年 8 月 26 日 22:59 mkimage_fit_atf.sh
-rw-r--r-- 1 mkashyap mkashyap 76944 8 月 26 日 23:02 mx8qmb0-ahab-container.img
-rwxrwxr-x 1 mkashyap mkashyap 184448 8 月 26 日 23:03 scfw_tcm.bin
drwxrwxr-x 2 mkashyap mkashyap 4096 8月26日 22:59 脚本
-rwxrwxr-x 1 mkashyap mkashyap 13271 8 月 26 日 22:59 soc.mak
-rwxrwxr-x 1 mkashyap mkashyap 1631521 8 月 26 日 23:06 u-boot-atf.bin
-rw-rw-r-- 1 mkashyap mkashyap 1500440 8 月 26 日 23:04 u-boot.bin
-rw-rw-r-- 1 mkashyap mkashyap 1500449 8 月 26 日 23:06 u-boot-hash.bin
-rw-rw-r-- 1 mkashyap mkashyap 139387 8 月 26 日 23:04 u-boot-spl.bin
生成的 flash.bin 文件被用作引导加载程序镜像。
就您的具体手术而言,关键在于:
制作 SOC=iMX8QM flash_ca72
如果您打算将引导加载程序加载到 A72 而不是 A53 ,那么从概念上讲,这是正确的目标。NXP 社区指南将 flash_ca72 描述为类似于基本的 flash_b0 映像,但加载到A72而不是A53 。
“无日志”症状并不一定意味着 SCFW 拒绝了 A72 启动。一个已知的陷阱是A53 和 A72 不使用同一个日志终端,因此,如果您监测通常的 A-core/A53 UART,即使 A72 镜像正在运行或稍后在不同的控制台路径上出现故障,您可能也看不到任何东西。
验证您的步骤:
|
面积
|
评估
|
|
SECO集装箱
|
mx8qmb0-ahab-container.img 是 i.MX8QM B0 的正确容器类别。
|
|
ATF
|
使 PLAT=imx8qm bl31 对于 i.MX8QM 来说是合理的。
|
|
SCFW
|
构建 qm R=B0 B=var_som V=1 与 i.MX8QM B0 Variscite 目标一致。
|
|
U-Boot
|
imx8qm_var_som_defconfig 是需要确认的关键项:它必须与 A72 启动路径和控制台配置兼容。
|
|
mkimage 目标
|
flash_ca72 仅适用于 A72 启动。对于正常的 Linux 电路板支持包。启动,文档中记录的 i.MX8QM 命令是 make SOC=iMX8QM flash。
|
|
SPL副本
|
u-boot-spl.bin 可能与 flash_ca72 无关;该目标不是基于 SPL 的流程。
|
|
重复镜像版本
|
同时运行顶层 make SOC=iMX8QM flash_ca72 和手动运行 make -f soc.mak ... flash_ca72 是不必要的。使用一条简洁的顶级命令。
|
我会修改/优化图像生成部分,使其:
cd ~/iMX8/Scarthgap_New/MkImage/imx-mkimage
cp ../../SECO/imx-seco-5.9.4.1-0333596/firmware/seco/mx8qmb0-ahab-container.img ./iMX8QM/
cp ../../SCFW/imx-sc-firmware/src/scfw_export_mx8qm_b0/build_mx8qm_b0/scfw_tcm.bin ./iMX8QM/
cp ../../u-boot/uboot-imx/u-boot.bin ./iMX8QM/
cp ../../ATF/imx-atf/build/imx8qm/版本/bl31.bin ./iMX8QM/
make clean
制作 SOC=iMX8QM flash_ca72
然后使用:
iMX8QM/flash.bin
同时修复/检查此 SCFW 路径:
export TOOLS=/home/mkashyap/iMX8/Scarthgap_New/SCFW/Opt
您已将文件提取到 ./opt 目录。但是导出了.../SCFW/Opt。Linux 路径区分大小写。既然你已经生成了scfw_tcm.bin你的 shell 可能确实有有效的工具路径,但这一行需要验证。
推荐的调试顺序:
让 SOC=iMX8QM 闪存
这会检查 SECO + SCFW + ATF + U-Boot + 板 DDR/控制台是否基本正确。Linux 用户指南中记录了此标准 i.MX8QM flash.bin 文件。生成路径。
制作 SOC=iMX8QM flash_ca72
- 监控A72 控制台/UART ,而不仅仅是普通的 A53 控制台。A53 和 A72 日志终端有所不同。
- 如果仍然没有反应,请比较生成的 flash.bin 文件。比较 flash 和 flash_ca72 之间的大小/布局,并确认 Variscite U-Boot 配置是否真正启用了 A72 启动目标使用的控制台。
所以直接的答案是: SCFW 确实允许通过 flash_ca72 镜像流程启动 A72 上的 Cortex-A 端,但 SCFW 仍然负责初始启动编排。你的步骤对 A72 启动基本有效,但需要移除重复的 soc.mak 调用,验证 SCFW 工具路径,最重要的是检查 A72 的 UART/控制台。
要点:i.MX8QM 上的 A72 启动是通过 flash_ca72 实现的;静默启动更有可能是镜像/配置/控制台问题,而不是 SCFW 拒绝启动 A72。