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.

[参考译文] DRA750:如何制作相同的 uboot FW 以支持具有相同 CPU 模块的2个不同 RAM 大小的定制板

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1173104/dra750-how-to-make-the-same-uboot-fw-to-support-2-different-ram-sized-custom-board-with-the-same-cpu-module

器件型号:DRA750
主题中讨论的其他器件:DRA752

您好、TI 专家、

我正在使用 DRA752 ES2.0的两个定制板进行设计、具有2个不同的 RAM 大小、但我不知道如何在同一 uboot FW 中区分两个不同的 RAM 大小的定制板。

软件(SDK)版本:u-boot:U-Boot SPL 2016.05 + Linux 内核:4.4.45

我检查 下面的函数 EMIF_GET_DMM_regs ()、  看起来就像使用 board_ti_get_EMIF_size ()可以 为 不同的 RAM 大小的定制板加载不同的 DMM_LISA_MAP_regs。

但我发现 board_ti_get_EMIF_SIZE ()始终返回0。 然后我来看看  board_ti_get_EMIF_size ()、 board_ti_get_emif1_size ()在 304行返回0。

我的问题是 为什么 board_ti_get_emif_size ()不起作用以及如何使它起作用?  

void emif_get_dmm_regs(const struct dmm_lisa_map_regs **dmm_lisa_regs)
{
    u64 ram_size;

    ram_size = board_ti_get_emif_size();

    switch (omap_revision()) {
    case DRA752_ES1_0:
    case DRA752_ES1_1:
    case DRA752_ES2_0:
        if (ram_size > CONFIG_MAX_MEM_MAPPED)
            *dmm_lisa_regs = &lisa_map_dra7_2GB;
        else
            *dmm_lisa_regs = &lisa_map_dra7_1536MB;
        break;
...
}

299 u64 __maybe_unused board_ti_get_emif1_size(void)
300 {
301     struct ti_common_eeprom *ep = TI_EEPROM_DATA;
302
303     if (ep->header != DRA7_EEPROM_HEADER_MAGIC)
304         return 0;
305
306     return ep->emif1_size;
307 }

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

    大家好、Kevin。

    我的意见。

    1.客户电路板的参考 EVB 原理图是什么?

    2. SDK 版本是什么? 请问您下载了哪个链接?

    似乎尝试在 EEPROM 中读取电路板(CPU)版本、但返回失败。

    您是否在客户电路板上安装 EEPROM?

    Gibbs

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

    更新、

    您需要知道来源 EVB EMIF 1或2设计。

    如果不遵循 EVB DDR 大小、您可以参考本文档。

    board_detect.h

    /**
     * board_ti_get_emif1_size() - Get size of the DDR on emif1 for TI EVMs
     *
     * Return: NULL if eeprom was'nt read or emif1_size is not available.
     */
    u64 board_ti_get_emif1_size(void);
    
    /**
     * board_ti_get_emif2_size() - Get size of the DDR on emif2 for TI EVMs
     *
     * Return: NULL if eeprom was'nt read or emif2_size is not available.
     */
    u64 board_ti_get_emif2_size(void);

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

    Kevin、

    更新、

    有关配置 EEPROM 的2.2和3.5.3节、请查看 EVB 表。

    https://www.ti.com/lit/pdf/sprui50

    如果您没有在客户电路板上安装 EEPROM、请"硬编码"填充此结构而不读取 EEPROM。

    2.如果您需要 DDR 芯片、请遵循预定线程、请先使用 EMIF 工具

    谢谢

    Gibbs