2407908_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2407908_zh-CN

2407908_zh-CN

iMX8qm 启动核心 A72_0

大家好,NXP论坛,

在 iMX8qm 上,我们能否从 A72 核心启动?SCUFW 是否支持这样做?

谢谢!

Re: iMX8qm Boot Core A72_0

请先使用现有的 flash_ca72 目标;不要替换 u-boot-atf.bin 文件。使用 u-boot-atf-a72.bin除非您有意使用驾驶舱/多 AP 图像流。

证据表明存在这种区别:

  • flash_ca72 被描述为与普通 A-core 启动目标相同的基本启动映像,但加载到 A72 而不是 A53。
  • u-boot-atf.bin 是 ATF 和 U-Boot 的组合镜像:bl31.bin加上 u-boot.bin/ u-boot-hash.bin。
  • u-boot-atf-a72.bin出现在 flash_cockpit 目标中,其中镜像包含两个 AP 有效载荷:一个用于 A53,另一个用于 A72:-ap u-boot-atf.bin a53 0x80000000 ... -ap u-boot-atf-a72.bin a72 0xC0000000 ... 。

因此,重要的选择器不仅是文件名;它还是目标中的 imx-mkimage -ap ... a72 ... 参数。对于单个 A72 启动映像,使用 u-boot-atf.bin 的 flash_ca72 与文档中所述的意图一致:即使文件名没有后缀 -a72,有效载荷也会通过目标规则加载到 A72。

推荐路径:

  • 使用现有目标构建标准的仅限 A72 的镜像:

制作 SOC=iMX8QM flash_ca72

  • 在 Linux 端使用 CA72 设备树/配置。NXP 文档指出,i.MX8QM MEK CA72 DTB 仅支持两个 Cortex-A72 内核,并且需要使用 flash_ca72 构建的特殊启动映像。
  • 预留 u-boot-atf-a72.bin对于显式打包第二个 A72 AP 映像的流程(例如 flash_cockpit),除非您的 电路板支持包的 soc.mak评论或发行说明另有说法。
  • 启动时验证镜像是否实际进入 A72 路径:检查 make V=1 SOC=iMX8QM flash_ca72 命令发出的 imx-mkimage 命令,或检查 iMX8QM/soc.mak 文件。并确认 AP 线路使用 a72。

要点:将当前 flash_ca72 引用视为对 u-boot-atf.bin 的引用这是有意为之;u-boot-atf-a72.bin 是用于驾驶舱/多分区风格镜像中单独使用的 A72 有效载荷,而不是 flash_ca72 的自动替代品。


Re: iMX8qm Boot Core A72_0我们想澄清/确认一个小问题:`flash_ca72` 目标目前引用了 `u-boot-atf.bin`,同时,在相同的配置中,还有一个单独的 `u-boot-atf-a72.bin` 可用。

我们该如何进行?
Re: iMX8qm Boot Core A72_0

是的——在 i.MX8QM 上,应用程序处理器启动映像可以面向 Cortex-A72 而不是 Cortex-A53,SCFW 允许这种流程。NXP 的 imx-mkimage 有一个 flash_ca72 目标,被描述为普通 A53 启动映像的 A72 变体,旨在尽早启动 A72 以优化启动时间。

重要的区别在于:

  • First code after RESET: 不是 A72。设备启动流程仍然从 ROM/SCU/SCFW 开始。
  • AP 端引导加载程序/操作系统启动:是的,这可以在 A72 上完成。SCFW 初始化 DDR,加载 Cortex-A 映像,然后启动内核并设置其起始地址。
  • 配置机制:启动容器可以为 a72 指定一个 AP 镜像,例如示例显示 imx-mkimage 中的 -ap ... a72 ...。

所以答案是: SCFW 确实允许从 A72 启动 AP 软件路径,但 A72 不是 RESET/ROM 启动主控;它是由 SCFW 根据启动容器配置启动的。

Re: iMX8qm Boot Core A72_0

你好,

我按照以下步骤构建引导加载程序,但引导加载程序构建失败,没有任何日志记录。

请您核对一下附件中的步骤。

谢谢!


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
git clone https://github.com/varigit/imx-atf-b lf_v2.10_6.6.52-2.2.0_var01
 
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
   
git clone https://github.com/varigit/uboot-imx.git -b lf_v2024.04_6.6.52-2.2.0_var01
   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
   
git clone https://github.com/varigit/imx-mkimage-b lf-6.6.52_2.2.0_var01
   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 文件被用作引导加载程序镜像。

Re: iMX8qm Boot Core A72_0

就您的具体手术而言,关键在于:

制作 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。


Re: iMX8qm Boot Core A72_0哪里可以找到SCFW参考手册或设计手册,以便对SCFW固件进行修改?Re: iMX8qm Boot Core A72_0

您可以从这里开始:

https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/System-Controller-Firmware-101/ta-p/1124...

https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/System-Controller-Firmware-101-Getting-s...


SCFW 参考/移植文档包含在 NXP SCFW 移植工具包中,而不是作为单独的公开参考手册提供。

  • 从 NXP i.MX 软件和开发页面下载工具包。选择与您的 i.MX BSP 对应的版本;NXP 需要匹配的移植工具包以保持与其提供的二进制文件的兼容性。
  • 接受许可协议并运行包含的 .bin 文件安装程序。
  • 请查看下方:
    • doc/pdf/sc_fw_port.pdf — 详细的 SCFW 移植指南
    • doc/pdf/ — SCFW API 用户指南、版本说明及相关文档
    • src/ — SoC 专用 SCFW 导出归档

该工具包包含源代码和目标代码的混合体。针对特定电路板的定制是在导出的电路板源代码中进行的,通常位于 platform/board/mx8_/ 目录下,包括 board.c 等文件。; SCFW 的核心大部分仍然是对象式的,无法通过公共工具包进行修改。

通用 i.MX 移植指南 UG10165 中也有一个“移植系统控制器固件”章节,解释了与 BSP 和 meta-imx-scfw 的集成。

タグ(1)
評価なし
バージョン履歴
最終更新日:
水曜日
更新者: