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.

[参考译文] RTOS:IPC-通过 Linux 内核加载 IPU1固件(dra7-ipu1-fW.xem4)映像的实验

Guru**** 2581345 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/632363/rtos-ipc--experiments-on-loading-ipu1-firmware-dra7-ipu1-fw-xem4-image-through-linux-kernel

工具/软件:TI-RTOS

大家好、

我们尝试在 VISION-SDK 中进行少量 IPC 源代码实验、以进行存储器映射和资源表处理。
我们对 IPU1的默认 IPC 源代码进行了少量更改、但它不起作用。
请在附件中查找文件。

构建 xem4映像的命令:
将-f IPC-BIOS.mak 全部生成


更改

1、package.bld (packages/ti/ipc/tests/package.bld)

var evmDRA7XX_ExtMemMapIpu1 ={
EXT_CODE:{
名称:"EXT_CODE"、
基地址:0x8000000、
Len:0x000fc000、
太空:"代码"、
访问:"rwx"
}、
EXT_DATA:{
名称:"EXT_DATA"、
基地址:0x80100000、
Len:0x00200000、
太空:"数据"、
访问:"RW"
}、
EXT_HEAP:{
名称:"EXT_HEAP "、
基地址:0x80300000、
Len:0x00300000、
太空:"数据"、
访问:"RW"
}、
TRACE_BUF:{
名称:"trace_BUF"、
基地址:0x9F000000、
Len:0x00060000、
太空:"数据"、
访问:"RW"
}、
EXC_DATA:{
名称:"EXC_DATA"、
基地址:0x9F060000、
Len:0x00010000、
太空:"数据"、
访问:"RW"
}、
PM_DATA:{
名称:"PM_DATA"、
基地址:0x9F070000、
Len:0x00020000、
太空:"数据"、
访问:"rwx"/*这是否应该具有执行 perm? *

};

2 rsc_table_vayu_ipu.h 中的相应更改(packages/ti/ipc/remoteproc/rsc_table_vayu_ipu.h )
#define IPU_MEM_TEXT 0x8000000
#define IPU_MEM_DATA 0x80100000

日志:


[221.120682] remoteproc0:引导 FW 映像 dra7-ipu1-fw.xem4,大小为4461564
[221.128210] OMAP-IMU 588820.MMU:588820.MMU:2.1版
[221.140064] remoteproc0:错误的地址 da 0x0 mem 0xe0
[221.145112] remoteproc0:无法加载程序段:-22
[221.155310] remoteproc0:rproc_boot()失败-22
[221.160279] virtio_rpmsg_bus:virtio0的探测失败,错误-22

是否需要从 addrss 0x00004000启动 EXT_CODE?


此致、
Gokul

e2e.ti.com/.../test2.zip

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

    我已将您的问题转交给 IPC 专家。

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

    你好、Gokul、

    地址0x00004000不需要 EXT_CODE;它可以被移动。 但是、无论 EXT_CODE 位置如何、仍会从0x0开始放置几个段。 您可以在共享映射文件中或使用 readelf 查看这些内容:

    段分配映射

    运行 origin load origin length init length atts members
    ------ ------ ------ ------ ---- ----
    00000000 00000000 000000e0 000000e0 r-x
    00000000 00000000 000000e0 000000e0 r-x .ducatiPowerBoot
    00000400 00000400 00000140 00000140 r--
    00000400 00000400 00000140 00000140 r-.resetVecs
    00003000 00003000 0000044c 0000044c rw-
    00003000 00003000 0000044c 0000044c rw-.resource_table

    因此、您仍然需要资源表中一个从0x0开始的条目、并涵盖上述突出显示的段、以便 Linux 可以加载这些段。 对资源表 IPU_MEM_TEXT 地址的修改删除了地址0x0的资源表 TYPE_CARVEOUT 条目、因此 Linux Remoteproc 无法加载段。  每个 type_CARVEOUT 条目都指示远程处理器从 CMA 池分配内存并将其映射到指定的虚拟地址。 这些地址用于放置在这些虚拟地址中的 ELF 段。

    您将需要添加另一个 TYPE_CARVEOUT 条目、以在资源表中覆盖上述地址、从而成功加载。

    以下链接提供了有关资源表的一些信息、供您参考:

    http://processors.wiki.ti.com/index.php/IPC_Resource_customTable#C_Code

    谢谢、

    Angela