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.

[参考译文] Linux/DRA745:如何配置具有3GB DDR 的 DRA745?

Guru**** 2539500 points
Other Parts Discussed in Thread: DRA745

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/686907/linux-dra745-how-to-config-dra745-with-3gb-ddr

器件型号:DRA745

工具/软件:Linux

我有带3GB DDR 的 DRA745 SoC 定制板。

存储器布局是  

EMIF 1:1GB x 2.

EMIF 2:512MB x 2.

静态常量结构 DMM_LISA 映射寄存器 LISA 映射_dra7_3GB ={

.dm_lisa_map_0 = 0x00000000、
.dm_lisa_map_1 = 0x80700100、  // EMIF-1在 0x8000_0000处拥有2GB 的起始地址
.dm_lisa_map_2 = 0x??600280、 // EMIF-2 SYS_ADDR 起始地址位于 0x1_0000_0000超出范围???????
.dm_lisa_map_3 = 0xFF020100、
.in_ma_present = 0x1
};

如何配置 EMIF-2 sys_addr 字段?????

这是非常多的。

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

    有人能给我指路吗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我想知道您是否有机会在 www.ti.com/.../spraca1.pdf 上参考此文档
    另请参阅该文档中提到的 EMIF 配置工具。

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

    您好、Somnath、
    您的建议。
    我已经参考了这个文档和 EMIF 配置工具。

    在当前、我只能使用 EMIF-1 (2GB)或仅使用 EMIF-2 (1GB)、这意味着 DDR 计时参数是正确的。

    但是、当我同时使用 EMIF-1和 EMIF-2时、我会遇到一些问题。

    下面是我的 DMM_LISA_MAP 寄存器设置。
    ===========================================================================================================================
    静态常量结构 DMM_LISA 映射寄存器 LISA 映射_dra7_3GB ={

    .dm_lisa_map_0 = 0x80600200、
    .dm_lisa_map_1 = 0xC0700120、
    .dm_lisa_map_2 = 0x00000000、
    .dm_lisa_map_3 = 0x00000000、
    .in_ma_present = 0x1

    };


    使用此设置可以成功引导、但当我执行大于1800M 的内存测试时、它将会崩溃。
    ===========================================================================================================================
    root@dra7xx-EVM:免费提供~#
             共计     免费使用                提供高速缓存/高速缓存
    内存:  3104784   23420   2984596     9716      96768      3038336
    交换:0 0 0
    root@dra7xx-EVM:~# memtester 2500M 1.
    memtester 版本4.3.0 (32位)
    版权所有(C) 2001-2012 Charles Cazabon。
    根据 GNU 通用公共许可证版本2 (仅限)许可。

    页面大小为4096
    pagesizeemask 是0xfff000
    需要2500MB (2621440000字节)
    获取2500MB (2621440000字节)、尝试 mlock ...[ 36.607089]进程787 (false)将 RLIMIT_CORE 设置为1
    [36.612348]中止内核
    [36.615795]错误:RSS 计数器状态错误 MM:edf30c40 idx:0 val:98
    [36.621794]错误:RSS 计数器状态错误 MM:edf30c40 idx:1 val:7
    [37.104010] request_module:runaway loop modprobe binfmt-0000
    [37.120341] request_module:runaway loop modprobe binfmt-0000
    [37.128183] Core dump to |/bin/false pipe failed (转储至|管道 失败)
    [37.137406] REQUEST_MODULE:失控环路调制探针 binfmt-0000
    [37.144546]错误:错误的 RSS 计数器状态 MM:ee851180 idx:0 val:144
    [37.150677]错误:错误的 RSS 计数器状态 MM:ee851180 idx:1 val:15
    [37.157037]转储至|/bin/false 管道失败
    [37.164678]错误:RSS 计数器状态错误 MM:ee850700 idx:0 val:367
    [37.170786]错误:RSS 计数器状态错误 MM:ee850700 idx:1 val:163
    [37.178293]错误:错误的 RSS 计数器状态 MM:ee851a40 idx:0 val:294
    [37.178908]错误:RSS 计数器状态错误 MM:ee7d5500 idx:0 val:155
    [37.178911]错误:RSS 计数器状态错误 MM:ee7d5500 idx:1 val:19
    [37.196421]错误:RSS 计数器状态错误 MM:ee851a40 idx:1 val:52
    [37.202842]内核严重错误-未同步:尝试终止初始化! exitcode=0x0000000b
    [37.202842]
    [37.212021] CPU1:停止
    [37.214748] CPU:1 PID:785 Comm:memtester 被污染:G O 4.4.4.45-g29f1bae-m脏#314
    [37.223570]硬件名称:通用 DRA74X (平展器件树)
    [37.229689]回溯:
    [37.232167][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
    [37.239768] r7:ee5a5df8 r6:20000193 r5:00000000 r4:c0970f8c
    [37.245493][ ](show_stack)从[ ](dump_stack+0x8c/0xa0)
    [37.252752][ ](dump_stack)从[ ](handle_ipi+0x184/0x198)
    [37.260177] r7:ee5a5df8 r6:00000000 r5:00000001 r4:c0941424
    [37.265896][ ](handle_ipi)从[ ](GIC_Handle_IRQ+0x78/0x7c)
    [37.273494] r7:fa212000 r6:ee5a5df8 r5:fa21200c r4:c09468dc
    [37.279215][ ](GIC_Handle_IRQ)、来自[ ](_IRQ_Svc+0x40/0x74)
    [37.286730]异常堆栈(0xee5a5df8至0xee5a5e40)
    [37.291802] 5de0:ee7d41f8 ecc3c168
    [37.300015] 5e00:00000000 00009b03 edd4ade0 a330c000 00001053 c09ce880 c0949744 ecc3c168
    [37.308229] 5e20:ffeee860 ee5a5e54 ee5a5e58 ee5a5e48 c00f3610 c06827e8 60000113 ffffff
    [37.316439] R9:ecc3c168 R8:c0949744 r7:ee5a5e2c R6:ffff R5:60000113 R4:c06827e8
    [37.324264][ ](_raW_SPIN_UNLOCK)从[ ](LESS_PAGE_MASK+0x314/0x4dc)
    [37.332740][ ](foll_page_mask)从[ ](__get_user_pages+b8/0x57c)
    [37.341123] R10:000888e9 R9:ee616600 R8:00001053 r7:ee5a4000 R6:ffe000 R5:a330c000
    [37.349028] R4:edd4ade0
    [37.351582][ ](__get_user_pages)来自[ ](populate_vma_page_range+0x78/0x80)
    [37.360488] R10:00000001 R9:ee7d41fc R8:ee7d41c0 r7:b6e23000 R6:00001042 R5:ee5a5f3c
    [37.36893] R4:00000000
    [37.370946][ ](populate_vma_page_range)从[ ](_mm_populate + 0xa4/0x140)
    [37.379678] R6:edd4ade0 R5:b6e23000 R4:1aa23000
    [37.384347][ ](_mm_populate)从[ ](do_mlock+0x120/0x158)
    [37.391859] R10:00000000 R9:00010000 R8:ffe000 r7:00002000 R6:00000000 R5:1aa23000
    [37.399763] R4:9c400000
    [37.402316][ ](do _mlock)从[ ](sys_mlock+0x14/0x18)
    [37.409306] R9:ee5a4000 R8:c000fbc4 r7:00000096 R6:1aa22008 R5:b6f274d0 R4:9c400000
    [37.417128][ ](sys_mlock)从[ ](RET_FAST_SYSCALL+0x0/0x34)
    [37.424737]--[结束内核紧急状态-未同步:尝试终止初始化! exitcode=0x0000000b
    [37.424737]
    ===========================================================================================================================================

    注意:Linux 内核配置- CONFIG_ARM_LPAE 和 CONFIG_IOMMU_IO_PGTABLE_LPAE 已启用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    存储器如何物理连接到 EMIF?
    我们应该实现到交错 EMIF 的偶数连接-在这种情况下、每个 EMIF 都应该连接到它(1GB + 512 MB)。
    您可以确保相同吗? 您是否看到该连接有任何问题?

    此致、
    Somnath
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    如果您能够取得进展并解决此问题,我们想知道这一点。

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

    此电路板 DDR 布局是客户设计。
    我具有与 U.相同的 qusion、EMIF-1和 EMIF-2应具有相同的 DDR 单元大小。

    EMIF 情况的事实是

    EMIF -1:MT41K512M16HA x 2 (512M x 16 x 2)
    EMIF - 2:MT41K256M16TW x 2 (256M x 16 x 2)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    在给定此 EMIF 连接的情况下、您可以在 EMIF 1和2上交错使用前2GB 的 DDR3。

    EMIF1 - 1GB (与 EMIF2交错)+ 1GB (非交错)
    EMIF2 - 1GB (与 EMIF1交错)+"此处无显示"

    您需要相应地配置 Lisa 寄存器。
    这有道理吗?

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

    您好、Somnath、

    我已在 EVM.c 中配置 Lisa 寄存器、如下所示

    .dm_lisa_map_0 = 0x00000000、

    .dm_lisa_map_1 = 0x00000000、

    .dm_lisa_map_2 = 0x80740300、

    .dm_lisa_map_3 = 0xFF020100、

    .in_ma_present = 0x1

    如何让系统知道内存映射是来自0x8000000的2G 大小、来自0x100000000的1G 大小? 我是否可以在内核命令中进行描述、例如=> e2e.ti.com/.../4857.uenv.txt  

    此致、

    肖恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有人可以帮助回答我的问题吗?

    此致、
    肖恩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我没有直接回答您的问题。 但我可以参阅一些代码和文档、以帮助您获得配置。 但愿这对您有所帮助。 如果没有、请随时返回。

    请查看/board/ti/dra7xx/evm.c
    请参阅1.5GB 内存的 Lisa 结构:

    静态常量结构 DMM_LISA 映射寄存器 LISA 映射_dra7_1536MB ={
    .dm_lisa_map_0 = 0x0、
    .dm_lisa_map_1 = 0x80640300、
    .dm_lisa_map_2 = 0xC0500220、
    .dm_lisa_map_3 = 0xFF020100、
    .in_ma_present = 0x1
    };

    上述结构定义了 EMIF1和 EMIF2上交叉存取的2x512 MB 内存。
    然后 EMIF2上还有512 MB 的内存、没有交错。

    请参阅 www.ti.com/.../sprui30e.pdf 中如下所示的部分

    15.2.3.5.1.1动态映射
    15.2.3.5.1.2地址映射
    15.2.4.2通过 Lisa 解决管理问题


    以下是上述存储器配置的 LISA 寄存器设置的说明。

    .dm_lisa_map_1 => 0x80640300 => 1000 0000 0110 0100 0000 0011 0000 0000b

    SYS_ADDR[31:24]=> 1000 0000 => 80 => DMM 系统段地址 MSB、用于视图映射(I)
    被保留[23]=> 0 => 0
    SYS_SIZE [22:20]=> 110 => 6 => 1 GiB 部分
    SDRC_CNTL[19:18]=> 01 => 1 => 128字节交错
    SDRC_ADDRSPC[17:16]=> 00 => 0 =>用于视图映射的 SDRAM 控制器地址空间(I)
    被保留[15:10]=> 0000 00 => 0
    SDRC_MAP[9:8]=> 11 => 3 =>映射到 EMIF 1和2 -交错
    SDRC_ADDR[7:0]=> 0000 0000 => 00 => SDRAM 控制器地址 MSB、用于视图映射(I)

    .dm_lisa_map_2 => 0xC0500220 => 1100 0000 0101 0000 0010 0010 0000b

    SYS_ADDR[31:24]=> 1100 0000 => C0 => DMM 系统段地址 MSB、用于视图映射(I)
    被保留[23]=> 0 => 0
    SYS_SIZE[22:20]=> 101 => 5 => 512 MIB 部分
    SDRC_CNTL[19:18]=> 00 => 0 =>无交错
    SDRC_ADDRSPC[17:16]=> 00 => 0 =>用于视图映射的 SDRAM 控制器地址空间(I)
    被保留[15:10]=> 0000 00 => 0
    SDRC_MAP[9:8]=> 10 => 2 =>仅映射到 EMIF2 (非交错)
    SDRC_ADDR[7:0]=> 0010 0000 => 20 =>用于视图映射(I)的 SDRAM 控制器地址 MSB

    我可以为您说的是、您需要定义两个 Lisa 部分
    (1)在两个 EMIF 上交叉存取2x1 GB
    (2) EMIF2上的1x1 GB 非交错。

    这是否有帮助?
    请随时返回。

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

    您好、Shawn、

    DMM 中的最大可配置大小为2GB。 只有 MPU 可以访问超过2GB 的存储器、并且 MPU 的扩展存储器映射是固定的(例如、无法通过 Lisa 寄存器进行配置)。

    由于您有3GB 可用空间、我建议在内存范围0x80000000 - 0xFFFFFFFF 内从 EMIF1和 EMIF2交错保留1GB 空间。 然后、您可以在地址0x200000000 - 0x23FFFFFFF (在启用 MPU 的 LPAE 功能后)访问 EMIF1的第二个1GB。

    因此、对于 Lisa 寄存器设置、应将其设置为以下设置。 (这会在存储器范围0x80000000 - 0xFFFFFFFF 内从 EMIF1和 EMIF2交错1GB)。

    静态常量结构 DMM_LISA 映射寄存器 LISA 映射_dra7_3GB ={    
       .dm_lisa_map_0 = 0x00000000、    
       .dm_lisa_map_1 = 0x00000000、    
       .dm_lisa_map_2 = 0x80740300、    
       .dm_lisa_map_3 = 0xFF020100、    
       .in_ma_present = 0x1    
    };

    在启用 LPAE 之前、MPU 将无法访问0x200000000处的扩展存储器。 您能否详细说明您使用的软件平台?

    谢谢、
    Kevin

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

    您好、Shawn、

    作为后续行动、我未收到您的回复、表明您使用的是我之前的回复中的相同 DMM 设置。

    如果您使用 u-boot、请检查"/board/ti/dra7xx/evm.c 内的函数"DRAM_init_banksize"、该函数声明了扩展存储器段。 您应设置以下内容:

    gD->bD->bi_dram[1].start = 0x200000000;
    gD->bD->bi_dram[1].size = 0x40000000;

    您还需要关闭在 u-boot 中启用的高内存交错。 为此、请注释掉"/arch/arm/cpu/armv7/omap-common/emif-common.c "内的以下代码行

    setbits_le32 (ma_priority、ma_HIMEM_interlease_UN_mask);

    如果您使用不同的软件或上述步骤无法解决问题、请告知我们。

    谢谢、
    Kevin

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

    非常感谢、这确实解决了我的问题。

    此致、
    肖恩