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.

[参考译文] TDA4VL-Q1:如何在 Linux uboot &内核中配置4GB 的 DDR 大小?

Guru**** 2539500 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1220001/tda4vl-q1-how-to-config-ddr-size-of-4gb-in-linux-uboot-kernel

器件型号:TDA4VL-Q1

您好、专家:

  在最近的 TDA4项目中、我们的硬件的 DDR 大小为4GB、 我们默认配置了2GB。

   如何在 Linux uboot 和内核中配置4GB 的 DDR 大小?

我尝试将其配置为 uboot 代码、如下所示:

# u-boot/board/ti/j721s2/evm.c

int  dram_init_banksize (void)
{
  /*组0声明 DDR 低位区域中可用的存储器(2GB)*/
   gd->bd->bi_dra[0].start = CONFIG_SYS_SDRAM_BASE 
   gd->bd->bi_dram [0].size = 0x80000000 
   gd->ram_size =  0x80000000

#ifdef  config_phys_64位
  /*组1声明 DDR 高区(2GB)中可用的存储器*/
   gd->bd->bi_dram [1].start =  CONFIG_SYS_SDRAM_BASE1
   gd->bd->bi_dram [1].size = 0x80000000 
   gd->ram_size =  0x100000000

#endif

   返回 0
int  dram_init (void)
{
#ifdef  config_phys_64位
  /* 2GB */
   gd->ram_size =  0x100000000
#else
   gd->ram_size =  0x80000000
#endif

   返回 0
# u-boot/arch/arm/dts/common.dtsi
内存@100000000 {
    device_type = "存储器"
     /* 4 GB RAM */
    REG =<0x00 0x80000000   0x00 0x80000000> 
       <0x08  0x80000000  0x00 0x80000000> 
  };
 我尝试按如下方式将其配置到内核代码中:
内存@880000000 {
    device_type = "存储器"
     /* 4 GB RAM */
    REG =<0x00 0x80000000   0x00 0x80000000> 
       <0x08  0x80000000  0x00 0x80000000> 
  };
但当我启动电路板时:
[3.609330] CMA:CMA_alloc:Alloc 失败,请求大小:12页,顺序:-16
[ 3.615866] mmc0:已启用命令队列引擎
[ 3.620309] mmc0:地址0001上的新 HS400 MMC 卡
[ 3.625593] mmcblk0:mmc0:0001 CJUD4R 59.6 GiB
[ 3.630201] mmcblk0boot0:mmc0:0001 CJUD4R 分区1 31.9 MIB
[ 3.636200] mmcblk0boot1:mmc0:0001 CJUD4R 分区2 31.9 MIB
[ 3.642228] mmcblk0rpmb:mmc0:0001 CJUT4R 分区3 4.00 MiB、chardev (234:0)
[ 3.651367] mmcblk0:p1 p2 p3
[ 3.783564] CMA:CMA_alloc:Alloc 失败,请求大小:2页,顺序:-16
[ 3.999445] CMA:CMA_ALLOC: Alloc 失败,请求大小:2页,顺序:-16
[4.019756] CMA:CMA_ALLOC: Alloc 失败,请求大小:17页,顺序:-16
[ 4.053112] CMA:CMA_ALLOC: Alloc 失败,请求大小:16页,顺序:-16
如何配置它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您正在使用哪个 SDK 版本? 您是否正在使用 vision_apps?

    此致、

    基尔西

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

    Keerthy、您好!

    SDK 版本:8.5.0

    我们不使用 vision_apps。

    此致。

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

    e2e.ti.com/.../log_5F00_4.txt

    这是我们的启动日志、它有以下错误:

    [ 0.000000]错误:进程交换器 PFN:80001中的页面状态错误
    [ 0.000000][调试] page_poisoned= 0
    [ 0.000000][调试]映射= PAGE_MAPPING (PAGE);
    [ 0.000000] PAGE:(__ptrval___) refcount:0 mapcount:1映射:000000000000索引:0x0 PFn:0x80001
    [ 0.000000]标志:0x0 ()
    [ 0.000000] RAW:0000000000000000 000000000000 000000000000 0000000000000000 000000000000
    [ 0.000000] RAW:0000000000000000 000000000000 000000000000 0000000000000000 000000000000
    [ 0.000000]页面已转储,原因是:非零映射计数
    [ 0.000000]没有可用的页面扩展名。
    [ 0.000000]链接的模块:
    [ 0.000000] CPU:0 PID:0 Comm:swapper not damised 5.10.120-gf4ee2344df47-dDirty #36
    [ 0.000000]硬件名称:ADC500-B0采样(DT)
    [ 0.000000]呼叫跟踪:
    [ 0.000000] dump_backtrace+0x0/0x1a0
    [ 0.000000] show_stack+0x18/0x28
    [ 0.000000] dump_stack+0xd0/0x12c
    [ 0.000000] BAD_PAGE+0x110/0x118
    [ 0.000000] CHECK_FREE_PAGE_BAD+0x7c/0x88
    [ 0.000000]__free_pages_ok+0x3ec/0x410
    [ 0.000000]_FREE_PAGES_CORE+0xbc/0xd0
    [ 0.000000] memblock_free_pages+0x14/0x20
    [ 0.000000] memblock_free_all+0x16c/0x24c
    [ 0.000000] mem_init+0x4c/0x60
    [ 0.000000] start_kernel+0x290/0x4c8
    [ 0.000000]由于内核故障而禁用锁定调试

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

    您好!

    您能否在 ${PSDKLA}/board-support/u-boot-2021.01 +gitAUTOINC+62a9e51344-g62a9e51344

    e2e.ti.com/.../DDR_5F00_4GB_5F00_Uboot.patch

    应用此补丁后、构建 u-boot 二进制文件并将其复制到引导分区、如下所示

    cd ${PSDKLA}
    make u-boot_clean
    make u-boot
    
    sudo cp board-support/k3-image-gen-2022.01/tiboot3.bin /media/nikhil/BOOT/tiboot3.bin
    sudo cp board-support/u-boot_build/a72/tispl.bin /media/nikhil/BOOT/tispl.bin
    sudo cp board-support/u-boot_build/a72/u-boot.img /media/nikhil/BOOT/u-boot.img

    用此文件启动 EVM、您应该会获得4GB DDR、而没有 Linux 崩溃。

    您可以测试一下吗?

    此致、

    尼基尔

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

    是的、我们 进行了测试。 但  Linux 仍然崩溃。

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

    u 意味着我们只需要修改 uboot?  

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

    您好!

    请删除 Linux 内核中的更改。 我们必须仅为 DDR 更改修改 u-boot。 Linux 应通过相同的方式对其进行探测。

    此致、

    尼基尔

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

    好的、但是如果我们不修改内核 DTS:

    内存@8000000
        device_type ="存储器"
        /* 2 GB RAM */
        REG =<0x00 0x80000000 0x00 0x80000000>
           <0x08 0x80000000 0x00 0x80000000>;
      };
     
    电路板无法引导 Linux 系统。这是崩溃 loge2e.ti.com/.../6371.crash_5F00_log.txt
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您的 uboot 日志似乎与 EVM 的日志不同

    U-Boot SPL 2021.01-g7a30174351 (2022年11月18日- 12:40:41 +0000)
    SYSFW ABI:3.1 (固件版本0x0008 '8.4.1--v08.04.01 (Jolly Jellyfi')
    SPL 初始堆栈用法:13472字节
    尝试从 SPI 引导
    在 ARM64内核上启动 ATF...

    注意:BL31:v2.6 (发布版本):v2.7-rc0-dirty
    公告:BL31建设时间:2022年10月3日19:33:47
    闪存:0字节
    MMC:MMC@4f80000:0
    正在从 FAT 中加载环境... 确定
    输入:串行@2880000
    输出:串行@2880000
    ERR:串行@2880000
    Cadence_SPI SPI@47040000:无法复位:-2
    正在初始化 SJA1105... 完成
    net:am65_cpsw_nuss_slave Ethernet@c200000:k3 CPSW:nuss_ver:0x6BA02102 cpsw_ver:0x6BA82102 ale_ver:0x00293904端口:1 MDIO_freq:1000000
    eth1:以太网@c200000
    按任意键以停止自动引导:0
    切换到分区#0,确定
    mmc0 (第0部分)是当前器件
    在器件0上找到 SD/MMC
    加载"boot.scr"失败
    在1ms 内读取1011个字节(987.3 KiB/s)

    DRAM:4 GiB  日志本身丢失了相同的内容。

    您是否有正确案例的日志? 除了我提供的补丁之外、u-boot 中是否有任何更改?

    此致、

    尼基尔

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

    您好!

    我们的 uboot 不是 原始 EVM uboot。 为了适应我们的产品、我们对 uboot 进行了一些调整。 但 在 DDR 模块中、只需将其更改为2G。  

    我使用 Yocto,重新编译了 tiboot3、tispl、uboot、内核、并找到了不同的日志:

    E/TC:1 0 std_entry_with_parg:234错误参数地址0x881bfd000

    e2e.ti.com/.../yocto_5F00_config_5F00_ddr_5F00_4.txt

    此致、

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

    您好、Rong、

    您是否有良好案例的日志? [/报价]

    您能否提供良好的案例日志?

    很抱歉、我不明白您在 u-boot 中所做的更改。

    通常、在 EVM u-boot 日志中、我们会显示 DDR 使用日志 DRAM:X GiB  其中 x =配置的 DDR 的大小。

    当您提供良好的事例日志时、是否也可以在控制台上启用此打印?

    此致、

    尼基尔

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

    尊敬的  Nikhil:

    好的、我将尝试找到它、并 启用此打印以提供正确的事例日志。  

    此致、

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

    我找到这个、它是启用的。

    但我不知道它为什么不能打印。

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

    您好!

    在同一个文件中、您看到了以下内容吗?

    U_BOOT_CMD (
       meminfo、   3、   1、   do_mem_info、
       "显示存储器信息"、
       ""
    );

    此致、

    尼基尔

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

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

    尊敬的  Nikhil:

    我使用同一个 u-boot 运行另一个板、 获取 成功案例日志。  e2e.ti.com/.../u_2D00_boot_5F00_4gb.txt

    此致、

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

    您好!

    在这种情况下、您能否共享一个包含您的所有 u-boot 更改的补丁、该补丁可以直接应用于 SDK 以查看您所做的更改?

    此外、您是否有一个可以共享且 u-boot 和 Linux 正常工作的良好案例日志?

    此致、

    尼基尔

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

    您好!

    Tony 向您转发了 u-boot 补丁、 其中包含我们所有的 u-boot 更改。  

    此致、

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

    您好、Rong、

    我收到了 Tony 提供的补丁。

    您是否还可以共享一个很好的案例日志,且 u-boot 和 Linux 可以正常工作?

    如果有的话、您能否提供此信息?

    此致、

    尼基尔

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

    e2e.ti.com/.../normal_5F00_start_5F00_log.txt

    尊敬的  Nikhil:

    这使用2 GB DDR 的 正常事例日志。

    此致,

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

    您好、Rong、

    感谢您分享日志。

    我找到这个、它是启用的。

    [/报价]

    这用于命令行触发器(不适用于默认日志)

    DRAM:正在打印  显示 DRAM 配置 ()出现在结构中  init_sequence_f  在  ${PSDKLA}/board-support/u-boot-2021.01 +gitAUTOINC+7996ed51f1-g7996ed51f1/common/board_f.c

    您能否确认是否正在呼叫此号码?

    此外、共享的补丁适用于 EVM。 您能否确认是否对设备树进行了修改?  

    使用适合的 Linux 内核时、您是否可以将补丁中的更改附加到 u-boot 上并对其进行测试? (即、在 u-boot 上有良好的 Linux 内核+补丁更改)。 您觉得这里有问题吗?

    您也可以在 u-boot 处停止并执行命令" Bdinfo 餐厅 "  以了解有关 DRAM 大小的信息。 您能否执行此操作并将应用补丁的日志发送给我?

    此致、

    尼基尔

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

    尊敬的 Nikhil:

       我们使用 DDR Excel 工具解决了它。
      原因是 DDR 配置不正确。

    谢谢、此致。