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.

dm8127 dsp算法处理为了运行速度如何开启cache



[c6xdsp ] pAlgObj->algMem.recBuf=0xb937f080
 [c6xdsp ] pAlgObj->algMem.size=0x2800000
用的40M空间 ,那么cache是如何打开
是不是修改FC_RMAN_IRES_c6xdsp.cfg
Cache.MAR128_159=0x0000FF00;
Cache.MAR128_159=0xFFFFF000;
  • 你好,

    MAR修改的是哪个部分DSP要被cache。

    如果你要修改DSP L2多少配置为cache,多少配置为L2,请修改bld文件的l2Mode。更多信息请参考:https://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/p/148099/535435#535435。

  • 我的DSP算法缓存是放在ALLOC,recBuf1 addr = 0xbc100000

    是属于var SR2_FRAME_BUFFER_SIZE      = 145*MB;  里面间,想开启DSP的cache.

    这个https://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/p/148099/535435#535435。跟DM8127 RDK3.5版本一样

    这个dspsubsys.xs找不到

     l2Mode:"128k"配置文件有好几地方不知道修哪个地方?


  • Lu,

    给你的论坛讨论是基于EZSDK,不是RDK,原理是一样的,代码是不同的。你应该修改的是bld文件,例如ipnc_mcfw\mcfw\src_bios6\cfg\ti814x\config_512M.bld.

  • 我有改过这个文件,我再试下,原来128k改为256k,

    make -s sys

    编译后还是出现

    js: "/usr/local/dm81xx/dm8127/Source/ti_tools/xdctools_3_24_03_33/packages/xdc/tools/Cmdr.xs", line 51: Error: xdc.tools.configuro: configuration failed due to earlier errors (status = 2); 'linker.cmd' deleted.
    make[3]: *** [xdc_configuro] Error 1
    make[2]: *** [apps] Error 2
    make[1]: *** [mcfw_bios6] Error 2
    make: *** [sys] Error 2

    是不是其他地方也要跟着修改

  • 我修改的地方ipnc_rdk/ipnc_mcfw/mcfw/src_bios6/cfg/ti814x/config_512M.bld

    Build.platformTable["ti.platforms.evmTI814X:plat"] =
    {

    ....

    l1PMode: "32k",
    l1DMode: "32k",
    l2Mode: "256k"/*128k*/
    };

  • Lu,

    bld文件里面还有定义L2 RAM大小的部分,如下。L2 cache+L2 RAM的大小不能超过256KB。请也看一下之前编译的DSP的map文件,看是否有代码放在了L2 RAM里面,如果是,你就不能把L2全部配置为cache。

            ["DSP_L2_RAM", {
                comment: "DSP_L2_RAM",
                name: "DSP_L2_RAM",
                base: 0x10800000,
                len:  0x00020000
            }],

  • 查ipnc_rdk_c6xdsp_release.xe674.map如下:

                   name                           origin        length           used         unused       attr    fill ----------------------  --------  ---------  --------  --------  ----  --------  

                  DSP_L2_RAM            10800000   00020000  00020000  00000000  RWIX

    这说明L2_RAM的大小128K全部被使用,那么只能l2Mode:  "128k“,是这个意思?

     

  • 请问更改下面,是什么意思,有人告诉,不知道对不对?
     
    Cache.MAR128_159=0x0000FF00;
    Cache.MAR128_159=0xFFFFF000
  • lu xinjian 说:

    查ipnc_rdk_c6xdsp_release.xe674.map如下:

                   name                           origin        length           used         unused       attr    fill ----------------------  --------  ---------  --------  --------  ----  --------  

                  DSP_L2_RAM            10800000   00020000  00020000  00000000  RWIX

    这说明L2_RAM的大小128K全部被使用,那么只能l2Mode:  "128k“,是这个意思?

     

    如果你继续看map下面的内容,你会发现这块内存都分配给了了DSP的internalHeap。

    而在BIOS_c6xdsp.cfg有下面的配置,你可以修改internalHeap放到DDR上(DDR3_DSP)。

    Program.sectMap[".internalHeap"]              = "DSP_L2_RAM";

  • lu xinjian 说:
    请问更改下面,是什么意思,有人告诉,不知道对不对?
     
    Cache.MAR128_159=0x0000FF00;
    Cache.MAR128_159=0xFFFFF000

    MAR的每个bit控制10MB memory空间控制是否cache。请阅读TMS320C674x DSP Megamodule Reference Guide里面的4.4.4 Memory Attribute Registers (MARn)章节。

  • 我根据你的意思更改了

    ipnc_rdk/ipnc_mcfw/mcfw/src_bios6/cfg/ti814x/BIOS_c6xdsp.cfg 而在BIOS_c6xdsp.cfg有下面的配置,你可以修改internalHeap放到DDR上(DDR3_DSP)。

    Program.sectMap[".systemHeap"]                = "DDR3_DSP"; 

    //Program.sectMap[".internalHeap"]              = "DSP_L2_RAM"; Program.sectMap[".internalHeap"]              = "DDR3_DSP";

    更改

    ipnc_rdk/ipnc_mcfw/mcfw/src_bios6/cfg/ti814x/config_512M.bld  

    Build.platformTable["ti.platforms.evmTI814X:plat"] = {  

     ....  

    l1PMode: "32k",

     l1DMode: "32k",

     l2Mode: "256k"/*128k*/

     };

    #make -s sys

    出现故障

    generating interfaces for package ipnc_rdk_configuro (because package/package.xdc.inc is older than package.xdc) ... configuring MAIN_APP_c6xdsp.xe674 from package/cfg/MAIN_APP_c6xdsp_pe674.cfg ... error: ti.platforms.evmTI814X.Platform: "/usr/local/dm81xx/dm8127/Source/ti_tools/xdctools_3_24_03_33/packages/xdc/platform/Utils.xs", line 365: ti.platforms.evmTI814X.Platform.Instance#0/customMemoryMap/'DSP_L2_RAM' : Memory object DSP_L2_RAM does not fit into any physical memory bank. js: "/usr/local/dm81xx/dm8127/Source/ti_tools/xdctools_3_24_03_33/packages/xdc/cfg/Main.xs", line 149: Error: Configuration failed! gmake: *** [package/cfg/MAIN_APP_c6xdsp_pe674.xdl] Error 1 js: "/usr/local/dm81xx/dm8127/Source/ti_tools/xdctools_3_24_03_33/packages/xdc/tools/Cmdr.xs", line 51: Error: xdc.tools.configuro: configuration failed due to earlier errors (status = 2); 'linker.cmd' deleted. make[3]: *** [xdc_configuro] Error 1

  • Lu,

    错误提示是“Memory object DSP_L2_RAM does not fit into any physical memory bank”,请问你是否有去掉下面的DSP_L2_RAM的配置,或者是把len该为0?

            ["DSP_L2_RAM", {
                comment: "DSP_L2_RAM",
                name: "DSP_L2_RAM",
                base: 0x10800000,
                len:  0x00020000
            }],

  • 原来没有把这块去掉,现在编译可以,多谢指点!

     

     

  • cache 空间是256k,但是DSP端一运行算法程序时就会出现死机,算法提供商说cache问题,不知什么知道算法是否因cache出现死机,有没有办知道算法用cache的大小?

     

  • 你好,

    算法供应商是否有DSP的测试代码可以运行的?你集成一下他们的测试代码是否能正常运行?算法供应商的memory分配使用和你的代码是否类似? 你们代码里DDR的cache的配置 (MAR)是否和算法供应商一致?

    你能否用仿真器对DSP的程序做一下调试?