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/TMS320DM8147:DDR3配置

Guru**** 2589280 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/638177/linux-tms320dm8147-ddr3-configuration

器件型号:TMS320DM8147

工具/软件:Linux

您好!

我使用的 是4个 MT41K256M16TW 芯片、每个芯片为512MB。 我使用的是 DM8147处理器。

2个512MB 芯片,每个使用内存控制器0。 芯片选择0。 因此、1GB 通过芯片选择0连接到内存控制器0。

2个512MB 芯片使用内存控制器1芯片选择1。 因此、1G 字节通过芯片选择1连接到存储器控制器1。

我想检查需要配置哪些寄存器来支持上述2GB 配置。 在论坛上、我了解需要对 Lisa 寄存器进行编程。

我想找出 SDRC_ADDR 和 SYS_ADDR 位的正确值。 有4个 Lisa 寄存器。 我是否需要更新所有内容、因为我有4个512MByte 的芯片。

是否有人可以共享针对上述用例的经测试的 Lisa 寄存器配置。

是否足以更新 u-boot 或是否还需要为此更新内核?

感谢你的帮助。

 

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

    我没有直接可用的寄存器配置。 但是、我建议查看 DM812x/DM38X IPNCRDK 3.9源代码以了解类似配置。 (它们不相同、但有助于理解)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、ravikiran、

    我根据 RDK 进行了以下修改。

    #define PG2_1_DMM_LISA 映射__0 0x0
    #define PG2_1_DMM_LISA 映射__1 0x0
    #define PG2_1_DMM_LISA 映射__2 0x80640300
    #define PG2_1_DMM_LISA 映射___3 0xC0640320

    #define CONFIG_NR_DRAM_Banks 2. //我们有2组 DRAM */
    #define PHYS_DRAM_1 0x80000000 /* DRAM 组#1 */
    #define PHYS_DRAM_1_SIZE 0x40000000 /* 1024 MB */
    #define PHYS_DRAM_2 0xC0000000 /* DRAM Bank #2 */
    #define PHYS_DRAM_2_SIZE 0x40000000 /* 1024 MB */

    交错为128。 这是否意味着在每个芯片选择之后有一个128字节的空穴?

    在 Linux 中进行更改之后。 当我尝试使用 mem=1024M 或 mem=2048M 引导 Linux 时,内核中出现崩溃。 我正在使用2.6.37 DVR 内核。

    当我启动内核时、给出 mem=1024M 或 mem=2048M。 内核按如下 memblok_alloc 函数崩溃。 我拥有最小的文件系统、我的目的是在 Linux 中运行 memtester、以验证我的存储器时序是否正确。

    崩溃:

    [0.000000] tid81xx_reserve:###保留 DDR 区域@f1f00000
    [0.000000]保留大小= 52428800、位于0x0
    [0.000000] FB:为 VRAM 保留52428800字节 SDRAM
    [0.000000]内存策略:ECC 禁用、数据高速缓存写回
    [0.000000]内核严重错误-未同步:错误:无法在0x0以下分配0x1000字节。
    [0.000000]
    [0.000000]回溯:
    [0.000000][ ](dump_backtrace+0x0/0x110)从[ ](dump_stack+0x18/0x1c)
    [0.000000] R6:c079a6c8 R5:00000000 R4:c0d0f958 R3:60000193
    [0.000000][ ](dump_stack+0x0/0x1c)从[ ](紧急+ 0x5c/0x178)
    [0.000000][ ](紧急+0x0/0x178)从[ ](memblock_alloc_BASE+0x38/0x44)
    [0.000000] R3:00000000 R2:00001000 R1:b0000000 r0:c0c3eb20
    [0.000000] r7:c0d0ef34
    [0.000000][ ](memblock_alloc_BASE+0x0/0x44)从[ ](memblock_alloc+0x14/0x18)
    [0.000000] R5:c0d3627c R4:c0d362a0
    [0.000000][ ](memblock_alloc+0x0/0x18)、来自[ ](EARLY_ALLOC.clone.2+0x18/0x30)

    请提供建议。

    谢谢、
    Sriram
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    首先、您可以从 MLO 配置寄存器、然后检查是否可以从 u-boot 访问完整的 RAM。

    您可以使用"MD"命令来检查您的完整 RAM 是否已映射。