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/TDA2PXEVM:Lisa 和 DMM EMIF 寄存器配置、每个 EMIF 为2GB (Tolal 4GB DDR3)

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/798350/rtos-tda2pxevm-lisa-and-dmm-emif-register-configuration-for-2gb-per-emif-tolal-4gb-ddr3

器件型号:TDA2PXEVM
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

我们在基于 Tda2px EVM C 修订版的定制硬件上使用 VSDK3.03源代码。

在这里、我们使用4GB Micron DDR3。 为此,我们配置了 Lisa 和 DMM EMIF 寄存器,如下所述:

TI_components / drivers/pdk_01_09_00_17/packages/ti/boot/sbl_auto/sbl_utils/src/tda2xxsbl_utils_tda2px_DDR_config.c

 

#IF (TDA2XX_EMIF_MODE = SBLLIB_DUAL_EMIF_2x1GB)

   {

 

       SBLLibPrintf (SBLLIB_TRACE_LEVEL_IMP_INFO、

                    "      两个 EMIF 各为1GB (总计= 2GB)\n");

 

       /* ma_lisa_map_i */

       HW_WR_REG32 (SOC_MA_MPU_CONF_REGS_BASE + LSA_MAP_0、0x80700200U);

       HW_WR_REG32 (SOC_MA_MPU_CONF_REGS_BASE + LSA_MAP_1、0xC0700100U);

       /* DMM_LISA_MAP_I */

       HW_WR_REG32 (SOC_DMM_CONF_REGS_BASE + LSA_MAP_0、0x80700200U);

       HW_WR_REG32 (SOC_DMM_CONF_REGS_BASE + LSA_MAP_1、0xC0700100U);

 

   }

#endif

 

我们知道 SysBios 对每个 EMIF 有1GB DDR 大小限制,因此,如果我们在总共4GB DDR 大小的情况下为每个 EMIF 配置2GB,是否有任何意义?

 

有哪些优点/缺点,如果我们在每个 EMIF 上配置1GB DDR,即使我们在每个 EMIF 上提供2GB DDR,也有哪些优点/缺点?

 

我们是否可以像 LISA_MAP_0–>EMIF2和+ LISA_MAP_1 -> EMIF1那样进行配置,此顺序会产生任何影响?

 

在 MA_LISA_MAP 和 DMM_LISA_MAP 中配置交错式 LISA 映射有什么优势?

它是否会影响性能?

此致

Raj

 

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

    与非交错相比、交错可提供更好的性能。
    有关详细说明、请参阅本应用手册的第18章: www.ti.com/.../sprac21.pdf
    换用顺序也不会产生任何影响。

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

    感谢您的回复。

    如果我们在每个 EMIF 上配置1GB DDR,即使我们在每个 EMIF 上提供2GB DDR3 (总共4GB DDR3大小),是否有任何缺点或问题?

    VSDK3.06是否支持每个 EMIF 2GB?

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

    没有缺点。 可用的存储器空间将会减少、换句话说、某些存储器将保持未使用状态。

    每个 EMIF 2 GB 是 Lisa 映射设置,由硬件支持。
    默认情况下、每个 EMIF 没有任何2GB 的存储器映射。

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

    我的理解是,即使硬件支持每个 EMIF 2GB,SYBIOS 支持每个 EMIF 高达1GB,因此总共2GB。

    这是正确的吗?

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

    我建议您向系统架构师咨询您的用例的内存要求。
    在 M4上、SYSBIOS 仅支持 AMmu、而不支持 L2 MMU、因此您最多可以拥有1 GB DDR。
    在 A15上、您可以映射高达4 GB 的 DDR。

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

    关于用例存储器要求、我们一定会与系统架构师联系

    我们的问题是 SysBIOS 是否可以支持每个 EMIF 2GB?
    如果支持以下配置:
    情况1:交错式?
    情况2:非交错?

    请就此提供您的回复。

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

    正如我已经解释过的、这不是 SYSBIOS 约束。
    您需要在 SBL 中设置 LISA 映射寄存器。
    您可以选择交错和非交错。

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

    我们尝试将512MB BIOS 内存映射修改为2GB BIOS 内存映射(每个 EMIF 1GB)。 TDA2pX 硬件上安装了4GB DDR3、每个 EMIF 接口具有2GB DDR3。

    根据 VisionSDK_UserGuide_MemoryMap 文档参考,我们进行了以下更改:

    diff - git a/apps/build/tda2px/mem_segure_define_BIOS.xs b/apps/build/tda2px/mem_segure_BIOS.xs
    索引2c5fdd9..23ac426 100755
    -- a/apps/build/tda2px/mem_segure_define_BIOS.xs
    ++ b/apps/build/tda2px/mem_segure_define_BIOS.xs
    @@-18、7 +18、7 @@函数 getMemSegmentDefinition_external (内核)
    MB=KB*KB;

    DDR3_ADDR = 0x8000000;
    - DDR3_size = 512*MB;
    + DDR3_size = 2048*MB;

    /*
    *如果是 ECC_FFI _include、则为 DDR3_base_ADDR_1和 DDR3_base_size_1
    @@-27、7 +27、7 @@函数 getMemSegmentDefinition_external (内核)
    *如果此 ddr3_base_size_0发生更改、请更新 Ipu1_0.cfg
    *
    DDR3_BASE_ADDR_0 = DDR3_ADDR;
    - DDR3_base_size_0 = 508*MB;
    + DDR3_base_size_0 = 1008*MB;

    /*第二个内存段的起始地址应为16MB 对齐。
    *此对齐是 EVE 使用的单个16MB 映射必须执行的操作
    @@-42,7+42,7 @@函数 getMemSegmentDefinition_external (内核)
    *位于的非缓存虚拟地址中
    * DDR3_base_ADDR_1 + 512*MB
    *
    - DDR3_BASE_ADDR_1 = ddr3_base_ADDR_1_512*MB;
    + /* DDR3_base_ADDR_1 = ddr3_base_ADDR_1_512*MB;*/


    DSP1_L2_SRAM_ADDR = 0x40800000;
    diff --git a/apps/configs/tda2px.evm_BIOS_all/cfg.mk b/apps/configs/tda2px.evm_BIOS_all/cfg.mk
    索引77c430c.a3119b3 100755
    -- a/apps/configs/tda2px.evm_BIOS_all/cfg.mk
    ++ b/apps/configs/tda2px_evm_BIOS_all/cfg.mk
    @@-31、7 + 31、8 @@ VSDK_Board_type=TDA2PX_EVM
    DUAL_A15_SMP_BIOS=否

    支持的值:DDR_MEM_512M
    -DDR_MEM=DDR_MEM_512M
    +DDR_MEM=DDR_MEM_1024M
    +EMIFMODE=DUAL_EMIF_2x1GB

    支持的值:ipu1_0 ipu1_1 a15_0无
    NDK_PROC_TO_USE=a15_0
    diff --git a/links_fW/src/rtos/BIOS_app_common/tda2px/a15_0/a15_0.cfg b/links_fW/src/rtos/BIOS_app_common/tda2px/a15_0/a15_0.cfg
    索引 efa9900..24ddfcb 100755
    --- a/links_fw/src/rtos/BIOS_app_common/tda2px/a15_0/a15_0.cfg
    ++ b/links_fW/src/rtos/BIOS_app_common/tda2px/a15_0/a15_0.cfg
    @@-146、7 +146、7 @@ attattrs1.sharedable = 2; //可共享
    attr1.Indattrx=2; //缓存,正常内存

    //为地址范围中的每个条目设置描述符
    -for (var i=0x8000000000;i < 0xA0000000;i = i + 0x00200000){
    +for (var i=0x8000000000;i < 0xC0000000;i = i + 0x00200000){
    //每个“块”描述符条目跨越2MB 地址范围
    Mmu.setSecondLevelDescMeta(i、i、attrs1);

    @@-160、9 +160、9 @@ attattrs2.sharedable = 2; //可共享
    attrs2.Indattrx = 0; //非高速缓存,正常内存

    //为地址范围中的每个条目设置描述符
    -for (var i=0xA0000000;i < 0xC0000000;i = i + 0x00200000){
    +for (var i=0xA0000000;i <= 0xFFFFFFFF;i = i + 0x00200000){
    //每个“块”描述符条目跨越2MB 地址范围
    - Mmu.setSecondLevelDescMeta(i、I-0x20000000、attrs2);
    + Mmu.setSecondLevelDescMeta(i、i、atttrs2);


    // NDK 数据包数据缓冲区的区域。
    diff --git a/links_fW/src/rtos/BIOS_app_common/tda2px/ipu1_0/Ammu1_bios.cfg b/links_fW/src/rtos/BIOS_app_common/tda2px/ipu1_0/Ammu1_bios.cfg
    索引 a9e30ed.a3a39fe 100755
    --- a/links_fw/src/rtos/BIOS_app_common/tda2px/ipu1_0/Ammu1_bios.cfg
    ++ b/links_fW/src/rtos/BIOS_app_common/tda2px/ipu1_0/Ammu1_bios.cfg
    @@-204、7 +204、7 @@函数 init()
    entry.pageEnabled = Ammu.Enable_Yes;
    entry.平 转换已启用= Ammu.Enable_Yes;
    entry.logicalAddress = 0xA0000000;
    - entry.translatedAddress = 0x8000000;
    + entry.translatedAddress = 0xA0000000;
    entry.size = Ammu.large_512M;
    entry.l1_cacheable = Ammu.cachepolicy_non_cacheable;
    entry.L1_LOADED = Ammu.PostedPolicy_non_posted;
    diff --git a/links_fW/src/rtos/BIOS_app_common/tda2px/ipu2/Ammu2_bios.cfg b/links_fW/src/rtos/BIOS_app_common/tda2px/ipu2/Ammu2_bios.cfg
    索引 f7ca5f8..60aa355 100755
    --- a/links_fw/src/rtos/BIOS_app_common/tda2px/ipu2/Ammu2_bios.cfg
    ++ b/links_fW/src/rtos/BIOS_app_common/tda2px/ipu2/Ammu2_bios.cfg
    @@-204、13 +204、13 @@函数 init()
    entry.pageEnabled = Ammu.Enable_Yes;
    entry.平 转换已启用= Ammu.Enable_Yes;
    entry.logicalAddress = 0xA0000000;
    - entry.translatedAddress = 0x8000000;
    + entry.translatedAddress = 0xA0000000;
    entry.size = Ammu.large_512M;
    entry.l1_cacheable = Ammu.cachepolicy_non_cacheable;
    entry.L1_LOADED = Ammu.PostedPolicy_non_posted;
    entry.L2_cacheable = Ammu.cachepolicy_non_cacheable;
    entry.L2_posted= Ammu.PostedPolicy_non_posted;
    -/*
    +
    VAR entry = Ammu.largePages [3];
    entry.pageEnabled = Ammu.Enable_Yes;
    entry.平 转换已启用= Ammu.Enable_Yes;
    @@-221,5 +221,5 @@函数 init()
    entry.L1_LOADED = Ammu.PostedPolicy_non_posted;
    entry.L2_cacheable = Ammu.cachepolicy_non_cacheable;
    entry.L2_posted= Ammu.PostedPolicy_non_posted;
    -*/
    -}
    \文件末尾没有换行符
    +
    +}
    diff --git a/links_fW/src/rtos/links_IPU/system/system_bsp_init.c b/links_fW/src/rtos/links_IPU/system/system_bsp_init.c
    索引0c05d90..c077f92 100644
    --- a/links_fW/src/rtos/links_IPU/system/system_bsp_init.c
    ++ b/links_fW/src/rtos/links_IPU/system/system_bsp_init.c
    @@-291、10 +291、10 @@ Int32 System_BspInit (空)
    vpsInitPrms.virtBaseAddr = 0x80000000U;
    vpsInitPrms.physBaseAddr = 0x80000000U;
    其他
    - vpsInitPrms.virtBaseAddr = 0xA0000000U;
    + vpsInitPrms.virtBaseAddr = 0x80000000U;
    vpsInitPrms.physBaseAddr = 0x80000000U;
    /*如果虚拟地址!=物理地址,则启用转换*/
    - vpsInitPrms.isAddrTransReq = true;
    + vpsInitPrms.isAddrTransReq = false;
    #endif
    VPS_printf ("系统:VPDMA 描述符内存地址转换"
    "已启用[0x%08x -> 0x%08x]\n"、
    --

    在 SBL 中,我们尝试了以下有关 DDR3交错和非交错 Lisa 映射配置的修改:

    DDR 交错配置:
    我们将配置交错式 DDR,如下所述:
    #IF (TDA2XX_EMIF_MODE = SBLLIB_DUAL_EMIF_2x1GB)

    …μ A
    #if 1.
    /* ma_lisa_map_i */
    HW_WR_REG32 (SOC_MA_MPU_CONF_REGS_BASE + LSA_MAP_0、0x80740300U);
    HW_WR_REG32 (SOC_MA_MPU_CONF_REGS_BASE + LSA_MAP_1、0x80740300U);
    /* DMM_LISA_MAP_I */
    HW_WR_REG32 (SOC_DMM_CONF_REGS_BASE + LSA_MAP_0、0x80740300U);
    HW_WR_REG32 (SOC_DMM_CONF_REGS_BASE + LSA_MAP_1、0x80740300U);
    #endif



    DDR 非交错配置:
    #IF (TDA2XX_EMIF_MODE = SBLLIB_DUAL_EMIF_2x1GB)

    …μ A
    #if 1.

    /* ma_lisa_map_i */
    HW_WR_REG32 (SOC_MA_MPU_CONF_REGS_BASE + LSA_MAP_0、0x80600200U);
    HW_WR_REG32 (SOC_MA_MPU_CONF_REGS_BASE + LSA_MAP_1、0xC0600100U);
    /* DMM_LISA_MAP_I */
    HW_WR_REG32 (SOC_DMM_CONF_REGS_BASE + LSA_MAP_0、0x80600200U);
    HW_WR_REG32 (SOC_DMM_CONF_REGS_BASE + LSA_MAP_1、0xC0600100U);
    #endif

    DDR 时序参数-
    目前、我们使用默认代码中可用的时序参数。


    已成功加载包含上述更改的 SBL 和 appimage。


    是否可以检查上述配置是否正常?

    尤其是 a15、Ammu1和 Ammu2 cfg 文件
    以下更改是否会导致任何重叠?
    G:

    //为地址范围中的每个条目设置描述符
    -for (var i=0x8000000000;i < 0xA0000000;i = i + 0x00200000){
    +for (var i=0x8000000000;i < 0xC0000000;i = i + 0x00200000){
    //每个“块”描述符条目跨越2MB 地址范围
    Mmu.setSecondLevelDescMeta(i、i、attrs1);

    @@-160、9 +160、9 @@ attattrs2.sharedable = 2; //可共享
    attrs2.Indattrx = 0; //非高速缓存,正常内存

    //为地址范围中的每个条目设置描述符
    -for (var i=0xA0000000;i < 0xC0000000;i = i + 0x00200000){
    +for (var i=0xA0000000;i <= 0xFFFFFFFF;i = i + 0x00200000){
    //每个“块”描述符条目跨越2MB 地址范围
    - Mmu.setSecondLevelDescMeta(i、I-0x20000000、attrs2);
    + Mmu.setSecondLevelDescMeta(i、i、atttrs2);


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

    有多个主题、我回答了类似的问题。
    您能检查一下吗?

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

    感谢你的答复。

    根据您的意见,我尝试在下面提到的 e2e 链接中找到信息
    e2e.ti.com/.../791877
    e2e.ti.com/.../2925658
    e2e.ti.com/.../2922336

    但不幸的是,我没有得到相关信息。

    在这里、我尝试找到对于 a15_0、ipu1_0 (Ammu1)和 ipu2 (Ammu2)内核、对于1GB 和2GB BIOS 内存映射、什么是缓存和非缓存内存的有效寻址范围。

    请告诉我您宝贵的意见或特定于帖子的链接、我错过了这些链接。

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

    您可以将0x8000_0000到0x9FFF_FFFF 之间的区域设置为缓存、将0xA000_0000到0xBFFF_FFFF 之间的区域设置为非缓存。

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

    您是否仍面临此问题?

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

    您好、Rishabh、

    感谢您的参与。

    根据您的输入、我已经尝试在下面提到 TDA2px 的2GB BIOS 内存映射的缓存和非缓存地址范围

    将缓存区从0x8000_0000地址为0x9FFF_FFFF -512 MB



    将区域从0xA000_0000地址为0xBFFF_FFFF、作为非缓存的-512-MB 地址

    工作正常。


    默认情况下、512 MB BIOS 内存、缓存地址区域从0x8000_0000配置为0xA0000000、非缓存区域从0xA000_0000配置为0xC0000000。

    在这里,我发现,我们为上述两种情况配置了相同的512 MB 大小的缓存和非缓存内存。

     对于缓存 和非缓存地址范围配置,BIOS 内存映射的总大小(2GB/1GB/512MB)是否有任何依赖性?



    此致
    Raj

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

    有些特定的共享区域需要不进行缓存。
    您能否参阅 processor_sdk_vision_03_06_00_00\vision_sdk\apps\build\tda2px\mem_seg_defination_BIOS.xs 以了解详细信息?

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

    未缓存的段包括:

    SR0_ADDR = DDR3_base_ADDR_1;
    REMOLE_LOG_ADDR = SR0_ADDR + SR0_SIZE;
    LINK_STATS_ADDR =远程日志 ADDR + REMOLE_LOG_SIZE;
    SYSTEM_IPC_SHM_ADDR = LINK_STATS_ADDR + LINK_STATS_SIZE;
    HDVPSS_DESC_ADDR = SYSTEM_IPC_SHM_ADDR + SYSTEM_IPC_SHM_SIZE;
    OPENVX_SHM_ADDR = HDVPSS_DESC_ADDR + HDVPSS_DESC_SIZE;
    

    此致、

    Rishabh

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

    您好、Rishabh、

    感谢您的支持。

    需要您的帮助。您可以查看随附的补丁,我创建了该补丁,将 BIOS 内存映射从默认的512MB 修改为2GB

    e2e.ti.com/.../0001_2D00_DDR3_2D00_interleaving_2D00_mode_2D00_enabled.patch.txte2e.ti.com/.../0001_2D00_Modify_2D00_512MB_2D00_Bios_2D00_Memory_2D00_map_2D00_to_2D00_2GB_2D00_Bios_2D00_Memory_2D00_map.patch.txt

     。

    请告诉我您 的宝贵意见。

    此致

    Raj

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

    Lisa 地图更改看起来不错。
    需要尝试 BIOS 内存映射更改、以确保一切正常、在审阅时看起来正常。
    您是否面临任何问题?

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

    您好、Rishabh、

    感谢您的支持。

    否,到目前为止,我在基本测试中没有发现任何问题。

    我们将在不同的内核上测试更多的用例并告知您。

    此致
    Raj

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

    好的。 我要关闭此主题。
    请将相应帖子标记为"这已解决了我的问题"。

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

    完成