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.

[参考译文] AM62P:MCUR5 和 WKUP R5 从 Android 引导

Guru**** 2988540 points

Other Parts Discussed in Thread: AM62P, SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1656265/am62p-mcur5-and-wkup-r5-booting-from-android

部件号: AM62P
主题: SysConfig 中讨论的其他器件

您好、

我正在处理 AM62P 平台、目前正在构建 Android SDK 并刷写该 SDK。 刷写后、我观察到 MCU 和 DM 内核固件也在刷写中。

我想知道 SDK 中放置固件映像的正确位置、以便在构建和闪存过程中包含固件映像。

在另一张票证中、我发现 MCU R5 固件(文件).out 应放置在:

ti-aosp-16/vendor/ti/am62x/firmware/vendor/firmware/ti-ipc

您能告诉我 WKUP R5F(DM/WKUP 内核)固件应放置在哪里、以便也打包并正确刷写吗?

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

    尊敬的 Abhijith:

    DM/WKUP R5 映像是引导加载程序映像 tispl.bin 的一部分。 DM 固件不是可选的、是器件成功引导所必需的。
    https://docs.u-boot-project.org/en/latest/board/ti/am62px_sk.html

    您可以更改的是加载到 DM R5 上的应用程序。 默认情况下、IPC 示例应用用作 DM R5 固件。

    此致、
    Vishal

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

    你好、 Vishal Mahaveer 、

    目前、当我刷写 Android 时、IPC RPMsg 示例固件被加载到 WKUP R5F 内核上。 我想将其替换为我自己的应用程序。

    您能否告诉我此固件在构建过程中集成的位置、以及需要进行哪些修改才能加载不同的 WKUP R5F 应用?

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

    WKUP R5 固件是从 u-boot 工程生成的 tispl.bin 的一部分。
    tispl.bin 将刷写到`bootloader` partition - https://software-dl.ti.com/processor-sdk-android/esd/AM62PX/11_00_01/docs/android/Application_Notes_Partitions eMMC/html#eMMC-partition-layout 中

    构建 u-boot 二进制文件时、WKUP R5 固件在构建过程中被指向。
    https://software-dl.ti.com/processor-sdk-android/esd/AM62PX/11_00_01/docs/android/Foundational_Components_Bootloaders build.html#build-instructions


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

    你好、 Vishal Mahaveer 、

    在浏览引导加载程序 SDK 时、我找到了以下目录:

    /home/user/ti-aosp-bootloader/ti-linux-firmware/ti-dm/am62pxx

    它包含以下两个文件:

    • dss_display_share.wkup-r5f0_0.release.strip.out
    • ipc_echo_testb_mcu1_0_release_strip.xer5f

    我假设这 ipc_echo_testb_mcu1_0_release_strip.xer5f 是唤醒内核的固件。

    为了验证这一点、我 IPC_RPMSG 在添加了一些其他日志消息后构建了该示例、以便将其与默认固件区分开来。 然后,我剥离生成的 .out 文件,将其重命名为 .xer5f,替换现有的 IPC 固件,重建 tiboot3.bin, tispl.bin和 U-Boot ,并刷新更新的二进制文件。

    但是、我没有得到预期的输出。 使用默认引导加载程序时、我可以看到 IPC 日志消息、但更换固件后、将不再打印这些日志。 这使我认为我修改了正确的固件、但我删除二进制文件或将二进制文件转换为所需格式时可能存在问题。

    您能告诉我生成 .xer5f 固件的正确步骤、或者我可能缺少任何内容吗?

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

    尊敬的 Abhijeet:

    您提到的程序听起来是正确的。 WKUP R5 固件是引导加载程序二进制文件的一部分、您要更新的文件是默认拾取的文件。

    您能否分享在固件上执行剥离操作所使用的步骤?
    此外、您可以尝试不剥离固件吗?

    此致、
    Vishal  

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

    你好、 Vishal Mahaveer 、

    以下是我为生成固件而执行的步骤:

    1. 导航到以下 SDK 目录:

      <SDK_PATH>/examples/drivers/ipc/ipc_rpmsg_echo_linux/am62px-sk/wkup-r5fss0-0_freertos/ti-arm-clang
      
    2. 使用提供的构建固件 Makefile。

    3. 构建完成后、生成以下输出文件:

      • <filename>.out

      • <filename>.appimage

      • <filename>.xip

      • 和其他构建构件。

    4. 然后、我通过运行以下命令生成了已去除符号的固件:

      ~/ti/ti-cgt-armllvm_4.0.1.LTS/bin/tiarmstrip ipc_rpmsg_echo_linux.release.out -o ipc_echo_testb_mcu1_0_release_strip.xer5f
      

    您能否请确认以下这些是生成 .xer5f 固件的正确步骤、或者在将其与引导加载程序配合使用之前是否需要任何额外的转换或打包步骤?

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

    你好、 Vishal Mahaveer 、

    在 检查文件 u-boot/arch/arm/dts/k3-am62p-sk-binman.dtsi时,我注意到以下条目:

    dm {
        ti-secure {
            content = <&dm>;
            keyfile = "custMpk.pem";
        };
    
        dm: ti-dm {
            filename = "ti-dm/am62pxx/ipc_echo_testb_mcu1_0_release_strip.xer5f";
            optional;
        };
    };
    

    您能否说明 ti-dm 固件ipc_echo_testb_mcu1_0_release_strip.xer5f() 是否作为映像生成过程的一部分进行了签名? 由于 ti-secure 节点引用 custMpk.pem、我想确认固件是否打包并使用签名的映像机制进行身份验证。

    谢谢你。

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

    你好、 Vishal Mahaveer 、


    我在测试时观察到了一些东西。 当我用一个简单的 Hello World 示例替换 Android SDK 中的 MCU 固件时、我无法看到任何日志。 稍后、我使用 IPC 示例作为基础、并创建了一个新线程、该线程会连续打印“Hello World“。 通过这种方法、我能够同时查看 IPC 日志和 Hello World 日志。

    然后、我对 WKUP 固件尝试了类似的方法、但仍然没有看到任何日志。

    是否有任何文档说明了构建 DM 固件、生成已去除符号的二进制文件并将其转换为 .xer5f 格式的正确过程?

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

    尊敬的 Abhijit:

    是否有任何文档说明了构建 DM 固件、生成已去除符号的二进制文件并将其转换为 .xer5f 格式的正确过程?

    生成的*。out 文件是*。xer5f 文件。 您不需要生成一个、只需复制*。out 并将扩展名更改为*。xer5f 而不是*。out。

    然后我尝试了一种与 WKUP 固件类似的方法、但我仍然看不到任何日志。

      有关详细信息、请参阅在 DM R5F 上开发应用。

    此外、请确保 UART0 不用于 DM R5F 应用。

    此致、

    Tushar

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

    尊敬的 Tushar Thakur 、

    [引述 userid=“16414“ url=“~/support/processors-group/processors/f/processors-forum/1656265/am62p-mcur5-and-wkup-r5-booting-from-android/6411898

    此外、请确保 UART0 不用于 DM R5F 应用。

    [/报价]


    我附加了 syscfg 屏幕截图以供参考、请检查配置是否匹配。




    谢谢、
    Abhijith Raj

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

    尊敬的 Abhijit:

    正如我在前面的回复中已经提到的、不要使用 UART0 实例进行日志记录。 在您的 SysConfig 快照中、我可以看到您使用的是 UART0、应用程序将无法工作。

    此致、

    Tushar

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

    尊敬的 Tushar Thakur 、

    我明白这一点。 我的怀疑是我在 SBL 引导流程(仅限 WKUP 和 MCU R5 内核)中使用了相同的固件、在这种情况下我可以看到日志。

    在 EVK 上、我将 UART 转 USB 接口连接到我的 PC、它显示了四个 COM 端口。 WKUP 域日志在 ttyUSB2 上提供、我可以在那里看到日志。

    在这种情况下、如果我更改 UART0、UART 引脚也会改变吗? 如果是、我是否仍然可以在 PC 上的同一 ttyUSB2 端口上看到日志、或者我是否需要连接到不同的 UART 接口?

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

    尊敬的 Abhijit:

    来自 UART0 的日志将显示在 ttyUSB0 端口上。   有关详细信息、请参阅 UART 设置。

    此致、

    Tushar

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

    尊敬的 Tushar Thakur 、

    我还是有点困惑。 在 WKUP 内核 IPC 示例中、我在 SysConfig 中看到两个 UART 实例:

    • CONFIG_UART_SBL –这被标记为 “由引导加载程序添加的实例“ 、当前使用 USART0。 可用的选项包括 USART1、USART2、USART3。 USART6.
    • CONFIG_UART_APP –这被标记为 “使用 WKUP 域外设“ 、当前使用 WKUP_USART0。 该实例仅提供 WKUP_USART0 作为选项。

    您建议不要选择 USART0。 您能否说明您指的是哪个 UART 实例—CONFIG_UART_SBL 或 CONFIG_UART_APP?

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

    您使用的是哪一个引导流程?

    您使用的是 Linux 吗? Linux 使用哪种 UART?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid=“16414“ url=“~/support/processors-group/processors/f/processors-forum/1656265/am62p-mcur5-and-wkup-r5-booting-from-android/6413485

    您使用的是哪一个引导流程?

    [/报价]

    SPL 引导流程。

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

    这意味着您使用的是 Linux。 如我之前的回复中所述、由于 Linux 使用 UART0 实例、因此无法从 WKUP/MCU R5F 中使用。  

    请在 MCU/WKUP R5F 应用中使用 UART1。

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

     Tushar Thakur 

    我试用了 UART1、UART4 和 UART5。

    借助 SBL 引导流程、我可以在 UART 控制台上看到日志。 但是、当我将同一固件与 Android 引导流(SPL 引导)一起使用时、我看不到任何 UART 日志。

    我还尝试使用 WKUP UART 外设、但结果是相同的。

    当我添加了一个 LED 闪烁任务并且它按预期运行时、固件肯定正在运行。

    我的 怀疑是:如果所有 UART(包括 WKUP UART)都已启用或由 Linux BSP 声明、这可能是我没有看到任何 UART 日志的原因吗?

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

    你好  Abhijith Raj 

    您是否能够引导 SOC?

    您是否在 EVM 上看到 Android 日志?

    请确认是否仅显示 WKUP R5F 日志?

    此致、

    Tushar  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid=“16414“ url=“~/support/processors-group/processors/f/processors-forum/1656265/am62p-mcur5-and-wkup-r5-booting-from-android/6415505

    您是否在 EVM 上看到 Android 日志?

    [/报价]

    是的、我可以从 SoC 上看到 Android 日志。

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

    如果 EVM 正在成功引导、并且您能够按预期看到 Android 日志、则运行的远程内核可能会出现问题。

    WKUP R5F 内核可能未运行。 请按照提到的 引导远程内核步骤 操作、并确认远程内核是否在运行?

    运行以下命令进行检查。

    => head /sys/class/remoteproc/remoteproc*/name
    => head /sys/class/remoteproc/remoteproc*/state
     

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

    你好、 Tushar Thakur 
    我运行这些命令、输出附在下面


    console:/# head /sys/class/remoteproc/remoteproc */ name

    ==>/sys/class/remoteproc/remoteproc0/name <=
    79000000.r5f

    ==>/sys/class/remoteproc/remoteproc1/name <=
    78000000.r5f


    console:/# head /sys/class/remoteproc/remoteproc */ state
    ==>/sys/class/remoteproc/remoteproc0/state <=
    持续更新

    ==>/sys/class/remoteproc/remoteproc1/state <=
    随附



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

    尊敬的 :

    请共享以下命令的输出。

    cat /sys/kernel/debug/remoteproc/remoteproc1/trace0

    此致、

    Tushar

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

    Tushar Thakur 
    console:/# cat /sys/kernel/debug/remoteproc/remoteproc1/trace0
    CAT:/sys/kernel/debug/remoteproc/remoteproc1/trace0: 无此类文件或目录

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

    您可以尝试 通过 CCS 调试远程内核中提到的步骤 吗?

    从应用中删除 UART 实例并启用 CCS 日志、如上面提供的链接中所述。 Re 构建示例二进制文件。

    按照提供的链接中所述的步骤操作、看看您是否能够运行二进制文件或它卡在某些调试断言中。

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

    Tushar Thakur ,

    目前、我们未使用 CCS 进行编译。 相反、我们直接使用 MCU+SDK 来构建和开发新的示例工程。

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

    您不一定需要 CCS 来编译工程、而是用于调试。 您仍然可以使用 MCU+SDK makefile 编译和编译工程、并在 CCS 上加载生成的*。out 二进制文件。

    我们需要 CCS 在您的最终调试问题、因为我不知道在您声称日志没有到来时 R5F 内核正在执行什么指令。

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

    Tushar Thakur ,

    对于 SPL 引导流程、我认为我们无法单独刷写 DM 内核固件。 是这样吗?

    此外、如何使用 CCS 调试 DM 内核?

    我使用的是 AM62P SK-EVM、该 EVM 具有一个标记为 JTAG 的 micro-USB 端口。 我的理解是、我可以使用标准 micro-USB 电缆将其连接到 PC、安装所需的驱动程序、然后使用 CCS 进行调试。 是否正确、或者是否需要任何额外的硬件?

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

    e2e.ti.com/.../ipc_5F00_rpmsg_5F00_echo_5F00_linux.zip

    我已附加我正在使用的工程。 您能否请查看 UART 配置并告诉我它看起来是否正确?

    如果您有类似的设置、您是否还可以尝试在终端运行工程、以验证 UART 输出是否按预期运行?

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

    [报价 userid=“685432“ url=“~/support/processors-group/processors/f/processors-forum/1656265/am62p-mcur5-and-wkup-r5-booting-from-android/6418606

    对于 SPL 引导流程、我认为我们无法单独刷写 DM 内核固件。 是这样吗?

    此外、如何使用 CCS 调试 DM 内核?

    [/报价]

    是的、正确。 您将无法单独刷写。 您需要按照上面提供的链接中提到的步骤操作。

    本文档确实介绍了如何使用 Load Symbol 选项而不是 Load Program 选项。