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.

[参考译文] PROCESSOR-SDK-J784S4:R5F 正常关断问题

Guru**** 2541930 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1557782/processor-sdk-j784s4-r5f-graceful-shutdown-issue

部件号:PROCESSOR-SDK-J784S4


工具/软件:

大家好:

使用 pdk_j784s4_11_00_00_21 时、我们无法停止 Jacinto 中的 r5fs。 我们只能停止 DSP。

我们在 am64x 上运行相同的测试、相同版本的 PDK 和 r5f 已成功停止。


对为什么会发生这种情况有何建议?

当我尝试停止 r5f 磁芯时、会出现此错误

[  634.928644] platform 5e00000.r5f: k3_r5_rproc_stop: timeout waiting for rproc completion event
[  634.937253] remoteproc remoteproc0: can't stop rproc: -16
sh: echo: write error: Device or resource busy

下面的图像证明了我得到的行为。 红色的是因为资源繁忙而不会停止的 r5f 颜色、绿色的是设法停止的 DSP。

下图列出了每个内核上运行的默认应用程序

谢谢。

最好的注意、
Joao Lima.

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

    您好 Joao、

    在停止双核 R5F 的 core0 之前、无法停止 core1。 是否在 core0 之前停止 core1?

    - Keerthy

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

    您好、Keerthy、

    我之前尝试停止 core0。

    但是、我已经重复了测试、尝试按升序停止内核、结果是相同的。

    在我们的最终用例中、我们只有 core0 在运行、在我尝试停止它时失败。 启动正常、但停止不起作用。

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

    你好 Joao、

    能否将您尝试的命令和相应的日志共享为文本文件附件?

    11.0 具有 Remoteproc 正常关机功能。  

    您是否还将默认 SDK 固件或自定义固件用于远程内核?  

    此致、

    Keerthy

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

    您好、Keerthy、

    没问题。  请查找以下命令和日志:

    cd /lib/firmware
    
    ln -sf ~/ipc_echo_test_freertos_mcu2_0_release.xer5f j784s4-main-r5f0_0-fw
    
    echo start > /sys/class/remoteproc/remoteproc0/state
    [  171.509285] remoteproc remoteproc0: powering up 5c00000.r5f
    [  171.523182] remoteproc remoteproc0: Booting fw image j784s4-main-r5f0_0-fw, size 781652
    [  171.532213] rproc-virtio rproc-virtio.8.auto: assigned reserved memory node r5f-dma-memory@a2000000
    [  171.541889] virtio_rpmsg_bus virtio0: rpmsg host is online
    [  171.547435] rproc-virtio rproc-virtio.8.auto: registered virtio0 (type 7)
    [  171.554222] remoteproc remoteproc0: remote processor 5c00000.r5f is now up
    
    echo stop > /sys/class/remoteproc/remoteproc0/state
    [  203.310824] platform 5c00000.r5f: k3_r5_rproc_stop: timeout waiting for rproc completion event
    [  203.319444] remoteproc remoteproc0: can't stop rproc: -16
    
    sh-5.2# ls -lha
    drwxr-xr-x    5 1000     1000        4.0K May 29 18:49 .
    drwxr-xr-x   37 1000     1000       24.0K Aug 26  2025 ..
    -rw-r--r--    1 1000     1000      695.4K Mar  9  2018 bl32.bin
    -rw-r--r--    1 1000     1000        4.6M Mar  9  2018 bl32.elf
    drwxr-xr-x    2 1000     1000        4.0K Mar  9  2018 cadence
    drwxr-xr-x    2 1000     1000        4.0K Mar  9  2018 cnm
    lrwxrwxrwx    1 root     root          49 May 29 18:49 j784s4-main-r5f0_0-fw -> /root/ipc_echo_test_freertos_mcu2_0_release.xer5f
    -rw-r--r--    1 1000     1000          28 Mar  9  2018 tee-header_v2.bin
    -rw-r--r--    1 1000     1000           0 Mar  9  2018 tee-pageable_v2.bin
    -rw-r--r--    1 1000     1000      695.4K Mar  9  2018 tee-pager_v2.bin
    -rw-r--r--    1 1000     1000      695.4K Mar  9  2018 tee-raw.bin
    -rw-r--r--    1 1000     1000      695.4K Mar  9  2018 tee.bin
    -rw-r--r--    1 1000     1000        4.6M Mar  9  2018 tee.elf
    drwxr-xr-x    3 1000     1000        4.0K Mar  9  2018 ti-ipc
    lrwxrwxrwx    1 1000     1000          46 Mar  9  2018 wave521c_k3_codec_fw.bin -> /usr/lib/firmware/cnm/wave521c_k3_codec_fw.bin

    仅供参考,我使用 11 在 am64x(有效)和 j784s4(在我们这边不工作)进行测试。

    11.0 具有 remoteproc 正常关闭

    对于此基本测试、我使用 默认 SDK 固件

    此致、
    Joao Lima.

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

    你好 Joao、

    MAIN_r5fss0_core0:r5f@5c00000{
    兼容=“ti、j721s2-r5f“;
    reg =<0x5c00000 0x00010000>、
    0x5c10000 0x00010000>;
    REG-NAMES =“ATCM",“,"btcm"、"btcm";“;</s>“
    TI、sci =<&SMS>;
    TI、sci-dev-id =<339>;
    TI、sci-proc-ids =<0x06 0xff>;
    RESET =<&K3_RESET 339 1>;
    firmware-name =“j784s4-main-R5f0_0-fw";“;
    TI、ATCM-ENABLE =<1>;
    TI、btcm-enable =<1>;
    TI、loczrama =<1>;
    };

    MAIN_r5fss0_core1:r5f@5d00000{
    兼容=“ti、j721s2-r5f“;
    REG =<0x5d00000 0x00010000>、
    0x5d10000 0x00010000>;
    REG-NAMES =“ATCM",“,"btcm"、"btcm";“;</s>“
    TI、sci =<&SMS>;
    TI、sci-dev-id =<340>;
    TI、sci-proc-ID =<0x07 0xff>;
    RESET =<&K3_RESET 340 1>;
    firmware-name =“j784s4-main-R5f0_1-fw";“;
    TI、ATCM-ENABLE =<1>;
    TI、btcm-enable =<1>;
    TI、loczrama =<1>;
    };

    集群中有 2 个内核。

    请尝试停止    停止 core0 r5f@5c00000 之前的 core1 r5f @5d0000。  

    Echo stop >/sys/class/remoteproc/remoteproc1/state

    - Keerthy

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

    您好、Keerthy、

    好的、我已经在内核 0 之前测试停止内核 1、我得到了之前分享的相同输出:
    [ 2227.502672] platform 5d00000.r5f:k3_r5_rproc_stop:等待 rproc 完成事件超时
    [2227.511292] remoteproc remoteproc9: cannot stop rproc:–16

    不过、我对 R5F MCU 进行了测试、并成功停止内核 MCU1_0。

    同时、我已经确认 DTS 文件、并具有您共享的 R5F 市电配置。

    您能否检查您是否可以通过 J784S4 设置和 SDK 11 在您这边重现此行为、以便我们可以交叉提供信息?

    感谢你能抽出时间。

    Joao Lima.

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

    您好、Keerthy、

    同时、对于相关内核、我确认了 am64xx 和 j784s4 在 DTS 中定义的配置是相同的。

    此致、
    Joao Lima.

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

    您好 Joao、

    您能否检查您是否可以使用 J784S4 设置和 SDK 11 在您这边重现此行为、以便我们可以交叉参考信息?

    我会尝试同样的,并在明天或通过星期一回到你。

    - Keerthy

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

    您好 Joao、

    我重现了这个问题:

    echo stop > /sys/class/remoteproc/remoteproc7/state 
    [  105.151067] platform 5d00000.r5f: k3_r5_rproc_stop: timeout waiting for rproc completion event
    [  105.159691] remoteproc remoteproc7: can't stop rproc: -16
    -sh: echo: write error: Device or resource busy
    

    需要进行一些更改:

    1. 这仅在 Remoteproc 模式下受支持、而在仅 IPC 模式下不受支持。 如果 U-Boot 加载固件、则 Linux 将无法停止并启动。
      因此、在 SD 卡的引导分区的 uEnv.txt 中:
      1. setenv dorprocboot 0
      2. 注释覆盖线。

        #设置正确的 U-Boot 环境变量
        dorprocboot=0
        #name_overles=ti/k3-j784s4-evm-ethfw.dtbo ti/k3-j784s4-vision-apps.dtbo

    2. 默认的/lib/firmware 指向 vision_apps 固件、且未通过正常关断验证。 只有 IPC_ECHO_TEST 固件通过正常关断进行验证:

      LN -SF /usr/lib/firmware/ti-ipc/j784s4/ipc_echo_test_mcu2_1_release_strip.xer5f /lib/firmware/j784s4-main-r5f0_1-fw
      LN -SF /usr/lib/firmware/ti-ipc/j784s4/ipc_echo_test_mcu2_0_release_strip.xer5f /lib/firmware/j784s4-main-r5f0_0-fw

    通过上述 2 项更改、停止/启动工作正常:

    echo stop > /sys/class/remoteproc/remoteproc11/state 
    [   93.650232] remoteproc remoteproc11: stopped remote processor 5d00000.r5f
    root@j784s4-evm:~# echo stop > /sys/class/remoteproc/remoteproc10/state                                                                                                                                     
    [  102.726280] remoteproc remoteproc10: stopped remote processor 5c00000.r5f
    root@j784s4-evm:~# echo start > /sys/class/remoteproc/remoteproc10/state                                                                                                                                    
    [  110.485526] remoteproc remoteproc10: powering up 5c00000.r5f
    [  110.492328] remoteproc remoteproc10: Booting fw image j784s4-main-r5f0_0-fw, size 82648
    [  110.501416] rproc-virtio rproc-virtio.9.auto: assigned reserved memory node r5f-dma-memory@a2000000
    [  110.510998] virtio_rpmsg_bus virtio1: rpmsg host is online
    [  110.516539] rproc-virtio rproc-virtio.9.auto: registered virtio1 (type 7)
    [  110.523333] remoteproc remoteproc10: remote processor 5c00000.r5f is now up
    [  110.525872] virtio_rpmsg_bus virtio1: creating channel ti.ipc4.ping-pong addr 0xd
    root@j784s4-evm:~# [  110.537862] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xe
    
    root@j784s4-evm:~# echo start > /sys/class/remoteproc/remoteproc11/state                                                                                                                                    
    [  118.269523] remoteproc remoteproc11: powering up 5d00000.r5f
    [  118.276294] remoteproc remoteproc11: Booting fw image j784s4-main-r5f0_1-fw, size 82648
    [  118.285340] rproc-virtio rproc-virtio.10.auto: assigned reserved memory node r5f-dma-memory@a3000000
    [  118.295083] virtio_rpmsg_bus virtio2: rpmsg host is online
    [  118.300632] rproc-virtio rproc-virtio.10.auto: registered virtio2 (type 7)
    [  118.307524] remoteproc remoteproc11: remote processor 5d00000.r5f is now up
    [  118.309780] virtio_rpmsg_bus virtio2: creating channel ti.ipc4.ping-pong addr 0xd
    root@j784s4-evm:~# [  118.322064] virtio_rpmsg_bus virtio2: creating channel rpmsg_chrdev addr 0xe
    

    此致、
    Keerthy

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

    您好、Keerthy、

    感谢您的回答。

    我按照你的指示,但我仍然无法停止核心.

    为了协调一致、我遵循了以下流程:

    • 在 j784s4 引导期间、设置“setenv dorprocboot 0“。 我通过检查 printenv 确认了状态更改
    • 启动后、我用以下消息确认了 dmesg 中的状态更改:
      [    6.975506] platform 5c00000.r5f: configured R5F for remoteproc mode  <-------
      [    6.983685] omap-mailbox 31f84000.mailbox: omap mailbox rev 0x66fca100
      [    6.984305] omap-mailbox 31f85000.mailbox: omap mailbox rev 0x66fca100
      [    6.992477] platform 41000000.r5f: configured R5F for IPC-only mode
      [    7.000871] platform 5c00000.r5f: assigned reserved memory node r5f-dma-memory@a2000000
      [    7.007193] platform 41000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
      [    7.008325] mtdblock: MTD device 'ospi_nand.u-boot' is NAND, please consider using UBI block devices instead.
      [    7.014508] remoteproc remoteproc0: 5c00000.r5f is available
      [    7.016135] m_can_platform 40528000.can mcu_mcan0: renamed from can0
      [    7.020228] cdns-ufshcd 4e84000.ufs: ufshcd_populate_vreg: Unable to find vdd-hba-supply regulator, assuming enabled
      [    7.028017] remoteproc remoteproc1: 41000000.r5f is available
      [    7.029973] remoteproc remoteproc0: powering up 5c00000.r5f  <-------
      [    7.029985] remoteproc remoteproc0: Booting fw image j784s4-main-r5f0_0-fw, size 82648
      [    7.030005] platform 5d00000.r5f: configured R5F for remoteproc mode
      [    7.031216] platform 5d00000.r5f: assigned reserved memory node r5f-dma-memory@a3000000
      

    • 在 rootfs 中,我确认了内核的状态 — 它正在运行。
    • 我运行了“echo stop“命令来停止内核。
    • 我只有一个内核在运行。 运行的固件如下:

    j784s4-main-r5f0_0-fw -> /usr/lib/firmware/ti-ipc/j784s4/ipc_echo_test_mcu2_0_release_strip.xer5f

    仅供参考、u-boot 中没有任何名为 name_overlays 的环境变量

    echo start > /sys/class/remoteproc/remoteproc6/state
    [   43.848475] remoteproc remoteproc6: powering up 5c00000.r5f
    [   43.855322] remoteproc remoteproc6: Booting fw image j784s4-main-r5f0_0-fw, size 82648
    [   43.864308] rproc-virtio rproc-virtio.9.auto: assigned reserved memory node r5f-dma-memory@a2000000
    [   43.873958] virtio_rpmsg_bus virtio1: rpmsg host is online
    [   43.879545] rproc-virtio rproc-virtio.9.auto: registered virtio1 (type 7)
    [   43.886335] remoteproc remoteproc6: remote processor 5c00000.r5f is now up
    
    sh-5.2# echo stop > /sys/class/remoteproc/remoteproc6/state
    [   52.270069] platform 5c00000.r5f: k3_r5_rproc_stop: timeout waiting for rproc completion event
    [   52.278684] remoteproc remoteproc6: can't stop rproc: -16
    sh: echo: write error: Device or resource busy

    此致、
    Joao Lima.

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

    Joao、

    您能否在 SD 卡的引导分区中共享 uenv.txt 文件?  

    此致、

    Keerthy  

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

    你好 Joao、

    [引述 userid=“572441" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1557782/processor-sdk-j784s4-r5f-graceful-shutdown-issue/6001840

    仅供参考、u-boot 中没有任何名为 name_overlays 的环境变量

    [/报价]

    由于 uEnv.txt 不同、因此肯定存在差异。 您能否在下面的 tar 文件中查看默认的 uEnv.txt:

    https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-lOshtRwR8P/11.00.00.08/boot-adas-j784s4-evm.tar.gz

    我使用的 uEnv.txt:

    # This uEnv.txt file can contain additional environment settings that you
    # want to set in U-Boot at boot time. This can be simple variables such
    # as the serverip or custom variables. The format of this file is:
    # variable=value
    # NOTE: This file will be evaluated after the bootcmd is run and the
    # bootcmd must be set to load this file if it exists (this is the
    # default on all newer U-Boot images. This also means that some
    # variables such as bootdelay cannot be changed by this file since
    # it is not evaluated until the bootcmd is run.
    
    # Update the Linux hostname based on board_name
    # The SK also requires an additional dtbo to boot. Prepend it to name_overlays depending on board_name
    uenvcmd=if test "$board_name" = "am69-sk"; then ; setenv args_all $args_all systemd.hostname=am69a-sk ; fi
    
    # Setting the right U-Boot environment variables
    dorprocboot=0
    #name_overlays=ti/k3-j784s4-evm-ethfw.dtbo ti/k3-j784s4-vision-apps.dtbo

    尝试上述操作、并告诉我。

    BTW Vision Apps 固件不支持此功能、因为当摄像头流水线运行时、关闭过程会很复杂。 这种平稳关断只是使用更简单的 IPC 回声测试二进制文件的概念验证。

    谢谢、
    Keerthy

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

    您好、Keerthy、

    好消息。

    我们发现我们使用的引导加载程序版本不是最新版本。 我们现在正在更新版本。

    感谢您的帮助和时间。

    此致、
    Joao Lima.