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.

[参考译文] J784S4XEVM:定制电路板上的 OSPI NOR 闪存不可用

Guru**** 2544570 points
Other Parts Discussed in Thread: TPS62873

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1410343/j784s4xevm-ospi-nor-flash-stuck-on-custom-board

器件型号:J784S4XEVM
Thread 中讨论的其他器件:TPS62873

工具与软件:

您好!

我尝试在 J784S4定制电路板的 OSPI NOR 闪存上刷写 U-boot。

我执行了以下步骤:

1. I changed the CONFIG_TI_SECURE_DEVICE=y to CONFIG_TI_SECURE_DEVICE=n in configs/j784s4_evm_a72_defconfig and configs/j784s4_evm_r5_defconfig
2. We have MT35XU02GCBA1G12-0AAT so, I added in drivers/mtd/spi/spi-nor-core.c 
#ifdef CONFIG_SPI_FLASH_MT35XU
-       if (!strcmp(nor->info->name, "mt35xu512aba"))
+       if (!strcmp(nor->info->name, "mt35xu512aba") || !strcmp(nor->info->name, "mt35xu02g"))
                nor->fixups = &mt35xu512aba_fixups;
 #endif
3. I rebuilt the u-boot
4. I flashed the OSPI NOR in UART mode with below commands:
=> sf probe 0

=> loadb 0x82000000
Sending the tiboot3.bin via Kermit
=> sf erase 0x0 +$filesize

=> sf update 0x82000000 0x0 $filesize

=> loadb 0x82000000
Sending the tispl.bin_unsigned via Kermit
=> sf erase 0x80000 +$filesize

=> sf update 0x82000000 0x80000 $filesize

=> loadb 0x82000000
Sending the u-boot.img_unsigned via Kermit
=> sf erase 0x280000 +$filesize

=> sf update 0x82000000 0x280000 $filesize

但当我改为 SPI 或不刷写时、它会阻塞  

=>
U-Boot SPL 2023.04-dirty (Sep 08 2024 - 11:24:18 +0300)
Rachel EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -121
SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
i2c_write: error waiting for data ACK (status=0x116)
tps6287x_regulator tps62873@40: CTRL2 reg read failed: -121
SPL initial stack usage: 13456 bytes
Trying to boot from SPI

您能帮我弄清楚原因吗?

谢谢!
Rachel

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

    你好、Rachel、

    有几个问题:

    1. 所使用的是哪个 SDK 版本?  
    2. 您是提到定制电路板还是在早期 SDK 版本上工作?  

    此致、

    基尔西  

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

    Keerthy、您好!

    1.我使用 ti-processor-sdk-linux-adas-j784s4-evm-09_02_00_05 SDK 版本。

    2.我在上面的 SDK 中做了一些改动以显示定制板:DDR、UART 端口等
    当我   通过 X/Ymodem 发送 tiboot3.bin、tispl.bin_unsigned、u-boot.img_unsigned 文件时、在 UART 模式下收到 u-boot 提示

    谢谢!
    Rachel

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

    你好、Rachel、

    请分享 UART 引导的工作日志。

    优点是 ROM 已加载 tiboot3.bin (也称为 R5 SPL)并且已开始执行。

    您使用的完全是 OSPI 器件? 因此、可能还有更多特定于 OSPI 模式的更改。

    -基尔西

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

    Keerthy、您好!

    UART 日志:

    U-Boot SPL 2023.04-dirty (Sep 10 2024 - 13:45:15 +0300)
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -121
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    i2c_write: error waiting for data ACK (status=0x116)
    tps6287x_regulator tps62873@40: CTRL2 reg read failed: -121
    SPL initial stack usage: 13456 bytes
    Trying to boot from UART
    CCLoaded 1076695 bytes
    Loading Environment from nowhere... OK
    init_env from device 7 not supported!
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b8-dirty
    NOTICE:  BL31: Built : 09:27:24, Aug 18 2024
    I/TC:
    I/TC: OP-TEE version: 4.1.0-51-g012cdca49 (gcc version 13.2.1 20231009 (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7))) #1 Mon Aug 19 18:39:50 UTC 2024 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    I/TC: WARNING: Please check optee.readthedocs.io/.../porting_guidelines.html
    I/TC: Primary CPU initializing
    I/TC: GIC redistributor base address not provided
    I/TC: Assuming default GIC group status and modifier
    I/TC: SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    I/TC: HUK Initialized
    I/TC: Activated SA2UL device
    I/TC: Fixing SA2UL firewall owner for GP device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: SA2UL TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: Primary CPU switching to normal world boot
    
    U-Boot SPL 2023.04-dirty (Sep 10 2024 - 13:47:04 +0300)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    Trying to boot from UART
    CCCLoaded 1299127 bytes
    
    
    U-Boot 2023.04-dirty (Sep 10 2024 - 13:47:04 +0300)
    
    SoC:   J784S4 SR1.0 GP
    Model: Texas Instruments J784S4 EVM
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -121
    Board: J784S4-EVM rev E1
    DRAM:  2 GiB (effective 16 GiB)
    idle-statesCore:  90 devices, 31 uclasses, devicetree: separate
    Warning: Device tree includes old 'u-boot,dm-' tags: please fix by 2023.07!
    Flash: 0 Bytes
    MMC:   mmc@4f80000: 0, mmc@4fb0000: 1
    Loading Environment from nowhere... OK
    In:    serial@2820000
    Out:   serial@2820000
    Err:   serial@2820000
    Failed to probe am65_cpsw_nuss driver
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -121
    Net:   No ethernet found.
    Hit any key to stop autoboot:  0
    =>
    

    我使用  MT35XU02GCBA1G12-0AAT OSPI NOR 闪存。

    谢谢!
    Rachel

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

    你好、Rachel、

    谢谢。

    [报价 userid="593644" url="~/support/processors-group/processors/f/processors-forum/1410343/j784s4xevm-ospi-nor-flash-stuck-on-custom-board/5403821 #5403821"]我使用  MT35XU02GCBA1G12-0AAT OSPI NOR 闪存。

    [报价]

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/10_00_00_08/exports/docs/linux/Foundational_Components /内核/ Kernel_Drivers / QSPI.html

    默认情况下、J784s4支持 cypress 闪存。 您还将需要在 U-Boot/SPL 中进行上述更改。

    -基尔西

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

    Keerthy、您好!

    感谢您的回答。

    我 在 k3-j784s4-evm-u-boot.dtsi 中更改为 分区@3fe0000  
    和 k3-j784s4-evm.dts 中添加到

    CDN、读取延迟=<0>;  

    分区@3fe0000 {
    label ="ospi.phypatern";
    - reg =<0x3fc0000 0x40000>;
    + reg =<0x3fe0000 0x20000>;

    但 SPI 仍然卡在内

    U-Boot SPL 2023.04-dirty (Sep 12 2024 - 10:25:49 +0300)
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -121
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    i2c_write: error waiting for data ACK (status=0x116)
    tps6287x_regulator tps62873@40: CTRL2 reg read failed: -121
    SPL initial stack usage: 13456 bytes
    Trying to boot from SPI

    我 有  MT35XU0 2G CBA1G12-0AAT 不是 MT35XU 512 ABA1G12-0AAT、您能告诉我需要对此进行哪些更改吗?

    谢谢!
    Rachel

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

    你好、Rachel、

    以下几点:

    1. MT35XU0 2G CBA1G12-0AAT 实际上是2千兆位的部分。 因此、256Mb = 0x1000 0000
      如果我们减去0x20000、即最后一个块。
      我们得到0xFFE0000

      对于 SPI 芯片:
      REG =<0xFFE0000 0x20000>;

    2. 我在中注意到的另一点是: drivers/mdd/spi/spi-nor-ids.c

      #ifdef CONFIG_SPI_FLASH_MT35XU
      {info ("mt35xl512aba"、0x2c5a1a、0128 * 1,024,512、 USE_FSR | SPI_NOR_八 路读取| SPI_NOR_4B_OPCODES | SPI_NOR_八 路_DTR_READ)}、
      {info ("mt35xu512aba"、0x2c5b1a、0128 * 1,024,512、 USE_FSR | SPI_NOR_八 路读取| SPI_NOR_4B_OPCODES | SPI_NOR_八 路_DTR_READ)}、
      #endif /* CONFIG_SPI_FLASH_MT35XU *
      {INFO2 ("mt35xu01g"、0x2c5b1b、0x104,100,128 * 1,024,1024、 USE_FSR | SPI_NOR_八 路读取| SPI_NOR_4B_OPCODES)}、
      {info (" mt35xu02g "、0x2c5b1c、0128 * 1,024,2048、 USE_FSR | SPI_NOR_八 路读取| SPI_NOR_4B_OPCODES)}、
      #endif

      与上述进行通信  CONFIG_SPI_FLASH_MT35XU 在 configs/j784s4_evm_r5_defconfig 中定义
       mt35xu02g 器件未被拾取。
      您能尝试一下以下更改吗?

      diff --git a/configs/j784s4_evm_r5_defconfig b/configs/j784s4_evm_r5_defconfig
      index 9d3d55a7..8b0ff8c9 100644
      --- a/configs/j784s4_evm_r5_defconfig
      +++ b/configs/j784s4_evm_r5_defconfig
      @@ -146,7 +146,6 @@ CONFIG_SPI_FLASH_SOFT_RESET_ON_BOOT=y
       CONFIG_SPI_FLASH_SPANSION=y
       CONFIG_SPI_FLASH_S28HX_T=y
       CONFIG_SPI_FLASH_STMICRO=y
      -CONFIG_SPI_FLASH_MT35XU=y
       CONFIG_PINCTRL=y
       # CONFIG_PINCTRL_GENERIC is not set
       CONFIG_SPL_PINCTRL=y
      

    此致、
    基尔西

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

    Keerthy、您好!

    它仍然卡住。

    我曾尝试调试该问题、我曾在中看到过

    SPL_Perform_fixups->detect_enable_spinand->FDT_node_offset_by_compatible 函数 在 OSPI 或 引导模式下、const void * Fdt 变量为0。

    在 UART 模式下、  FDT 值不是0。

    您能帮助我了解原因吗?

    谢谢!
    Rachel。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="593644" url="~/support/processors-group/processors/f/processors-forum/1410343/j784s4xevm-ospi-nor-flash-stuck-on-custom-board/5415600 #5415600"]detect_enable_spinand

    请在开始时立即从函数中"重读0"。 它似乎检测的是 NAND 而不是 OSPI NOR。 当您希望从 NOR 引导时、该函数是冗余的。 因此只需在一开始返回0。 这将解决您的引导问题。

    -基尔西

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

    Keerthy、您好!

    感谢您的回答。

    现在、它固定在这里:

    U-Boot SPL 2023.04-dirty (Sep 17 2024 - 10:41:24 +0300)
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -121
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    i2c_write: error waiting for data ACK (status=0x116)
    tps6287x_regulator tps62873@40: CTRL2 reg read failed: -121
    SPL initial stack usage: 13456 bytes
    Trying to boot from SPI
    Rachel spl_load_image
    Rachel spl_perform_fixups
    Rachel blob add 0
    Rachel after detect_enable_spinand
    Loading Environment from nowhere... OK
    Loading rproc fw image from device 3 not supported!
    Starting ATF on ARM64 core...
    
    ti_sci system-controller@44083000: ti_sci_get_response: Message receive failed. ret = -110
    ti_sci system-controller@44083000: Message not acknowledgedFailed to put device 367 (-19)
    
    ### ERROR ### Please RESET the board ###

    您能帮我弄清楚原因吗?

    谢谢!
    Rachel

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

    您好!

    除了 SPI 启用方面的更改之外、您是否进行了任何更改?

    器件367是 MCU_RTI 看门狗。 使用 UART 引导模式时、相同的映像是否可以正常工作?

    -基尔西

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

    Keerthy、您好!

    1.是的。 根据该 指南、我将 UART 从8更改为2 

    并更改了 DDR:我从 arch/arm/dts/k3-j784s4-ddr.dtsi 中删除了 memorycontroller2和 memorycontroller3、因为我有2个 ddr.dtsi、并将 arch/arm/dts/k3-j784s4-ddr-evm-lp4-4266.dtsi 中的"k3-j784s4-ddr-evm-lp4-dts"更 改为自定义 r5.dtss.evm.dts。

    2.是的、同一个映像使用 UART 引导模式可以正常工作、我可以禁用  MCU_RTI 看门狗吗? 我该怎么做?

    谢谢!
    Rachel

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

    你好、Rachel、

    您是否可以访问调试器? 如果是、您能否检查 MCU R5F0是否崩溃?

    -基尔西

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

    Keerthy、您好!

    我是否可以使用 Lauterbach 来检查 MCU R5F0状态?  您能告诉我怎么做吗?

    谢谢!
    Rachel

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

    你好、Rachel、

    Lauterbach 也应该没问题。 您将需要连接到 MCU R5F。

    UART 引导还有一个不同:

    U-Boot SPL 2023.04-脏污(2024年9月10日- 13:45:15 +0300)
    EEPROM 在0x50处不可用、尝试在0x51处读取
    在0x51处读取板载 EEPROM 失败-121
    SYSFW ABI:3.1 (固件版本0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    I2C_WRITE:等待数据 ACK 时出错(STATUS=0x116)
    tps6287x_regulator tps62873@40:CTRL2 reg 读取失败:-121
    SPL 初始堆栈使用:13456字节
    尝试从 UART 引导
    CCLoaded 1076695字节
    随处加载环境... 好的
    不支持来自器件7的 init_env!
    在 ARM64内核上启动 ATF。。。

    在 OSPI 引导中:

    U-Boot SPL 2023.04-脏污(2024年9月17日- 10:41:24 +0300)
    EEPROM 在0x50处不可用、尝试在0x51处读取
    在0x51处读取板载 EEPROM 失败-121
    SYSFW ABI:3.1 (固件版本0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    I2C_WRITE:等待数据 ACK 时出错(STATUS=0x116)
    tps6287x_regulator tps62873@40:CTRL2 reg 读取失败:-121
    SPL 初始堆栈使用:13456字节
    尝试从 SPI 引导
    Rachel spl_load_image
    Rachel spl_perform_fixups
    雷切尔 blob 添加0
    Detect_enable_spinand 后的 Rachel
    随处加载环境... 好的
    不支持从器件3加载 rproc FW 映像!
    在 ARM64内核上启动 ATF。。。

    您是否在 OSPI 中添加了额外的调试打印件或同一图像提供了上述迹线?

    -基尔西

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

    Rachel、

    请添加以下调试输出:

    diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c
    index 23ec1f26..141f155f 100644
    --- a/arch/arm/mach-k3/common.c
    +++ b/arch/arm/mach-k3/common.c
    @@ -273,8 +273,10 @@ void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
            init_env();
     
            if (!fit_image_info[IMAGE_ID_DM_FW].image_start) {
    +               printf("Before load_firmware\n");
                    size = load_firmware("name_mcur5f0_0fw", "addr_mcur5f0_0load",
                                         &loadaddr);
    +               printf("The size of the firmware loaded is%d\n", size);
            }
     
            /*
    @@ -328,7 +330,7 @@ void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
                            loadaddr = load_elf_image_phdr(loadaddr);
            }
     
    -       debug("%s: jumping to address %x\n", __func__, loadaddr);
    +       printf("%s: jumping to address %x\n", __func__, loadaddr);

    请检查 UART 和 OSPI 模式。

    -基尔西

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

    Keerthy、您好!

    感谢您的回答!

    OSPI 日志:

    U-Boot SPL 2023.04-dirty (Sep 29 2024 - 10:10:44 +0300)
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -121
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    i2c_write: error waiting for data ACK (status=0x116)
    tps6287x_regulator tps62873@40: CTRL2 reg read failed: -121
    SPL initial stack usage: 13456 bytes
    Trying to boot from SPI
    Loading Environment from nowhere... OK
    Before load_firmware
    Loading rproc fw image from device 3 not supported!
    The size of the firmware loaded is0
    Starting ATF on ARM64 core...
    
    ti_sci system-controller@44083000: ti_sci_get_response: Message receive failed. ret = -110
    ti_sci system-controller@44083000: Message not acknowledgedFailed to put device 367 (-19)
    
    ### ERROR ### Please RESET the board ###

    UART 日志:

    U-Boot SPL 2023.04-dirty (Sep 29 2024 - 10:10:44 +0300)
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -121
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    i2c_write: error waiting for data ACK (status=0x116)
    tps6287x_regulator tps62873@40: CTRL2 reg read failed: -121
    SPL initial stack usage: 13456 bytes
    Trying to boot from UART
    CCRachel in board_fit_image_post_process
    Rachel in board_fit_image_post_process
    Rachel in board_fit_image_post_process
    Rachel in board_fit_image_post_process
    Rachel in board_fit_image_post_process
    Loaded 1075727 bytes
    Loading Environment from nowhere... OK
    init_env from device 7 not supported!
    jump_to_image_no_args: jumping to address 41010000
    Starting ATF on ARM64 core...
    
    Rachel, Hi
    NOTICE:  BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b8-dirty
    Rachel, Hi
    NOTICE:  BL31: Built : 08:18:34, Sep 12 2024
    I/TC:
    I/TC: OP-TEE version: 4.1.0-51-g012cdca49 (gcc version 13.2.1 20231009 (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7))) #1 Mon Aug 19 18:39:50 UTC 2024 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    I/TC: WARNING: Please check optee.readthedocs.io/.../porting_guidelines.html
    I/TC: Primary CPU initializing
    I/TC: GIC redistributor base address not provided
    I/TC: Assuming default GIC group status and modifier
    I/TC: SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    I/TC: HUK Initialized
    I/TC: Activated SA2UL device
    I/TC: Fixing SA2UL firewall owner for GP device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: SA2UL TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: Primary CPU switching to normal world boot
    
    U-Boot SPL 2023.04-dirty (Sep 29 2024 - 10:12:27 +0300)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    Trying to boot from UART
    CCRachel in board_fit_image_post_process
    Rachel in board_fit_image_post_process
    Loaded 1298639 bytes
    
    
    U-Boot 2023.04-dirty (Sep 29 2024 - 10:12:27 +0300)
    
    SoC:   J784S4 SR1.0 GP
    Model: Texas Instruments J784S4 EVM
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -121
    Board: J784S4-EVM rev E1
    DRAM:  2 GiB (effective 16 GiB)
    idle-statesCore:  92 devices, 32 uclasses, devicetree: separate
    Flash: 0 Bytes
    MMC:   mmc@4f80000: 0, mmc@4fb0000: 1
    Loading Environment from nowhere... OK
    In:    serial@2820000
    Out:   serial@2820000
    Err:   serial@2820000
    am65_cpsw_nuss ethernet@46000000: K3 CPSW: nuss_ver: 0x6BA02102 cpsw_ver: 0x6BA82102 ale_ver: 0x00293904 Ports:1 mdio_freq:1000000
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -121
    Net:   Could not get PHY for ethernet@46000000port@1: addr 0
    am65_cpsw_nuss_port ethernet@46000000port@1: phy_connect() failed
    No ethernet found.
    
    Hit any key to stop autoboot:  0
    =>
    


    谢谢!
    Rachel

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

    你好、Rachel、

    我添加了更多调试输出、以准确检查 DM 二进制文件是否正确加载到 MCU R5F 上:

    diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c
    index 23ec1f26..fb87afde 100644
    --- a/arch/arm/mach-k3/common.c
    +++ b/arch/arm/mach-k3/common.c
    @@ -273,8 +273,10 @@ void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
            init_env();
     
            if (!fit_image_info[IMAGE_ID_DM_FW].image_start) {
    +               printf("Before load_firmware\n");
                    size = load_firmware("name_mcur5f0_0fw", "addr_mcur5f0_0load",
                                         &loadaddr);
    +               printf("The size of the firmware loaded is%d\n", size);
            }
     
            /*
    @@ -293,7 +295,7 @@ void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
            /* Authenticate ATF */
            void *image_addr = (void *)fit_image_info[IMAGE_ID_ATF].image_start;
     
    -       debug("%s: Authenticating image: addr=%lx, size=%ld, os=%s\n", __func__,
    +       printf("%s: Authenticating image: addr=%lx, size=%ld, os=%s\n", __func__,
                  fit_image_info[IMAGE_ID_ATF].image_start,
                  fit_image_info[IMAGE_ID_ATF].image_len,
                  image_os_match[IMAGE_ID_ATF]);
    @@ -304,7 +306,7 @@ void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
            /* Authenticate OPTEE */
            image_addr = (void *)fit_image_info[IMAGE_ID_OPTEE].image_start;
     
    -       debug("%s: Authenticating image: addr=%lx, size=%ld, os=%s\n", __func__,
    +       printf("%s: Authenticating image: addr=%lx, size=%ld, os=%s\n", __func__,
                  fit_image_info[IMAGE_ID_OPTEE].image_start,
                  fit_image_info[IMAGE_ID_OPTEE].image_len,
                  image_os_match[IMAGE_ID_OPTEE]);
    @@ -316,19 +318,22 @@ void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
     
            if (!fit_image_info[IMAGE_ID_DM_FW].image_len &&
                !(size > 0 && valid_elf_image(loadaddr))) {
    +               printf("Something not right with DM load\n");
                    shut_cpu = 1;
                    goto start_arm64;
            }
     
            if (!fit_image_info[IMAGE_ID_DM_FW].image_start) {
                    loadaddr = load_elf_image_phdr(loadaddr);
    +               printf("loadaddr = 0x%x %d\n", loadaddr, __LINE__); 
            } else {
                    loadaddr = fit_image_info[IMAGE_ID_DM_FW].image_start;
                    if (valid_elf_image(loadaddr))
                            loadaddr = load_elf_image_phdr(loadaddr);
    +               printf("loadaddr = 0x%x %d\n", loadaddr, __LINE__); 
            }
     
    -       debug("%s: jumping to address %x\n", __func__, loadaddr);
    +       printf("%s: jumping to address %x\n", __func__, loadaddr);
     
     start_arm64:
            /* Add an extra newline to differentiate the ATF logs from SPL */
    @@ -339,7 +344,7 @@ start_arm64:
                    panic("%s: ATF failed to start on rproc (%d)\n", __func__, ret);
     
            if (shut_cpu) {
    -               debug("Shutting down...\n");
    +               printf("Shutting down...\n");
                    release_resources_for_core_shutdown();
     
                    while (1)
    @@ -347,6 +352,7 @@ start_arm64:
            }
            image_entry_noargs_t image_entry = (image_entry_noargs_t)loadaddr;
     
    +       printf("Before jumping to DM firmware\n");
            image_entry();
    

    UART 引导看起来一切正常。 请与随 OSPI 引导添加的上述打印件共享日志。

    谢谢!
    基尔西

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

    Keerthy、您好!

    OSPI 引导的日志为(请忽略我的调试输出):

    U-Boot SPL 2023.04-dirty (Sep 30 2024 - 09:59:03 +0300)
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -121
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    i2c_write: error waiting for data ACK (status=0x116)
    tps6287x_regulator tps62873@40: CTRL2 reg read failed: -121
    SPL initial stack usage: 13456 bytes
    Rachel __get_primary_bootmedia main_devstat 92 wkup_devstat 6030107
    Rachel bootmode 3
    Trying to boot from SPI
    Rachel __get_primary_bootmedia main_devstat 92 wkup_devstat 6030107
    Rachel bootmode 3
    Rachel 169
    Rachel spl_parse_image_header
    Jumping to U-Boot...
    Rachel init_env
    Rachel env_init
    Rachel env_init 350
    env_init: Environment nowhere init done (ret=0)
    Rachel env_init 366
    Loading Environment from nowhere... OK
    Rachel __get_primary_bootmedia main_devstat 92 wkup_devstat 6030107
    Rachel bootmode 3
    Before load_firmware
    Rachel load_firmware
    Rachel __get_primary_bootmedia main_devstat 92 wkup_devstat 6030107
    Rachel bootmode 3
    Rachel __get_primary_bootmedia main_devstat 92 wkup_devstat 6030107
    Rachel bootmode 3
    Loading rproc fw image from device 3 not supported!
    The size of the firmware loaded is0
    jump_to_image_no_args: Authenticating image: addr=80800000, size=0, os=arm-trusted-firmware
    jump_to_image_no_args: Authenticating image: addr=0, size=0, os=tee
    Something not right with DM load
    Starting ATF on ARM64 core...
    
    Shutting down...
    ti_sci system-controller@44083000: ti_sci_get_response: Message receive failed. ret = -110
    ti_sci system-controller@44083000: Message not acknowledgedFailed to put device 367 (-19)
    
    ### ERROR ### Please RESET the board ###
    
    

    谢谢!
    Rachel

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

    你好、Rachel、

    谢谢! 这清楚地表明、未从 OSPI 正确读取 DM 二进制文件。

    现在应该尝试以下几项操作:

    1. 若要使用 OSPI 启动加快速度、我们可以从最低速度开始:

      diff --git a/arch/arm/dts/k3-j784s4-evm.dts b/arch/arm/dts/k3-j784s4-evm.dts
      index 539471c8..be613a7e 100644
      --- a/arch/arm/dts/k3-j784s4-evm.dts
      +++ b/arch/arm/dts/k3-j784s4-evm.dts
      @@ -701,8 +701,8 @@
              ospi0_nor: flash@0 {
                      compatible = "jedec,spi-nor";
                      reg = <0x0>;
      -               spi-tx-bus-width = <8>;
      -               spi-rx-bus-width = <8>;
      +               spi-tx-bus-width = <1>;
      +               spi-rx-bus-width = <1>;
                      spi-max-frequency = <25000000>;
                      cdns,tshsl-ns = <60>;
                      cdns,tsd2d-ns = <60>;
      

      这基本上是切换到单个数据位。 让我们看看这在您的定制板上是否有效。
      在尝试后续调试步骤之前、请首先尝试此操作。
    2. 在 U-boot 中写入 OSPI (使用 UART 引导模式)后。 请将整个图像转储到不同的 DDR 位置并进行比较
      如果在 U-Boot 处、则写入并回读原始映像而不会出现任何问题。
    3. 请在 U-Boot 中共享"f probe"的输出。 显示的闪存名称正确吗?
    4. U-Boot 源文件: common/spl/spl_spi.c
      函数: SPL_SPI_LOAD_IMAGE
      您可以添加调试打印件、以查看在此函数中读取 tispl.bin 失败的位置。
      您甚至可以打印前64个字节、即 tispl.bin 标头。

    请优先选择#1。 我们认为、这将有助于进一步开展工作。

    -基尔西

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

    Rachel、

    从今天开始、我本周就不在办公室了。 我们可以在周一进行测试。 同时、如果可以检查是否从 R5 SPL 中的 OSPI 正确读取 tispl.bin、那会很好。 与您在 UART 中看到的类似:

    Rachel spl_load_fit_image
    board_fit_image_post_process 中的 Rachel
    BOARD_FIT_IMAGE_POST_PROCESS:处理图像:Addr=70000000、大小=52888、操作系统=arm-trusted-firmware
    board_fit_image_post_process:Rachel 常见文件匹配了 ID 0 image_start 地址1879048192 image_len 52888的图像
    794.
    Rachel spl_load_fit_image
    board_fit_image_post_process 中的 Rachel
    BOARD_FIT_IMAGE_POST_PROCESS:正在处理图像:Addr=9e800000、大小=478560、操作系统=TEE
    board_fit_image_post_process:Rachel 常见文件匹配了 ID 1 image_start 地址-163578560 image_len 478560的图像
    794.
    Rachel spl_load_fit_image
    board_fit_image_post_process 中的 Rachel
    BOARD_FIT_IMAGE_POST_PROCESS:处理图像:Addr=89000000、大小=223000、操作系统=DM
    board_fit_image_post_process:Rachel 常见文件匹配了 ID 3 image_start 地址-196488704 image_len 223000的图像
    794.
    Rachel spl_load_fit_image
    board_fit_image_post_process 中的 Rachel
    board_fit_image_post_process:处理图像:Addr=80080000、大小=297768、操作系统=U-Boot
    board_fit_image_post_process:Rachel 常见文件匹配了 ID 2 image_start 地址-2146959360 image_len 297768的图像
    Rachel else
    Rachel spl_load_fit_image
    board_fit_image_post_process 中的 Rachel
    BOARD_FIT_IMAGE_POST_PROCESS:正在处理图像:Addr=ffffff、大小=12003、操作系统=
    已加载1076711字节

    DM 是器件管理器。 它是 tispl.bin 的一部分、需要从 OSPI 中以 SPL 格式读取。 如果未正确加载 DM、则:

    正在关闭...
    TI_SCI 系统控制器@44083000:TI_SCI_GET_RESPONSE:消息接收失败。 RET =-110
    TI_SCI 系统控制器@44083000:消息未确认无法放置器件367 (-19)

    预计会出现上述错误。

    -基尔西

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

    Keerthy、您好!

    谢谢! 周一 对我来说很好、我们如何安排会议?  
    同时、 我将检查是否正在从 R5 SPL 中的 OSPI 正确读取 tispl.bin。

    谢谢!
    Rachel

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

    你好、Rachel、

    会议之前是否有其他更新?

    此致、

    基尔西

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

    Keerthy、您好!

    遗憾的是、不可以
    我尝试通过更改 common/spl/spl_spi.c 中的"else if"来强制输入 spl_load_simple_fit 函数  

    @@ -126,25 +130,28 @@ static int spl_spi_load_image(struct spl_image_info *spl_image,
                    err = spi_flash_read(flash, payload_offs, sizeof(*header),
                                         (void *)header);
                    if (err) {
    -                       debug("%s: Failed to read from SPI flash (err=%d)\n",
    +                       printf("%s: Failed to read from SPI flash (err=%d)\n",
                                  __func__, err);
                            return err;
                    }
     
                    if (IS_ENABLED(CONFIG_SPL_LOAD_FIT_FULL) &&
                        image_get_magic(header) == FDT_MAGIC) {
    +                               printf("Rachel in if CONFIG_SPL_LOAD_FIT_FULL and get magic\n");
                            err = spi_flash_read(flash, payload_offs,
                                                 roundup(fdt_totalsize(header), 4),
                                                 (void *)CONFIG_SYS_LOAD_ADDR);
                            if (err)
                                    return err;
    +                       printf("Rachel after err in 146 line\n");
                            err = spl_parse_image_header(spl_image, bootdev,
                                            (struct legacy_img_hdr *)CONFIG_SYS_LOAD_ADDR);
    -               } else if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
    -                          image_get_magic(header) == FDT_MAGIC) {
    +               } else if (1)//(IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
    +                         // image_get_magic(header) == FDT_MAGIC) {
    +                         {
                            struct spl_load_info load;
     
    -                       debug("Found FIT\n");
    +                       printf("Found FIT spi\n");
    

    但在 ret = spl_simple_fit_read (&ctx、info、sector、fit)上失败;
    U-Boot SPL 2023.04-dirty (Oct 06 2024 - 22:20:17 +0300)
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -121
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    i2c_write: error waiting for data ACK (status=0x116)
    tps6287x_regulator tps62873@40: CTRL2 reg read failed: -121
    SPL initial stack usage: 13456 bytes
    Rachel __get_primary_bootmedia main_devstat 92 wkup_devstat 6030107
    Rachel bootmode 3
    Trying to boot from SPI
    Rachel enter spl_spi_load_image function
    Rachel __get_primary_bootmedia main_devstat 92 wkup_devstat 6030107
    Rachel bootmode 3
    Rachel if CONFIG_IS_ENABLED
    Found FIT spi
    Rachel spl_load_simple_fit
    Rachel spl_simple_fit_read
    Rachel fit_header = -2139095104
    Rachel spl_simple_fit_read ALIGN size=0x0
    Rachel spl_simple_fit_read board_spl size=0x0
    fit read sector 100000, sectors=0, dst=81ec7180, count=0, size=0x0
    Rachel spl_simple_fit_read ret -5
    Rachel in if CONFIG_SPI_FLASH_SOFT_RESET
    Rachel spi_nor_remove err 0
    Rachel return err 0
    Unsupported OS image.. Jumping nevertheless..
    Rachel init_env
    Rachel env_init
    Rachel env_init 350
    env_init: Environment nowhere init done (ret=0)
    Rachel env_init 366
    Loading Environment from nowhere... OK
    Rachel __get_primary_bootmedia main_devstat 92 wkup_devstat 6030107
    Rachel bootmode 3
    jump_to_image_no_args: Rachel 269 Authenticating image: addr=0, size=0
    jump_to_image_no_args: Rachel 269 Authenticating image: addr=0, size=0
    jump_to_image_no_args: Rachel 269 Authenticating image: addr=0, size=0
    jump_to_image_no_args: Rachel 269 Authenticating image: addr=0, size=0
    jump_to_image_no_args: Rachel 269 Authenticating image: addr=0, size=0
    jump_to_image_no_args: Rachel 269 Authenticating image: addr=0, size=0
    jump_to_image_no_args: Rachel 269 Authenticating image: addr=0, size=0
    Before load_firmware
    Rachel load_firmware
    Rachel __get_primary_bootmedia main_devstat 92 wkup_devstat 6030107
    Rachel bootmode 3
    Rachel __get_primary_bootmedia main_devstat 92 wkup_devstat 6030107
    Rachel bootmode 3
    Loading rproc fw image from device 3 not supported!
    The size of the firmware loaded is0
    jump_to_image_no_args: Authenticating image: addr=0, size=0, os=arm-trusted-firmware
    jump_to_image_no_args: Authenticating image: addr=0, size=0, os=tee
    Something not right with DM load
    Starting ATF on ARM64 core...
    
    Shutting down...
    ti_sci system-controller@44083000: ti_sci_get_response: Message receive failed. ret = -110
    ti_sci system-controller@44083000: Message not acknowledgedFailed to put device 367 (-19)
    
    ### ERROR ### Please RESET the board ###
    
    

    谢谢!
    Rachel

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

    你好、Rachel、

    感谢您提供调试帮助。

    diff --git a/configs/j784s4_evm_a72_defconfig b/configs/j784s4_evm_a72_defconfig
    index 4c958a95..ed67ce66 100644
    --- a/configs/j784s4_evm_a72_defconfig
    +++ b/configs/j784s4_evm_a72_defconfig
    @@ -64,7 +68,7 @@ CONFIG_SPL_RAM_DEVICE=y
     # CONFIG_SPL_SPI_FLASH_TINY is not set
     CONFIG_SPL_SPI_FLASH_SFDP_SUPPORT=y
     CONFIG_SPL_SPI_LOAD=y
    -CONFIG_SYS_SPI_U_BOOT_OFFS=0x300000
    +CONFIG_SYS_SPI_U_BOOT_OFFS=0x280000
    
    diff --git a/configs/j784s4_evm_r5_defconfig b/configs/j784s4_evm_r5_defconfig
    index 9d3d55a7..48fa476a 100644
    --- a/configs/j784s4_evm_r5_defconfig
    +++ b/configs/j784s4_evm_r5_defconfig
    @@ -73,7 +73,7 @@ CONFIG_SPL_REMOTEPROC=y
     # CONFIG_SPL_SPI_FLASH_TINY is not set
     CONFIG_SPL_SPI_FLASH_SFDP_SUPPORT=y
     CONFIG_SPL_SPI_LOAD=y
    -CONFIG_SYS_SPI_U_BOOT_OFFS=0x100000
    +CONFIG_SYS_SPI_U_BOOT_OFFS=0x80000
     CONFIG_SPL_THERMAL=y
     CONFIG_SPL_USB_GADGET=y
     CONFIG_SPL_DFU=y
    
    

    这样、您就能够从 OSPI 部件引导至 U-Boot。

    -基尔西

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

    非常感谢!