工具/软件:TI-RTOS
问题描述:
===========================
在使用 Remoteproc 在 dsp1上加载 DSP 固件期间、我获得了
以下错误:
[70.405992] remoteproc2:引导 FW 映像 dra7-dsp1-fw.xe66、大小5132952
[70.420358] omap_hwmod:mu0_dsp1:_wait_target_disable 失败
[70.426258] OMAP-iommu 40d01000.MMU:40d01000.MMU:版本3.0
[70.432209] OMAP-iommu 40d020.MMU:40d020.MMU:版本3.0
[70.446300] remoteproc2:错误的地址 da 0x40300000 mem 0x1d20
[70.451924] remoteproc2:无法加载程序段:-22
应用描述:
===========================
我已采用 TI 提供的大数据 IPC 示例。 我尝试在中使用此功能
我的项目。 该项目需要使用所有其他标准驱动程序
使用 PDK (i2c、UART、GPIO、osal)以及 am572x 电路板初始化
也是如此。 由于这是一个使用 cmem 的 IPC 示例、因此有一个如所示的资源表
好的。 我的应用具有典型的电路板初始化函数:
===========================
board_initCfg boardCfg;
boardCfg = Board_init_PINMUX_CONFIG |
Board_init_module_clock |
Board_init_uart_stdio;
board_init (boardCfg);
===========================
根据中的 TI PDK 文档
processors.wiki.ti.com/.../Processor_SDK_RTOS_Board_Support:
IO 延迟设置期间的代码/数据/堆栈必须位于本地内部存储器内-
特别是 OCM_RAM1。
因此、我对工程 cfg 文件进行了以下添加:
Program.sectMap["BOARD_IO_DELAY_DATA"]="OCMC_RAM1";
Program.sectMap["BOARD_IO_DELAY_CODE"]="OCMC_RAM1";
请注意、OCMC_RAM1位于地址:0x40300000。 Board_IO_DELAY_DATA 和
Board_IO_DELAY_CODE 成为需要分配/放置的程序段
在使用加载 DSP 固件(elf 文件)期间存储器中的某个位置
由 Linux 内核提供的 Remoteproc。 函数 rproc_elf_load_sires 读取
ELF 文件、对于每个段、尝试对对应的内核地址进行格式访问
使用 rproc_da_to_va 的器件地址。 此函数查找资源
执行此任务的表。 请注意,资源表没有任何条目
对于 OCMC_RAM1、因此出现了 rproc_elf_load_segments 错误。
那么、我如何解决这个问题呢? 我尝试向资源中添加 DEV_MEM 条目
以便 rproc_da_to_va 查找此 OCMC_RAM1地址、但该地址不起作用。
cfg 文件中没有 Board_IO_DELAY*段也不起作用。
当然,我不是第一个遇到这一问题的人。 看起来就像这里
我可能缺少的东西。 我们非常感谢您的任何帮助