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.

[参考译文] SK-AM62A-LP:如何使用具有符号链接的 MCU 固件

Guru**** 2483335 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1438782/sk-am62a-lp-how-to-use-mcu-firmware-with-symbolic-link

器件型号:SK-AM62A-LP

工具与软件:

您好、TI 专家:

当我在目标上使用 MCU 固件时、在进行如下所示的链接之前。

J721S2 :j721s2-main-r5f0_0-fw -> vision_apps_evm/vx_app_rtos_linux_mcu2_0.out

但符号链接在 AM62A 上无法正常工作。

AM62A : am62a-mcu-r5f0_0-fw -> vision_apps_EAik/vx_app_rtos_linux_mcu1_0.out

我是否应该将 tispl.bin 更改为使用  vx_app_rtos_linux_mcu1_0.out 构建的二进制文件?

我是否可以在目标上直接使用 MCU 固件?

此致、

UK Lee

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

    您好 Lee:

    您使用的是哪个版本的 AM62Ax Linux SDK?

    请附上完整的引导日志(包括 uboot 部分)。 可以将其复制粘贴到如下代码块中:

    插入>代码

    此致、

    Nick

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

    你好、UK Lee、

    首先了解引导日志

    好的、让我们看看终端告诉了我们什么。 请查看我的内联评论。

    // on THIS PARTICULAR BOOT, C7 = remoteproc0, MCU R5F = remoteproc1, DM R5F = remoteproc2
    // note that remoteprocX association can change each boot. So you MUST double check
    // which core is which remoteprocX on every boot cycle
    [    5.710828] k3-dsp-rproc 7e000000.dsp: assigned reserved memory node c7x-dma-memory@99800000
    [    5.719033] platform 79000000.r5f: configured R5F for remoteproc mode
    [    5.725745] k3-dsp-rproc 7e000000.dsp: configured DSP for remoteproc mode
    [    5.733235] platform 79000000.r5f: assigned reserved memory node r5f-dma-memory@9b800000
    [    5.744594] remoteproc remoteproc0: 7e000000.dsp is available
    [    5.746178] remoteproc remoteproc1: 79000000.r5f is available
    [    5.750604] k3-dsp-rproc 7e000000.dsp: register pm nitifiers in remoteproc mode
    
    // the remoteproc driver is looking for firmware at
    // /lib/firmware/am62a-mcu-r5f0_0-fw
    // but it does not see the firmware
    [    5.764048] remoteproc remoteproc1: loading /lib/firmware/am62a-mcu-r5f0_0-fw failed with error -22
    [    5.773790] remoteproc remoteproc1: Direct firmware load for am62a-mcu-r5f0_0-fw failed with error -22
    [    5.783632] remoteproc remoteproc1: powering up 79000000.r5f
    [    5.800659] remoteproc remoteproc1: loading /lib/firmware/am62a-mcu-r5f0_0-fw failed with error -22
    [    5.816844] remoteproc remoteproc1: Direct firmware load for am62a-mcu-r5f0_0-fw failed with error -22
             Starting Docker Socket for the API...[    5.838773] remoteproc remoteproc1: request_firmware failed: -22
    
    // DM R5F is already running. Thus, we just "attach" to the core instead of trying to boot it
    [    5.777937] platform 78000000.r5f: R5F core may have been powered on by a different host, programmed state (0) != actual state (1)
    [    5.807461] platform 78000000.r5f: assigned reserved memory node r5f-dma-memory@9c800000
    [    5.795218] platform 78000000.r5f: configured R5F for IPC-only mode
    [    5.852143] remoteproc remoteproc2: 78000000.r5f is available
    [    5.861634] remoteproc remoteproc2: attaching to 78000000.r5f
    [    5.869444] platform 78000000.r5f: R5F core initialized in IPC-only mode
    [    5.878679] rproc-virtio rproc-virtio.5.auto: assigned reserved memory node r5f-dma-memory@9c800000
    [    5.904773] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    5.905709] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xd
    [    5.918868] rproc-virtio rproc-virtio.5.auto: registered virtio0 (type 7)
    [    5.927225] remoteproc remoteproc2: remote processor 78000000.r5f is now attached
    
    // looks like C7 is getting initialized properly
    [    5.930531] remoteproc remoteproc0: powering up 7e000000.dsp
    [    5.930553] remoteproc remoteproc0: Booting fw image am62a-c71_0-fw, size 11559048
    [    5.935595] k3-dsp-rproc 7e000000.dsp: booting DSP core using boot addr = 0x99a00000
    [    5.963656] mtdblock: MTD device 'ospi_nand.tiboot3' is NAND, please consider using UBI block devices instead.
    [    5.966775] rproc-virtio rproc-virtio.7.auto: assigned reserved memory node c7x-dma-memory@99800000
    [    5.985870] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    6.014265] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xd
    [    6.014348] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0x15
    [    6.041602] rproc-virtio rproc-virtio.7.auto: registered virtio1 (type 7)
    [    6.069851] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0x15
    [    6.077259] remoteproc remoteproc0: remote processor 7e000000.dsp is now up
    [    6.084510] virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xe
    [    6.092861] virtio_rpmsg_bus virtio1: creating channel ti.ipc4.ping-pong addr 0xe

    后续步骤

    首先、我要确保您提供的是 MCU R5F 固件的链接:
    $ CD /lib/firmware
    $ ls -al

    拓展阅读  

    您可以在 AM62Ax Academy 中找到有关使用 Linux remoteproc 驱动程序来初始化远程内核的更多信息:
    https://dev.ti.com/tirex/explore/node?node=A__AX2DLf3J3o-JHYMSq7Eg0w__AM62A-ACADEMY__WeZ9SsL__LATEST

    此致、

    Nick

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

    因此问题可能是 固件没有指向固件、或者您正在加载没有资源表的固件。 我们可以在您查看/lib/firmware 后将其缩小范围

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

    您好、Nick:

    您的回答帮助我了解了 TI Sitara MPU。

     /lib/firmware/am62a-mcu-r5f0_0-fw (/usr/lib/firmware/ti-ipc/am62axx/ipc_echo_test_mcu2_0_release_strip.xer5f)似乎是 MCU 域 r5f。

    但我想直接链接唤醒域 r5f 固件、而不使用 vx_app_rtos_linux_mcu1_0.out 更改 tispl.bin。

    有没有办法做到这一点?

    此致、

    UK Lee

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

    您好!

    如果我理解正确、您想将其他固件加载到设备管理器(DM) R5F 内核中?

    请参阅 AM62Ax Academy 多核模块页面"Developing on the DM R5F":
    https://dev.ti.com/tirex/explore/node?node=A__AW-lFgdZvY1WcbRzT5wqhw__AM62A-ACADEMY__WeZ9SsL__LATEST

    几周前我写了这一页。 如果您有任何问题或反馈、请随时在此 E2E 主题中向我提供反馈。

    此致、

    Nick

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

    您好、Nick:

    可以、我要将其他固件加载到器件管理器(DM) R5F 内核中。

    我知道如何使用不同固件作为文档指南来构建 tispl.bin、但我想直接使用 R5 DM FW。

    我认为 R5 DM FW 的意思是"vx_app_rtos_linux_mcu1_0.out"

    是否可以直接使用目标器件的"fw"/lib/firmwear/vision_apps_eaik/vx_app_rtos_linux_mcu1_0.out、而不在 tispl.bin 中包含固件

    此致、

    UK Lee。

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

    您好!

    您的理解不是很正确。

    Linux Remoteproc 驱动程序可将固件加载到 C7和 MCU R5F 等远程内核中。 Linux remoteproc 驱动程序会在/lib/firmware 中查找其加载的二进制文件。

    但是、DM R5F 会在 Linux 开始引导之前加载。 DM R5F 固件封装在 uboot 二进制文件中、而不是文件系统的/lib/firmware 目录中。

    这意味着:
    1) 1)运行时无法重新加载 DM R5F 固件。 它仅在启动过程的早期加载一次
    2) 2)如果要加载新的 DM R5F 固件、则需要使用新固件重新构建 uboot 二进制文件。

    如需更多信息、请参阅此处:
    https://dev.ti.com/tirex/explore/node?node=A__AX2DLf3J3o-JHYMSq7Eg0w__AM62A-ACADEMY__WeZ9SsL__LATEST

    此致、

    Nick

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

    您好、Nick:

    我理解没有办法如你在下面所述。

    1)运行时无法重新加载 DM R5F 固件。 它仅在引导过程早期加载一次

    感谢您的回答。

    此致、

    UK Lee