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/AM5728:无法使用 L1D SRAM 中的堆引导 DSP

Guru**** 2553620 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/623110/rtos-am5728-unable-to-boot-dsp-with-heap-in-l1d-sram

器件型号:AM5728

工具/软件:TI-RTOS

您好!

我正在使用具有处理器 SDK v04.00.04的 am5728 EVM。 我正在尝试在 L1D SRAM 中分配堆、但 Remoteproc 无法启动:

[7.175438]   remoteproc remoteproc2:错误的地址 da 0xf00000 mem 0x2000
[7.187770]   remoteproc remoteproc2:无法加载程序段:-22

我使用了 CONFIG_Bld:

var build = xdc.useModule('xdc.bld.BuildEnvironment');

var ExtMemMapDsp_EXT_code ={
名称:"EXT_CODE"、
基地址:0x95000000、
Len:0x00800000、
太空:"代码"、
访问:"rwx"
};

var ExtMemMapDsp_EXT_DATA ={
名称:"EXT_DATA"、
基地址:0x95800000、
Len:0x03000000、
太空:"数据"、
访问:"RW"
};

Build.platformTable["ti.platforms.evmAM572X:dsp1"]=
Build.platformTable["ti.platforms.evmAM572X:dsp2"]={

externalMemoryMap:[
["EXT_CODE"、ExtMemMapDsp_EXT_CODE ]、
["EXT_DATA"、ExtMemMapDsp_EXT_DATA]
]、
代码内存:"EXT_CODE"、
dataMemory:"EXT_DATA"、
stackMemory:"EXT_DATA"、
L1DMode:"16K"

}; 

然后编辑.cfg 文件:

var l1DHeapParams = new HeapMem.Params ();
l1DHeapParams.size = 0x2000;
l1DHeapParams.sectionName ="l1dhap";
Program.global.l1DHeap = HeapMem.create (l1DHeapParams);
Program.sectMap["l1dheap"]="L1DSRAM";

编译未抛出任何错误、.map 文件似乎正常:
       名称           源   长度     使用    未使用  的属性   填充
------------  ----  ------  ----  ----  --------  
 L2SRAM               00800000  00040000 00038000 00008000 RW X
 L1DSRAM              00f00000  00004000 00002000 00002000 RW  
 OCMC_RAM1            40300000  00080000 00000000 00080000 RW X
 OCMC_RAM2            40400000  00100000 00000000 00100000 RW X
 OCMC_RAM3            40500000  00100000 00000000 00100000 RW X
 EXT_CODE             95000000  00800000 00066784 0079987c RW X
 EXT_DATA             95800000  03000000 0038f556 02c70aaa RW  


我是否错过了配置 L1D SRAM 的步骤? 如果我将该部分更改为 L2SRAM、一切似乎都正常。

谢谢、
Tonny

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

    在 DSP RTOS 版本中、如果您查看 Platform.XDC 中 BIOS_6_46_05_55\packages/ti\platforms\evmAM572X 中 DSP1和 DSP2的平台定义

    L1D 和 L2D 配置为高速缓存、L2配置为128K 高速缓存、其他256KB 段配置为代码/数据。 您n`t 需要在平台定义中将 L1D 和 L1P 设置为0K、以便 RTOS 应用程序不会将 L1配置为高速缓存。

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

    您好、Rahul、

    感谢你的答复。 我不打算将整个 L1D 用作 RAM。 正如我在原始帖子中所示、我设置了:

    l1DMode: "16k"

    将 L1D 拆分为16k 高速缓存和16k RAM。 我给出的链接器存储器映射还表明段设置正确。  请注意、如果我没有配置 L1DMode、链接不会产生任何错误。

    我们在达芬奇 dm6443、C6746和 c648中使用了这种拆分技术。 这是我第一次尝试 c66x 和 BIOS6。 从读取平台文件的过程中、我假设支持灵活的 ram/cache 拆分。 这种架构不是这样吗? 或者我是否错过了其他一些配置?

    此致、

    Tonny

    PS:L1DMode 设置为0K 时、我也遇到了相同的问题。 这可能是 Remoteproc 问题吗?

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

    C66x 架构支持与您所介绍的其他 DSP 器件相同的 RAM /高速缓存分区功能、但在操作系统中执行此操作的方式可能与在 DSPBIOS 中执行 BIOS6不同。 存储器配置由 RTSC 平台定义或使用 linker.xdt 提供  

    我不知道任何 remoteproc 问题、即 ARM 无法将代码放入 DSP L1D、但我需要与 remoteproc 开发人员联系以确认该问题。

    此致、

    Rahul

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

    事实证明、这可能是当前 Processor SDK Linux 版本中的 Remoteproc 问题。 开发人员最近提交了此问题的补丁、您可以在此处找到:
    git.ti.com/.../

    希望这对您有所帮助。

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

    谢谢! 下一个处理器 SDK 版本是否有日期?

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

    将跟踪下一个处理器 SDK Linux 发布日期、该日期将在本月末。 但是、我在内部检查、当为2017.04 Linux 内核版本创建此补丁时、此补丁是否会与 SDK 版本集成、以便在 Processor SDK Linux 4.01中将其移植回 Linux 版本。

    我将在下午与团队内部讨论这一问题后在这里发布最新消息。

    此致、
    Rahul