2409898_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2409898_zh-CN

2409898_zh-CN

LSDK 21.08 OP-TEE 导致启动失败

使用 LS1043AE 的定制板无需 OP-TEE 即可正常安全启动。尝试将 OP-TEE 引入系统和控制台输出时,卡在以下位置:

注意:2 GB DDR4,32 位,CL=11,ECC 关闭
注意:BL2:v2.4(版本):LSDK-21.08-1-ga08bfddba-dirty
通知:BL2:构建时间:2026年8月31日 22:39:20
注意:正在初始化和配置 高效密码学标准(SEC) 模块。
注意:高效密码学标准\(SEC\) 已初始化并配置完成。
注意:正在验证 RSA
注意:正在验证哈希值
注意:正在验证 RSA
注意:正在验证哈希值
注意:正在验证 RSA
注意:正在验证哈希值
注意:BL2:正在启动 BL31
注意:BL31:v2.4(发布版):LSDK-21.08-1-ga08bfddba-dirty
通知:BL31:版本:2026年8月31日 22:39:48
通知:欢迎来到 ls1043aerb BL31 阶段

根据谷歌/Gemini的说法,他们认为GIC存在问题。ATF 和 OP-TEE 似乎使用的是 64k 页对齐,但在 uboot dts 中却是 4k 页对齐。我不认为这是个问题,或者至少目前还不是。因为它似乎根本没有初始化 OP-TEE。

有什么想法?

QorIQ LS1设备Re: LSDK 21.08 OP-TEE breaks boot

你的 u-boot 似乎有问题。

请问您能否尝试在启用 OPTEE 的情况下,启动普通的 u-boot(非安全模式)?

Re: LSDK 21.08 OP-TEE breaks boot

我不介意尝试一下,但是这个测试的目的是什么呢?你目前认为uboot可能存在什么问题?既然不用 optee 也能正常工作,我很好奇可能出了什么问题,或者我应该检查哪些方面?

Re: LSDK 21.08 OP-TEE breaks boot

我首先会检查以下内容:

  • 以调试模式重建 TF-A,并确认确切的停止点。
    如果可行,请使用 DEBUG=1 LOG_LEVEL=50,或者在早期 BL31 平台代码中添加 NOTICE() 面包屑:
    • 平台设置条目
    • GIC 初始化
    • TZC/TZASC/TZPC 设置
    • 安全有效载荷调度器/OP-TEE 设置
    • BL32入口点准备
      NXP 对类似 LS1043A 挂起问题的指导是添加 ATF/U-Boot 调试打印或使用 CodeWarrior/JTAG 检查执行卡在哪里。
  • 确认 FIP 确实包含 BL32,并且 BL31 是使用 OP-TEE 支持构建的。
    对于 TF-A 中的 OP-TEE,构建必须包含 SPD=opteed 和 BL32=;对于安全启动/NXP CoT,安全 TF-A 构建流程还包括 TRUSTED_BOARD_BOOT=1、CST_DIR=...、BL32=$TEE_BIN、SPD=opteed 和 BL33=$UBOOT_SECURE_BIN。
    运行类似这样的命令:

fiptool info fip.bin

并确认 BL31、BL32/OP-TEE 和 BL33 都存在。如果 BL32 缺失或 BL31 没有使用 SPD=opteed 构建,则永远不会输入 OP-TEE。

  • 检查 LS1043A 安全启动保留内存处理。
    据报道,LS1043A 的安全启动问题已通过将 plat/nxp/soc-ls1043a/soc.def NXP_ROM_RSVD 的值从 0x5900 改为 0x8000 得到修复。既然您已经启用了安全启动,现在又添加了另一个已签名的 FIP 组件,那么就值得尽早检查一下。这比后来的 U-Boot DTS GIC 对齐问题更合理。
  • 不要以为“RSA/哈希已验证”就意味着图像布局良好。
    您的 BL2 日志证明其验证的组件的身份验证已成功,但并未证明运行时地址、保留内存重叠、BL32 加载地址或 BL31 安全有效载荷配置是否正确。BL2 的文档记录显示,在将控制权交给 BL31 之前,它会在验证后将 BL31/BL32/BL33 加载到 DDR。
  • 如果挂起转移到 BL31:正在初始化 BL32,则将焦点转移到 OP-TEE 本身。
    在后期阶段,我会查看 OP-TEE 加载地址、安全 DDR 分区、寻呼机/非寻呼机布局、CAAM/高效密码学标准(SEC) 配置和 OP-TEE 控制台。NXP 在相关的 OP-TEE/加密上下文中提供了指导,当怀疑 OP-TEE 加密初始化过早时,可以尝试使用 CFG_NXP_CAAM=n 和 CFG_CRYPTO_DRIVER=n 禁用 OP-TEE 中的加密/CAAM 功能。但您当前的日志尚不能证明 OP-TEE 正在被输入。

我最强烈的假设是:启用 OP-TEE 时,BL31 的构建/配置有所不同,并且在 OP-TEE 横幅或 BL32 条目之前,BL31 平台/SPD 设置早期阶段会卡住。我首先会在 GIC/平台设置周围对 BL31 进行插桩,并验证 FIP/SPD=opteed/BL32=tee.bin/secure-boot CSF 布局,然后检查 LS1043A NXP_ROM_RSVD=0x8000 问题。


Re: LSDK 21.08 OP-TEE breaks boot

所以我用调试模式编译了 atf,在程序静默挂起之前看到的最后一条信息是:

信息:BL31:正在初始化 BL32

所以如果我理解你的建议没错的话,我现在应该重点关注 OP-TEE,对吗?


Re: LSDK 21.08 OP-TEE breaks boot

是的,请先使用正常启动(非安全启动)验证 OP-TEE,以确保您的 OP-TEE 构建和部署过程没有问题。

Re: LSDK 21.08 OP-TEE breaks boot

我相信我之前用错了 tee.bin 文件。

我之前使用的是手动构建 OP-TEE 时生成的 tee.bin 文件,而不是我需要生成的 objcopy 版本。这样似乎可以启动系统并进入 Linux 系统。

我还有一些关于 optee 的内核日志消息需要查看,但由于这个问题已经解决,我将关闭此帖。

Tags (1)
No ratings
Version history
Last update:
‎09-09-2026 02:43 AM
Updated by: