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.

[参考译文] TMDS64EVM:从 AM64x 上的 U-Boot SPL 启动 R5FSS0_0 问题

Guru**** 2445440 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1549754/tmds64evm-issue-starting-r5fss0_0-from-u-boot-spl-on-am64x

器件型号:TMDS64EVM


工具/软件:

你好

我正在尝试使用 U-Boot SPL 尽早启动三个 R5 内核、因为我们的系统具有严格的时序要求并且 R5 子系统需要快速运行。
我已经在spl_board_init() R5 上运行的 U-Boot 中添加了固件加载和处理器启动代码。 该设置适用于加载/启动 R5FSS1_0 和 R5FSS1_1。 两个内核都正确启动并按预期运行固件。
但是、当我尝试开始时 R5FSS0_1 、没有任何反应。 所有函数调用(例如 LOAD、START)成功返回。 最后、我调用ti_sci_proc_get_status()、它返回以下内容:

proc_id = 2, boot_vector = 0xx, cfg_flags = 0x1803, ctrl_flags = 0x0, sts = 0x0

这看起来一切都能正常工作、核心应该在运行。但它显然没有任何作用。 相同固件时、系统会自动重新启动 R5FSS1_0 它可以正常执行、所以我认为这不是固件问题。

我使用的是主线 U-Boot v2025.04、在 binman DTSI 中设置 core-opts = <2>;

如下:下面是我在 SPL 中使用的用于启动 R5 内核的粗略序列:

mmc_init(...);
blk_dread(...);

rproc_dev_init(rproc_id);
rproc_stop(rproc_id);
rproc_reset(rproc_id);

rproc_load(rproc_id);
rproc_start(rproc_id);
udelay(1000);
ti_sci_proc_get_status(...);

我不确定的问题/事项:

  • 关于 R5FSS0_0 是否有任何特殊之处可能会阻止其在 SPL 中启动?

  • 特别是对于 R5FSS0_0、是否需要执行其他步骤?

  • core-opts = <2>;在这方面是否足够?

任何想法或提示都将非常感谢。

此致、
Philippe

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

    您好 Philippe、

    为了设置预期、您正在编写 TI 不支持的自定义代码。 我所能提供的援助有限。

    支持的引导方法

    TI 支持的非 Linux 内核初始化方法如下:
    在 SBL 期间(仅限 SBL 引导)
    在使用 rproc 进行 u-boot 期间
    迁移到 Linux 中

    有关所有这 3 种方法的更多信息、请参阅 AM64x Academy 的多核模块:
    引导和禁用处理器内核>初始化远程内核的方法
    https://dev.ti.com/tirex/explore/node?node=A__Ab5AogqjWTRWB1yUfHHjTw__AM64-ACADEMY__WI1KRXP__LATEST

    让我们来谈谈您的用例  

    请记住、SPL 的 R5F 部分在 R5F0_0 上运行。 因此、如果您尝试在 R5F0_0 中加载新固件、而它仍在执行 R5F SPL 代码、那么我预计会失败。 如果我尝试从 R5F SPL 加载 R5F0_0 运行时代码、那么我会将固件加载到 R5F0_0、这是 R5F SPL 最后做的事情。

    SBL 示例可能是有用的参考资料。 以下是引导 Linux 并在 EMMC 上存储文件系统时运行的 R5F0_0 SBL 代码:
    https://github.com/TexasInstruments/mcupsdk-core/blob/next/examples/drivers/boot/sbl_emmc_linux/am64x-evm/r5fss0-0_nortos/main.c

    其中、您将看到 R5F0_0 使用 ID “CSL_CORE_ID_R5FSS0_0"对“对自身进行的操作、并使用 ID “CSL_CORE_ID_R5FSS0_1"对“对 R5F0_1 进行的操作

    此致、

    Nick