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.

如何修改DVR RDK/IPNC RDK Memory Map

Other Parts Discussed in Thread: SYSBIOS

1. 先请参考RDK里面的文档:DM81xx_DVR_RDK_Memory_Map.pdf或者IPNC_RDK_MemoryMapAnalysis.pdf。

2. 修改/mcfw/src_bios6/cfg/ti81xx下相关的.bld文件,注意所有memory size加起来需要等于系统里面的DDR的物理容量。

3. 如果修改了系统里DDR的系统容量,还需要修改DMM里面的DMM_LISA_MAP_0~DMM_LISA_MAP_3。

4. 如果要修改M3的AMMU映射,请修改文件/mcfw/src_bios6/cfg/ti81xx/AMMU_m3.cfg。

5. 如果要修改DSP的heap,请修改文件/mcfw/src_bios6/cfg/ti81xx/FC_RMAN_IRES_c6xdsp.cfg。

6. 如果要修改DSP的cache
    a. 请修改bld文件
    customMemoryMap:
    [
    ... (省略若干代码)
        ["DSP_L2_RAM", {
            comment: "DSP_L2_RAM",
            name: "DSP_L2_RAM",
            base: 0x10800000,
            len:  0x00020000   -->配置DSP L2为RAM的大小            
        }],
    ],
    l1PMode: "32k",
    l1DMode: "32k",
    l2Mode:  "128k"           -->配置DSP L2为Cache的大小。注意:L2 RAM + L2 cache的总容量要和DSP L2的大小一致
    };
    b. 修改DDR在DSP侧的cache状态:修改/mcfw/src_bios6/cfg/ti81xx/FC_RMAN_IRES_c6xdsp.cfg下面的相关内容。MAR具体信息请参考TMS320C674x DSP Cache User's Guide。
    var Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');
    /* Disable caching for HWspinlock addresses */
    Cache.MAR0_31    = 0x00000000;
    Cache.MAR32_63   = 0x00000000;
    /* Config/EDMA registers cache disabled */
    Cache.MAR64_95   = 0x00000000;
    Cache.MAR96_127  = 0x00000000;

    /* cache settings for 1st 512MB DDR */
    Cache.MAR128_159 = 0x0000FF00;

    /* cache settings for 2nd 512MB DDR */
    Cache.MAR160_191 = 0x0FFF0000;

    /* cache settings for 3rd 512MB DDR */
    Cache.MAR192_223 = 0x00000000;

    /* cache settings for 4th 512MB DDR */
    Cache.MAR224_255 = 0x00000000;    

7.如果要修改DSP BIOS相关段所在位置,请修改文件/mcfw/src_bios6/cfg/ti81xx/BIOS_m3video.cfg。例如下面的代码:

Program.sectMap[".bss:taskStackSection"]      = "DDR3_DSP";
Program.sectMap[".sysmem"]                    = "DDR3_DSP";
Program.sectMap["ti_sdo_ipc_init"]            = "DDR3_DSP";
Program.sectMap[".systemHeap"]                = "DDR3_DSP";  
Program.sectMap[".internalHeap"]              = "DSP_L2_RAM";

8. 如果修改了Linux使用的memory的大小,需要修改u-boot的环境变量bootargs里面的mem=?M的大小。

wik推荐
1. http://processors.wiki.ti.com/index.php/EZSDK_Memory_Map
该wiki很好的解释了DDR物理地址到DMM系统地址的一一映射或者是一对多(二)映射的配置。

2. http://processors.wiki.ti.com/index.php/TI814x-DDR3-Init-U-Boot#FAQ
DM814x仅使用一个EMIF的补丁文件

如有遗漏的地方,欢迎补充!