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.

[参考译文] TDA4VM:调试 SPL 启动时遇到一些问题。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1496041/tda4vm-some-problems-encountered-during-debugging-spl-startup

器件型号:TDA4VM

工具/软件:

您好、

我想弄清楚如何在 SPL 启动期间加载 tispl.bin 和 u-boot.img。 为此,我阅读了以下文章:

TDA4VM:其中是 R5 SPL 源代码-处理器论坛-处理器- TI E2E 支持论坛

以下是基于 SPL 启动的 Linux 串行端口的日志:

e2e.ti.com/.../41330.log.txt

我找到了 board_init_r 和 spl_spl_fit 函数 Lad_Simple_。 函数 boot_from_devices 在函数 board.init_r 中调用、其中日志被打印:尝试从...引导

首先、我在 boot_from_devices 函数中添加了一个日志:

在主板端编译和启动 make all 和 make install 命令后、我找不到我添加的日志。 它们与我之前启动时的日志相同。 问题是什么?

此致、

Yang

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

    尊敬的 Yang:

    所有编译的二进制文件均位于:

    $SDK/board-support/ti-u-boot-2024.04+git/build/a72/tispl.bin
    $sdk/board-support/ti-u-boot-2024.04+git/build/a72/u-boot.img

    $SDK/board-support/ti-u-boot-2024.04+git/build/r5/tiboot3.bin

    您是否使用过上述位置的图像?

    - Keerthy

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

    您好、

    感谢您的回答、
    你能帮助我研究 spi_flash-read ()函数如何读取闪存数据吗?
    我添加了一些代码、但没有打印0x680000中的值:

    uint8_t *buf
    buf = malloc (0x40000);
    if (buf)
    !!!!!!!!!!!!!!!!!!!!!!("printf f-Data:无法分配缓冲区\n");
    } spi_flash_read(flash,0x680000,0x40000,buf);
    
    
     printf("!!!!!!!! 从 SPI 闪存读取的数据:\n");
    for (int i = 0i < 20i++)
    printf ("%02x "buf[i]);
    
    

    我使用 spi_flash-read()的方式是否有问题?

    此致、

    Yang

     

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

    Yang、

    您是否获得了添加的任何其他照片?

    U-Boot SPL 还会为运行的映像提供时间戳、您可以仔细确认这是否是您构建的映像。  

    此致、

    Keerthy  

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

    您好、
    是的、在电路板上运行的版本与我编译的版本相同、因为以下日志已成功打印出来:

    printf ("!!!!!!!! 从 SPI 闪存读取的数据:\n");

    但当我打印 buf 时,似乎没有数据,所有20个打印的数据都是00。
    当然、我已经在0x680000中写入了一些值。

    此致、

    Yang

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

    您好 Yang、

    您能否共享已添加的调试打印?

    此致、

    Keerthy  

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

    您好:

    负责的工程师目前不在办公室、直至下周。 请预计响应会延迟。

    此致、

    Christina

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

    您好、
    我可以问你什么时候可以答复吗? 你有一个特定的时间吗? 请尽快回复。 谢谢你。

    此致、

    Yang

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

    您好:

    Keerthy 不在办公室、但将于4月21日返回、因此请预计回复会延迟。

    谢谢。

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

    您好 Yang、

    最好遵循 U-Boot 源文件:

    CMD/sf.c

    这就是如何实现 U-Boot SF 命令。

    电路板示例(TDA4的不同型号、与您的电路板不同):

    SF 探针
    sf:检测到 s28hs512t、页面大小为256字节、擦除大小为256 KiB、总共为64 MiB

    查找非写入的 DDR 块:

    例如:

    md 0x81000000
    81000000: 00000000 00000000 00000000 00000000  ................
    81000010: 00000000 00000000 00000000 00000000  ................
    81000020: 00000000 00000000 00000000 00000000  ................
    81000030: 00000000 00000000 00000000 00000000  ................
    81000040: 00000000 00000000 00000000 00000000  ................
    81000050: 00000000 00000000 00000000 00000000  ................
    81000060: 00000000 00000000 00000000 00000000  ................
    81000070: 00000000 00000000 00000000 00000000  ................
    81000080: 00000000 00000000 00000000 00000000  ................
    81000090: 00000000 00000000 00000000 00000000  ................
    810000a0: 00000000 00000000 00000000 00000000  ................
    810000b0: 00000000 00000000 00000000 00000000  ................
    810000c0: 00000000 00000000 00000000 00000000  ................
    810000d0: 00000000 00000000 00000000 00000000  ................
    810000e0: 00000000 00000000 00000000 00000000  ................
    810000f0: 00000000 00000000 00000000 00000000  ................
    

    因此0x81000000都是0、并且没有写入任何合法值。

    现在、我使用 SF 读取功能将数据从闪存读取到0x81000000

    SF 读取0x8000000 0x0 0x10000
    器件0偏移0x0、大小为0x10000
    SF:65536字节@ 0x0读取:正常

    现在、我验证使用闪存读取写入的 DDR 内容:

     md 0x81000000                 
    81000000: e3078230 cb058230 010203a0 15140202  0...0...........
    81000010: b10bc732 8d96d810 77e67c06 4880dc3b  2........|.w;..H
    81000020: 300b775f 2a09060d f7864886 0d01010d  _w.0...*.H......
    81000030: 81300005 300b3190 55030609 02130604  ..0..1.0...U....
    81000040: 0b315355 03060930 0c080455 31435302  US1.0...U....SC1
    81000050: 060f3011 07045503 654e080c 6f592077  .0...U....New Yo
    81000060: 21316b72 03061f30 0c0a0455 78655418  rk1!0...U....Tex
    81000070: 49207361 7274736e 6e656d75 2c2e7374  as Instruments.,
    81000080: 636e4920 300c312e 5503060a 030c0b04   Inc.1.0...U....
    81000090: 31505344 060d300f 03045503 6c41060c  DSP1.0...U....Al
    810000a0: 74726562 1d301f31 862a0906 0df78648  bert1.0...*.H...
    810000b0: 16010901 626c4110 40747265 742e7467  .....Albert@gt.t
    810000c0: 6f632e69 171e306d 3134320d 31323131  i.com0...2411121
    810000d0: 32363435 0d175a32 32313432 35313231  54622Z..24121215
    810000e0: 32323634 9081305a 09300b31 04550306  4622Z0..1.0...U.
    810000f0: 55021306 300b3153 55030609 020c0804  ...US1.0...U....
    => 
    

    我看到闪存的内容。

    因此、最好参考:

    https://github.com/u-boot/u-boot/blob/master/cmd/sf.c#L276

    此致、
    Keerthy