2361750_zh-CN

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

2361750_zh-CN

2361750_zh-CN

i.mx6 HabV4 启动失败:在生产板上成功加载 USB 后出现 “j4 错误”

**目标:**
我们的目标是使用 `imx_usb` 加载程序绕过 eMMC 将我们的主板直接启动到 RAM 中。这是我们进行故障分析的关键一步。我们已经物理断开了生产板上的 eMMC 连接,以确保我们只测试 USB 启动路径。

**Board States:**
1. **开发板:** 熔丝未熔断。SoC 报告说它处于**开发模式**。
2。**制作板:** 熔丝已熔断,可安全启动。系统芯片报告已进入**生产模式**。

**结果摘要:***

在使用 `imx_usb` 工具时,我们观察到两种不同的结果。

**1.成功:开发板** 在我们的开发板
上,有一个未签名的 `u-boot.imx`加载并完美执行。日志确认二进制文件已加载并且 SoC 跳转到入口点。

* 命令:** `sudo ./imx_usbu-boot.imx`
** 主要日志输出(`development.txt`):**
```
HAB 安全状态:开发模式 (0x56787856)...

加载二进制文件 (u-boot.imx)到 877ff400,skip=0,fsize=5faa4 type=aa
成功(状态 0x88888888)跳转到 0x877ff400 ```*(结果:主板启动到 U-Boot 提示符)*


**2.故障:制作板** 在我们的制作板
上,我们使用**签名的 `u-boot.imx``**由我们的制造团队提供,使用相同的密钥签名,其哈希值在 SoC 中融合。`imx_usb`工具报告说 DCD 和二进制文件已成功加载。但是,最后的跳转命令失败了。

* 命令:** `sudo ./imx_usbu-boot-signed.imx`
** 关键日志输出(`production.txt`):**
```
HAB 安全状态:生产模式 (0x12343412)...

正在加载二进制文件 (u-boot.imx)到 877ff400,skip=0,fsize=5faa4 type=aa
成功(状态 0x88888888)在 err=0 中
跳到 0x8
77ff400 j4,last_trans=64 33 18 c0 00 ```*(结果:板无法启动。

无控制台输出)*

**分析和关键问题:***

关键区别在于 "跳转到 0x877ff400 "命令的结果。在生产板上,在映像成功传输到RAM之后,该过程在此时刻失败。这强烈表明 SoC 的启动 ROM 在*执行之前,正在对 RAM 中的映像执行**HABv4 签名验证**,但该验证失败了。

j4 err` 不是标准 USB 错误;它似乎是与跳转命令有关的 `imx_usb` 工具的内部状态代码。核心问题是跳跃不成功。

1。**HAB 身份验证失败:** “j4 错误”(或随后的无法启动)是否表示 HAB 身份验证失败?启动 ROM 成功接受了该映像,但似乎拒绝运行该映像。

2。**USB 启动的映像签名:** 对打算通过 USB 串行下载协议加载的 U-Boot 映像进行签名是否有特定的要求或格式?我们正在使用签名的 eMMC 启动镜像。预期的 IVT(图像矢量表)结构或其他元数据是否存在差异,导致 HAB 在以 `0x877ff400` 加载图像时拒绝图像?

3.**加载地址:** 图像正在加载到 `0x877ff400`。这是安全 i.MX6 上 USB 加载映像的正确地址吗?启动 ROM 是否期望映像在 RAM 中的不同位置进行身份验证?

Re: i.MX6 HABv4 Boot Failure: `j4 err` After Successful USB Load on Production Board

你好

您的签名映像是为eMMC启动而构建的吗?

错误显示加载到 RAM 的步骤已成功,但由于一个

HAB 验证失败。

Re: i.MX6 HABv4 Boot Failure: `j4 err` After Successful USB Load on Production Board

使用 imx_usb_loader(串行下载协议),我们成功地从 RAM 完全启动 U-Boot 和 Linux。从那次 U-Boot 实时会话中,我们将以下镜像写入了 eMMC:


# U-Boot IVT 强制位于 1 KiB 硬件偏移处

mmc dev 1 0

mmc 写入 0x82000000 0x2 0x400


# 将镜像适配到活动分区之外的原始扇区

mmc 写入 0x80800000 0x66000 0x3000


# 启动环境

setenv bootargs "console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw"

setenv loadfit "mmc dev 1 0; mmc read 0x80800000 0x66000 0x3000"

setenv bootcmd "run loadfit; bootz 0x808000e8 - 0x80da4bc0"

saveenv


从 U-Boot 提示符手动执行 run boot 命令可以正常工作——Linux 可以启动并挂载 /dev/mmcblk1p2,没有任何问题。邮件中附有工作日志。


故障状态:


在任何冷启动或硬件复位时,即使 USB OTG 电缆物理断开,电路板也不会产生任何 UART 输出,并且会静默地重新进入 USB 串行下载模式。ROM 似乎从未到达 eMMC。

Re: i.MX6 HABv4 Boot Failure: `j4 err` After Successful USB Load on Production Board

大家好,请问这个工单目前状态如何?如何才能推进进度?是否需要进行面对面(现场)会议?

Re: i.MX6 HABv4 Boot Failure: `j4 err` After Successful USB Load on Production Board

你好

是的,镜像已签名,可用于emmc启动。在内存中运行完美,但无法刷入 eMMC。

Tags (1)
No ratings
Version history
Last update:
‎06-25-2026 03:31 AM
Updated by: