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:R5F 固件与放大器;GStreamer 不同时运行

Guru**** 2456170 points
Other Parts Discussed in Thread: SK-AM62A-LP

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1480456/sk-am62a-lp-r5f-firmware-gstreamer-not-running-simultaneously

器件型号:SK-AM62A-LP

工具与软件:

您好!

我们正在尝试在 R5F 内核上运行"Hello World"示例固件、同时在 Edge AI Linux 上运行 GStreamer。

SD 卡引导:GStreamer 正常工作、但 MCU 固件不会加载(不打印"Hello World"示例)。
OSPI NAND 引导:"hello World"通过 UART 打印、Linux 引导、但 GStreamer 无法正常工作(请参阅下面的日志)。

APP: Init ... !!!
   434.436032 s: MEM: Init ... !!!
   434.436101 s: MEM: Initialized DMA HEAP (fd=13) !!!
   434.436266 s: MEM: Init ... Done !!!
   434.436280 s: IPC: Init ... !!!
_rpmsg_char_find_ctrldev: could not find the matching rpmsg_ctrl device for virtio1.rpmsg_chrdev.-1.13
_rpmsg_char_find_ctrldev: could not find the matching rpmsg_ctrl device for virtio0.rpmsg_chrdev.-1.13
   434.451563 s: IPC: ERROR: Unable to create TX channels for CPU [mcu1_0] !!!
   434.451575 s: IPC: ERROR: Unable to create TX channels for CPU [c7x_1] !!!
   434.451585 s: IPC: Init ... Done !!!
APP: ERROR: IPC init failed !!!
REMOTE_SERVICE: Init ... !!!
_rpmsg_char_find_ctrldev: could not find the matching rpmsg_ctrl device for virtio1.rpmsg_chrdev.-1.21
_rpmsg_char_find_ctrldev: could not find the matching rpmsg_ctrl device for virtio0.rpmsg_chrdev.-1.21
REMOTE_SERVICE: Init ... Done !!!


SK-AM62A-LP
MCU 示例 FW:hello_world_am62ax-sk_mcu-r5fss0-0_nortos_ti-arm-clang
CCS 20.0.2.
MCU SDK:mcu_plus_sdk_am62ax_10_01_00_33
处理器 SDK:ti-processor-sdk-linux-edgeai-am62a-evm-10_01_00_05

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

    你好 Fa 否、

    1) 1)您如何初始化 MCU R5F 内核? (在 SBL 引导期间、在 u-boot 期间、在 Linux 引导期间)。 如果您不确定、请附上完整的引导日志。

    如果您使用的是 Linux remoteproc 驱动程序、它将无法初始化 hello world 示例、因为没有资源表。 如需更多信息、请参阅 AM62Ax Academy 的多核模块: https://dev.ti.com/tirex/explore/node?node=A__AR9ReZ6np7Nm59M.O.sznw__AM62A-ACADEMY__WeZ9SsL__LATEST

    此致、

    Nick

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

    您好、Nick。

    我不确定、因此我要附加启动日志文件。

    我添加了资源表、但问题仍然存在。

    此致、

    FA

    e2e.ti.com/.../OSPI_5F00_NAND_5F00_BOOT_5F00_v2.txte2e.ti.com/.../SD_5F00_Card_5F00_BOOT_5F00_v2.txt

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

    你好、Fa、

    好的、您使用了2个完全不同的引导流程。 让我们来讨论一下发生了什么。

    如需了解有关引导流程和远程内核初始化方法的更多信息、请参阅 AM62Ax 多核 Academy 中的"引导和禁用处理器内核"一节。 在阅读此响应的其余部分之前、您应阅读"Boot Flows"(引导流程)页面和"Methods to initialize remote cores"(远程内核初始化方法)页面:
    https://dev.ti.com/tirex/explore/node?node=A__Ada-WjvmUg3JmB109NavGA__AM62A-ACADEMY__WeZ9SsL__LATEST 

    引导流程#1:SPL 引导、SD 卡  

    这是 SPL 引导。 您将注意到、在引导日志的顶部没有 SBL 输出。

    AM62Ax 在不同 SDK 版本上引导远程内核更改的默认行为。 在您使用的发行版中,uboot 正在初始化远程内核,Linux Remoteproc 驱动程序只是连接到已经运行的内核。

    有关更多信息、请参阅 Linux Academy 页面"Booting Remote Cores"部分"What if the remote cores is initialized by U-Boot?"
    https://dev.ti.com/tirex/explore/node?node=A__Ada-WjvmUg3JmB109NavGA__AM62A-ACADEMY__WeZ9SsL__LATEST

    该链接还将指导您在不希望 U-Boot 初始化远程内核时如何更改开箱即用的行为。

    引导流程#2:SBL 引导、OSPI NAND 引导  

    您可以在引导日志顶部看到 SBL 输出。

    SBL 似乎正在将固件加载到 MCU R5F 中、如下所示:

    [BOOTLOADER_PROFILE] Cores present    :
    mcu-r5f0-0
    r5f0-0
    [BOOTLOADER PROFILE] System_init                      :      37022us
    [BOOTLOADER PROFILE] Board_init                       :          0us
    [BOOTLOADER PROFILE] Drivers_open                     :        193us
    [BOOTLOADER PROFILE] Board_driversOpen                :      26685us
    [BOOTLOADER PROFILE] Sciclient Get Version            :      10170us
    [BOOTLOADER PROFILE] App_waitForMcuPbist              :          2us
    [BOOTLOADER PROFILE] MCU R5 Image Load                :       3389us
    [BOOTLOADER PROFILE] DM R5 Image Load                 :       6753us
    [BOOTLOADER_PROFILE] SBL Total Time Taken             :      84217us

    并在此处将固件加载到 C7内核:

    [BOOTLOADER_PROFILE] Cores present    :
    hsm-m4f0-0
    r5f0-0
    a530-0
    c75ss0
    [BOOTLOADER PROFILE] System_init                      :       1764us
    [BOOTLOADER PROFILE] Board_init                       :          1us
    [BOOTLOADER PROFILE] Drivers_open                     :        227us
    [BOOTLOADER PROFILE] Board_driversOpen                :      26969us
    [BOOTLOADER PROFILE] Sciclient Get Version            :      10269us
    [BOOTLOADER PROFILE] HSM Image Load                   :       2051us
    [BOOTLOADER PROFILE] DM R5 Image Load                 :       8131us
    [BOOTLOADER PROFILE] A53 Image Load                   :      29690us
    [BOOTLOADER PROFILE] DSP Image Load                   :      13100us
    [BOOTLOADER_PROFILE] SBL Total Time Taken             :      92204us

    我应该会看到 uboot rproc 无法初始化这两个内核(因为它们应该已经在运行)、但好像只能无法初始化 MCU R5F:

    k3_r5f_rproc r5f@79000000: Invalid op: Trying to load/start on already running core 3
    Load Remote Processor 0 with data@addr=0x82000000 53172 bytes: Failed!
    11604048 bytes read in 97 ms (114.1 MiB/s)
    Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. T
    his will fail on Security Enforcing(HS-SE) devices
    Load Remote Processor 2 with data@addr=0x82000000 11604048 bytes: Success!

    其中、uboot 中定义了"远程处理器0"和"Remote Processor 2"、如下所示:

    root@am62axx-evm:/opt/edgeai-gst-apps# reboot -f
    Rebooting.
    [   41.246218] reboot: Restarting system
    
    U-Boot SPL 2024.04-dirty (Aug 22 2024 - 18:40:45 -0500)
    SYSFW ABI: 4.0 (firmware rev 0x000a '10.0.8--v10.00.08 (Fiery Fox)')
    SPL initial stack usage: 13568 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b87-dirty
    NOTICE:  BL31: Built : 16:09:05, Feb  9 2024
    
    U-Boot SPL 2024.04-dirty (Aug 22 2024 - 18:45:24 -0500)
    SYSFW ABI: 4.0 (firmware rev 0x000a '10.0.8--v10.00.08 (Fiery Fox)')
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    
    
    U-Boot 2024.04-dirty (Aug 22 2024 - 18:45:24 -0500)
    
    SoC:   AM62AX SR1.0 HS-FS
    Model: Texas Instruments AM62A7 SK
    DRAM:  2 GiB (effective 4 GiB)
    Core:  87 devices, 30 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Net:   eth0: ethernet@8000000port@1
    Hit any key to stop autoboot:  0
    => printenv
    addr_fit=0x90000000
    ...
    boot_rprocs=if test ${dorprocboot} -eq 1 && test ${boot} = mmc; then rproc init; run boot_rprocs_mmc; fi;
    boot_rprocs_mmc=env set rproc_id; env set rproc_fw; env set secure_suffix; if test ${secure_rprocs} -eq 1; then env set secure_suffix -sec; fi; for i in ${rproc_fw_binaries}
     ; do if test -z "${rproc_id}" ; then env set rproc_id $i; else env set rproc_fw $i${secure_suffix}; run rproc_load_and_boot_one; env set rproc_id; env set rproc_fw; fi; don
    e
    ...
    rproc_fw_binaries= 0 /lib/firmware/am62a-mcu-r5f0_0-fw 2 /lib/firmware/am62a-c71_0-fw
    
    

    还可以、一般般…… 接下来如何操作?  

    现在您了解了初始化 MCU R5F 的所有不同方法、接下来您需要决定如何初始化内核并进行相应的修改。

    例如、如果您不希望 uboot 初始化一个或多个内核、则需要按照上述说明修改开箱即用行为。

    或者、如果要使用 SBL 引导、则需要将新的二进制文件构建到 SBL 中、或禁用 SBL 中的二进制文件、以便内核在稍后的引导过程中才会初始化。 如需了解有关如何执行此操作的更多信息、请访问: https://dev.ti.com/tirex/explore/node?node=A__ASUSWT8ebX1bStQ9skBElA__AM62A-ACADEMY__WeZ9SsL__LATEST

    此致、

    Nick