NXP MCU 技术论坛
直播中

张杰

8年用户 1378经验值
私信 关注
[问答]

为什么U-boot显示的HAB事件数据不符合HAB的数据表?

我在 i.MX8MQ 上遇到了一个严重的 HAB 问题,我按照 NXP 文档对 u-boot 和内核进行了签名,所以在我看来 u-boot 签名很好,但是当我尝试时我有一个奇怪的行为验证内核。
当我调用 hab_auth_img 时,该事件不会出现,但如果我调用 hab_status 两次,我会遇到一个标题错误且没有 sens 的事件。
我的laodaddr是0x40480000,内核的大小是0x1a06960
我加载图像,这是 u-boot 的提示:
u-boot=> 运行 loadimage
在 643 毫秒 (40.5 MiB/s)
u-boot 中读取 27289952 字节 => hab_auth_img 0x40480000 0x1a06960 0x1a05000
hab 保险丝未启用
验证来自 DDR 位置 0x40480000 的图像…
安全启动已禁用
HAB 配置:0x00,HAB 状态:0x00
u-boot=> hab_status
安全启动已禁用
HAB 配置:0x00,HAB 状态:0x00
u-boot=> hab_status
安全启动已禁用
HAB 配置:0x00,HAB 状态:0x00
——— HAB Event 1 —————–
event data:
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xb0 0x0a 0x94 0xbf 0x00 0x00 0x00 0x00
0x00 0x00 0x48 0x40 0x00 0x00 0x00 0x00
0x60 0x69 0xa0 0x01 0x00 0x00 0x00 0x00
0x70 0x40 0x91 0xbf 0x00 0x00 0x00 0x00
0x34 0x51 0xf4 0xbf 0x00 0x00 0x00 0x00
0x85 0x51 0xfa 0xbf 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x70 0x40 0x91 0xbf 0x00 0x00 0x00 0x00
0x6c 0x51 0xf4 0xbf 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x20 0x1f 0x92 0xbf 0x00 0x00 0x00 0x00
STS = HAB_SUCCESS (0xF0)
RSN = HAB_RSN_ANY (0x00)
CTX = HAB_CTX_ANY(0x00)
ENG = HAB_ENG_ANY (0x00)
u-boot=>

对我来说,hab 事件应该以标签开始:0xdb = Event,但这里它以 0x00 开始,其次它显示 HAB_SUCCESS (0xF0)。
我认为U-boot验证做得很好,因为它是通过ROM代码和SPL验证的,这意味着它们在EL3中。
然而,U-BOOT 是 EL2,因此它通过 ARM Trusted firmware (BL31) 调用 SMC 来调用 ROM 代码。
我们认为问题可能来自 u-boot 和 ATF 之间的接口。

有关信息,保险丝已经编程。

我的问题是:
  • 为什么 U-boot 显示的 HAB 事件数据不符合 HAB 的数据表?
  • 为什么我们只在第二次调用时才收到 HAB 事件,而不是在第一次调用时?

更多回帖

发帖
×
20
完善资料,
赚取积分