This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM6421:AM64x HS-EVM 定制电路板:U-Boot 在 FS 旁路后选择 SK DTB、而不是 EVM DTB

Guru**** 2927270 points

Other Parts Discussed in Thread: AM6421

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1649821/am6421-am64x-hs-fs-custom-board-u-boot-selecting-sk-dtb-instead-of-evm-dtb-after-eeprom-bypass

器件型号: AM6421

您好、

我们正在开发基于 FS EVM 的定制 AM6421 HS-AM64x 电路板。 我们的定制电路板没有 EEPROM、因此我们修改了 U-Boot 中的 EEPROM 检测流程、以绕过 EEPROM 读取。

我们 do_board_detect() 在中修改了函数:

board/ti/am64x/evm.c

并按如下所示手动填充 EEPROM 结构:

int do_board_detect(void)
{
    struct ti_am6_eeprom *ep = TI_AM6_EEPROM_DATA;

    // Manually populate the data structure to bypass I2C read
    strlcpy(ep->name, "AM64-SK", sizeof(ep->name));
    strlcpy(ep->version, "E1", sizeof(ep->version));
    ep->header = TI_EEPROM_HEADER_MAGIC;

    return 0;
}

通过以下更改、我们能够绕过 EEPROM 检测错误。 但是、我们观察到构建似乎是选择 SK DTS 而不是 EVM DTS。

我们通过分别修改两个 DTS 文件来确定这一点:

  • 中所做的更改 k3-am642-evm.dts 未得到反映。

  • 中所做的更改 k3-am642-sk.dts 是在引导期间正确应用的。

这表示在当前启动流程中选择 SK DTB 代替 EVM DTB。

如果我们不绕过 EEPROM 检测、则电路板会在 DFU 刷写期间断开连接、并且我们无法刷写其余的引导加载程序二进制文件。

为了解决此问题、我们修改了电路板检测流程并手动填充 EEPROM 结构。

我们还尝试更改:

strlcpy(ep->name, "AM64-EVM", sizeof(ep->name));

而不是 AM64-SKEVM、但我们仍然面临着同样的问题、即编译/运行时行为似乎选择了 SK DTS 而不是 EVM DTS。

因此不绕过 EEPROM

U-Boot SPL 2024.07 (May 27 2026 - 16:18:35 +0530)
Resetting on cold boot to workaround ErrataID:i2331
Please resend tiboot3.bin in case of UART/DFU boot
resetting ...

U-Boot SPL 2024.07 (May 27 2026 - 16:18:35 +0530)
SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.5--v11.01.05 (Fancy Rat)')
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -121
board_fit_config_name_match in.
is_am64x.
SPL initial stack usage: 13368 bytes