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.

[参考译文] AM6442:Remoteproc 失败、错误的 phdr da

Guru**** 1825090 points
Other Parts Discussed in Thread: TMDS64EVM, SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1432302/am6442-remoteproc-failed-bad-phdr-da

器件型号:AM6442
主题中讨论的其他器件:TMDS64EVMSysConfig

工具与软件:

您好!

我刚刚创建了一个应用、用于使来自 R5F0内核的 LED 闪烁、不带 RTOS。 我用固件替换了/lib/firmware 上的固件。 当我启动 AM64-EVM 时、在 Linux 中会有一条消息用于 remoteproc

(我在 R5F 应用程序中添加了一个资源表)  

remoteproc remoteproc0:启动固件映像 am64-main-r5f0_0-fw、大小为310068

[ 12.464193] remoteproc remoteproc0:错误的 phdr da 0x70080000 mem 0xef00

[ 12.473257] remoteproc remoteproc0:无法加载程序段:-22.

这是什么意思 ? 我不知道问题在哪里。 你有什么想法吗?  

 

我在 R5F 上的存储器配置  

名称源长度已使用未使用属性填充
--------------- --- --- --- --- ---
R5F_VECS 00000000 00000040 00000040 00000000 RWIX
R5F_TCMA 00000040 00007fc0 00000000 00007fc0 RWIX
R5F_TCMB0 41010000 00008000 00000000 00008000 RWIX
闪存60100000 00080000 00000000 00080000 RWIX
MSRAM 70080000 00040000 00016fd8 00029028 RWIX
DDR_0 a0100000 00100000 00001000 000ff000 RWIX
DDR_1 a0200000 00e00000 00000000 00e00000 RWIX
RTOS_NORTOS_IPC_SHM_M a5000000 00800000 00000000 00800000 RWIX
USER_SHM_MEM a5800000 00000080 00000000 00000080 RWIX
LOG_SHM_MEM a5800080 00003f80 00000000 00003f80 RWIX


段分配映射

Run origin load origin length init length attrs 成员
--- --- --- --- --- ---
00000000 00000000 00000040 00000040 r-x
00000000 00000000 00000040 00000040 r-x .vectors
70080000 70080000 0000ef00 00000000 RW-
70080000 70080000 00002f00 00000000 RW-.bss
70082f00 70082f00 00008000 00000000 rw-.sysmem
7008af00 7008af00 00004000 00000000 rw-.stack
7008ef00 7008ef00 00006940 00006940 r-x
7008ef00 7008ef00 00005160 00005160 r-x .text
70094060 70094060 00000898 00000898 r--.rodata
700948f8 700948f8 00000760 00000760 r-x .text.hwi
70095058 70095058 00000430 00000430 r-x .text.cache
70095488 70095488 00000220 00000220 r-x .text.mpu
700956a8 700956a8 00000190 00000190 r-x .text.boot
70095838 70095838 00000008 00000008 r-x .text:abort
70095840 70095840 00000398 00000398 RW-
70095840 70095840 00000398 00000398 RW-.data
70095bd8 70095bd8 00001400 00000000 r--
70095bd8 70095bd8 00000100 00000000 r--.irqstack
70095cd8 70095cd8 00000100 00000000 r--.fiqstack
70095dd8 70095dd8 00001000 00000000 r--.svcstack
70096dd8 70096dd8 00000100 00000000 r--.abortstack
70096ed8 70096ed8 00000100 00000000 r--未定义的栈
a0100000 a0100000 00001000 00001000 r-
a0100000 a0100000 00001000 00001000 r--.resource_table

谢谢你  

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

    您好!

    您使用的是哪个版本的 Processor SDK?

    Linux remoteproc 正在抱怨 SRAM 存储器分配。 您是否在 Linux devicetree 中为 SRAM 分配了一个区域、然后将该 SRAM 区域添加到 R5F Linux devicetree 节点?

    请参阅 AM64x Academy 多核模块。

    我建议您仔细阅读整个"远程内核上的应用程序开发"部分:
    https://dev.ti.com/tirex/explore/node?a=7qm9DIS__LATEST&node=A__AfSHr0vWbFdGCnmoPeMXzg__AM64-ACADEMY__WI1KRXP__LATEST

    但是、包含您正在查找的 SRAM 示例代码的特定页面是"modify the remote core application">"allocation memory":
    https://dev.ti.com/tirex/explore/node?a=7qm9DIS__LATEST&node=A__AXdlNVv-3hxEuToJ8O8ivg__AM64-ACADEMY__WI1KRXP__LATEST 

    此致、

    Nick

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

    您好、Nick。

    非常感谢您的帮助。 现在它是有效的。 对于像我这样的关于该微控制器的未来读者和初学者、我决定总结一下。  

    从 Linux remoteproc LED 29达到 EVM TMDS64EVM 上 GPIO LED 闪烁的步骤

    1)获取 mcu_plus_sdk_am64x_10_00_00_20 (对我来说是最新的)

    2) 2)使用 Code Composer Studio 12.7.0打开位于 C:\ti\mcu_plus_sdk_am64x_10_00_00_20\examples\drivers\gpio\gpio_led_blink\am64x-evm\r5fss0-0_nortos 的 GPIO LED 闪烁项目

    3)在 Project Explorer/双击工程 gpio_led_blink_am64-evm_r5fss0-0_nortos_ti-arm-clang 和 file example.sysconfig

    3.1) 如下所示配置 IPC 部分

    3.2) GPIO 部分提供

    3.3) MEMORY 区域部分

    3.4部分

    不要忘记这样的资源表

    请参阅随附的 example.sysconfig-dts-memory  映射

    在调试释放模式下编译工程

    在工作区工程中构建.map 文件后、应如下所示

    存储器配置

    名称源长度已使用未使用属性填充
    --------------- --- --- --- --- ---
    R5F_VECS 00000000 00000040 00000040 00000000 RWIX
    R5F_TCMA 00000040 00007fc0 00000000 00007fc0 RWIX
    R5F_TCMB0 41010000 00008000 00000000 00008000 RWIX
    闪存60100000 00080000 00000000 00080000 RWIX
    MSRAM 70080000 00040000 00016fd8 00029028 RWIX
    DDR_IPC_resource_tabl a0100000 00001000 00001000 00000000 RWIX
    RTOS_NORTOS_IPC_SHM_M a5000000 00800000 00000000 00800000 RWIX
    USER_SHM_MEM a5800000 00000080 00000000 00000080 RWIX
    LOG_SHM_MEM a5800080 00003f80 00000000 00003f80 RWIX

    -----------------------------------------------------------------------------------------------------------------------------------------------

    修改设备树

    在 Linux SDK (Linux 机器)上、转到目录 ~/ti-processor-sdk-linux-am64xx-evm-10.00.07.04/board-support/ti-linux-kernel-6.6.6.6.32+git-ti/arch/arm64/boot/dts/ti$  

    通过添加此行来修改 k3-am64-main.dtsi 文件  

    这个文件 k3-am642-evm.dts

    现在、若要创建新的 dtb、请转至~/ti-processor-sdk-linux-am64xx-EVM-10.00.07.04并键入命令: 制造商 Linux-dtbs (阅读本页  1.1.4.使用 Makefile 进行 SDK 编译—Processor SDK AM64X 文档)  

    在以下位置提供全新的 dtb: ~/ti-processor-sdk-linux-am64xx-evm-10.00.07.04/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/boot/dts/ti$/k3-am642-evm.dtb

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    将这个新的 dtb:复制到/boot/dtb/ti 上您的 SD 卡

    在/lib/firmware 目录中、 取消链接 am64-main-r5f0_0-fw

    在/usr/lib/firmware 中复制扩展名为.out 的新固件

    在/lib/firmware 目录中创建一个新链接: ln -sf /gpio_led_blink_am64x-evm_r5fss0-0_nortos_ti-arm-clang.out /lib/firmware/am64-main-r5f0_0-fw

    重新启动

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    创建已签名的.out 文件(对于调试而言不是必需的)

    $ git 克隆 git.ti.com/.../core-secdev-k3.git -b master
    $ EXPORT TI_SECURE_DEV_PKG=`pwd`/core-secdev-k3
    为固件签名

    $${TI_SECURE_DEV_PKG}/scripts/secure-binary-image.sh $firmware.out $firmware.signed

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    我的下一步是使用脚本文件和命令直接将固件启动到 u-boot

    rproc init
    加载 MMC 1:2 0x90000000 /lib/firmware/am64-main-r5f0_0-fw
    rproc load 1 0x90000000 0x${fileSize}
    rproc 启动1

    即将推出

    此致

    Sebastien

     

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

    塞巴斯蒂安,你好!

    我很高兴你能让事情工作! 感谢您确认您的解决方案,它肯定会帮助其他人在未来找到这个线程.

    如果弹出任何其他问题、请随时创建新主题。

    使用 rproc 在 uboot 中初始化内核  

    AM64x Linux SDK 文档已过时。 从 Linux SDK 9.1开始、我们在 uboot 中增加了对 AM64x rproc 的支持、但 SDK 9.1、9.2或10.0中未说明支持 AM64x rproc。 我在一段时间前提交了一个请求单来解决此问题、我将向开发人员发送 ping 以进行更新。

    同时、请参阅 AM62x SDK 文档。 该页面是通用页面、因此没有任何 AM62x 特定详细信息:
    https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/10_00_07_04/exports/docs/linux/Foundational_Components U-Boot/UG-RemoteProc.html

    此致、

    Nick