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.

[参考译文] TDA4VH-Q1:eMMC 引导和 USB 引导问答

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1274609/tda4vh-q1-emmc-boot-and-usb-boot-q-a

器件型号:TDA4VH-Q1
主题中讨论的其他器件:TDA4VH

您好!

我正在尝试 eMMC 引导 Foundational_Components,方法是:https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/08_06_00_12/exports/docs/linux/Memory-Boot/UG2000.html

但我无法 从 SD 映像中找到 sysfw.itb 文件。  

sysfw.itb 是用于在 TDA4VH 平台上引导 eMMC 的必须文件或不是该文件? 在何处查找 sysfw.itb?

我在预编译的映像路径下也没有找到 sysfw.itb: /ti-processor-sdk-linux-j784s4-evm-08_06_01_02/board-support/prebuilt-images

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

    您好  

    TDA4VH 使用组合的引导流程,其中 tifs + bootloader 被组合在一起。

    ROM 将同时加载 tifs 和引导加载程序。

    这就是在传统引导流程中使用 sysfe.itb 的原因。

    此致

    迪瓦卡尔  

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

    您好!  

    这意味着  TDA4VH 上没有单独的 sysfw.itb 文件? 它已经集成到 tiboot3.bin 或一些其他引导文件中。

    在 TDA4VH 上、只需加载 tiboot3.bin、 tispl.bin 和 u-boot.img 文件?  

    另一个问题是  、在我们的产品中、我们需要 USB 和 eMMC 引导;对于 USB 引导、我在 TI 网站中找到了一个链接:

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/08_06_00_12/exports/docs/linux/Foundational_Components Boot/UG-DFU.html

    Q1:为何需要重建 u-boot 并编译 MLO/u-boot 二进制文件? 是否无法使用路径/ti-processor-sdk-linux-j784s4-evm-08_06_01_02/board-support/prebuilt-images 下的默认重新编译消息?

    从 TI 链接、没有将 MLO 下载到电路板、为什么需要构建 MLO 二进制文件?

    Q2:在何处下载 SDK、以重建 u-boot 和 MLO 二进制文件? 以及如何构建

    Q3:SW3在哪里? 也不能找到哪个 USB 端口是 USB 端口、

    J784S4 EVM 上的 USB 外设引导模式(SPL-DFU 引导模式)

    • 将 SYSBOOT 开关设置为 USB 外设引导模式(请参阅  初始化  有关引导开关详细信息、请参阅 TRM 中的一章)
    • 确保 USB0端口处于 UFP/DRP 模式:SW3[3]= 01或1x
    • 通过 USB 电缆将 EVM 的 TypeC 端口(USB0端口)连接到 PC
    • 为电路板加电

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

    您好  

    这意味着  TDA4VH 上没有单独的 sysfw.itb 文件? 它已经集成到 tiboot3.bin 或一些其他引导文件中。

    [/报价]

    是的、它将与引导加载程序(tiboot3.bin)结合使用

    在 TDA4VH 上、只需加载 tiboot3.bin、 tispl.bin 和 u-boot.img 文件?  

    [/报价]

    是的、正确。

    Q1:为何需要重建 u-boot 并编译 MLO/u-boot 二进制文件? 是否无法使用路径/ti-processor-sdk-linux-j784s4-evm-08_06_01_02/board-support/prebuilt-images 下的默认重新编译消息?

    从 TI 链接、没有将 MLO 下载到电路板、为什么需要构建 MLO 二进制文件?

    [/报价]

    在这里 MLO/uboot 互换使用、 默认情况下、在 TI EVM 上 、DFU 模式已启用、但如果客户使用自己的 defcong 作为其定制板、那么在这种情况下 、他们需要按照上述文档中提到的说明启用此功能。

    Q2:在何处下载 SDK、以重建 u-boot 和 MLO 二进制文件? 以及如何构建

    [/报价]

    您可以通过此链接 https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-lOshtRwR8P/09.00.01.02/ti-processor-sdk-linux-adas-j784s4-evm-09_00_01_02-Linux-x86-Install.bin 下载最新的 Linux SDK

    它还包含 uBoot 源代码。

    Q3:SW3在哪里? 也不能找到哪个 USB 端口是 USB 端口、

    [/报价]

    此致
    迪瓦卡尔

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

    您好、Diwakar、  

    我按照指南在 TDA4VH EVM 电路板上尝试了 eMMC 引导流程。

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/08_06_00_12/exports/docs/linux/Foundational_Components Boot/UG-Memory.html

    完成对 eMMC 卡的写入并切换到 eMMC 引导后、 系统无法启动。  

    这里是我的开关设置:SW7[1:8]:    0100 0000 (SW7.2=1)、SW11[1:8]:  1000 0000 (SW11.1 = 1)

    似乎分区有一些错误,你能给我一些建议来修复这个缺陷.

    =>MMC 部件

    MMC 设备0的分区映射--分区类型:EFI

    GUID 分区表标头签名错误:0x32472641DEEE9E91!= 0x5452415020494645
    find_value_gpt:***错误:无效 gpt***
    GUID 分区表标头签名错误:0x0!= 0x5452415020494645
    find_value_gpt:***错误:备份 gpt***无效
    => fatls MMC 0:1
    **无法识别的文件系统类型**

    以下是完整的下载日志:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    U-Boot SPL 2021.01-g62a9e51344 (May 02 2023 - 21:12:41 +0000)
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.3--1-g2249f (Chill Capybara')
    SPL initial stack usage: 13472 bytes
    Trying to boot from MMC2
    Starting ATF on ARM64 core...
    NOTICE: BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
    NOTICE: BL31: Built : 21:12:26, May 2 2023
    I/TC:
    I/TC: OP-TEE version: 3.20.0 (gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))) #1 Tue May 2 21:12:33 UTC 2023 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    您好  

    感谢您联系我们将在两周内回复此话题。

    此致

    迪瓦卡尔  

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

    您好  

    正如日志清楚地表明您未正确创建分区。

    MMC 设备0的分区映射--分区类型:EFI

    GUID 分区表标头签名错误:0x32472641DEEE9E91!= 0x5452415020494645
    find_value_gpt:***错误:无效 gpt***
    GUID 分区表标头签名错误:0x0!= 0x5452415020494645
    find_value_gpt:***错误:备份 gpt***无效
    => fatls MMC 0:1
    **无法识别的文件系统类型**

    我建议 您查看此应用手册、  

    https://www.ti.com/lit/an/spracy5/spracy5.pdf?ts = 1695999126689&ref_url=https%253A%252F%252Fwww.google.com%252F

    此致

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

    您好、 Diwakar

    感谢您的评论、我阅读了闪存文档并重试、但仍然无法从 eMMC 启动、这是我的完整日志。

    请帮助重新检查。  

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    U-Boot SPL 2021.01-g62a9e51344 (May 02 2023 - 21:12:41 +0000)
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.3--1-g2249f (Chill Capybara')
    SPL initial stack usage: 13472 bytes
    Trying to boot from MMC2
    Starting ATF on ARM64 core...
    NOTICE: BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
    NOTICE: BL31: Built : 21:12:26, May 2 2023
    I/TC:
    I/TC: OP-TEE version: 3.20.0 (gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))) #1 Tue May 2 21:12:33 UTC 2023 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    写入 eMMC 卡后,似乎文件系统类型不正确,无法找到所写的文件...

    我切换到 SD 卡(MMC dev 1)、发现文件可以在 SD 卡上读取、文件系统类型为 DOS。

    我不确定它是根本原因,如何修复它?

    =>MMC 部件

    MMC 设备0的分区映射--分区类型:EFI

    零件开始 LBA 结束 LBA 名称
    属性
    类型 GUID
    分区 GUID
    1 0x00000022 0x03b47fde "rootfs"
    attrs:0x000000000000
    类型:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
    GUID:e2b6b38b-59eb-4c15-8dd7-3b2c97a80192
    => fatls MMC 0:1
    **无法识别的文件系统类型**

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

    你好 , Diwakar

    现在 eMMC 板可以在 tda4vh EVM 板上工作、主要原因是(应执行"MC partconf 0 1 1"和"MC bootbus 0 2 0")

    感谢您的巨大帮助。 我还有两个问题:

    1) 1)似乎无法读取引导区域?  引导映像区域(偏移为0x0到0x3400)是否有区域保护机制?

    首先、我将 u-boot.image 写入偏移量0x1400、将 dtb 文件写入偏移量0x3400

    fatload MMC 1 ${loadaddr}u-boot.img &&  MMC 写入${loadaddr}0x1400 0x2000

    TFTP ${loadaddr}tda4/k3-j784s4-evm.dtb && MMC 写入${loadaddr}0x3400 0x400

    然后读取偏移量、 0x3200 带有 len 0x400 ( MMC 读取 0x91000000 0x3200 0x400)、

    这些区域似乎无法读取、读取的内容为零。

    但是、如果我跳过引导区域(从0x0到0x3400的偏移量)、那么  读取 aras 是可以的。

    例如、 MMC 读取 0x91000000 0x3400 0x400

    2.关于引导区域部分。 对于 eMMC 引导、似乎仅创建了 rootfs 区域、并且文件系统类型不是由 fatls 标识。

    所以在哪里将引导文件(tiboot3.bin、tispl.bin、u-boot.img)写入呢?  

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

    您好  

    然后读取偏移量、 0x3200 带有 len 0x400 ( MMC 读取 0x91000000 0x3200 0x400)、

    这些区域似乎无法读取、读取的内容为零。

    但是、如果我跳过引导区域(从0x0到0x3400的偏移量)、那么  读取 aras 是可以的。

    [/报价]

    但您要将 dtb 写入:  

    MMC write ${loadaddr}0x3400 0x400

    因此  

    但是、如果我跳过引导区域(从0x0到0x3400的偏移量)、那么  读取 aras 是可以的。

    例如、 MMC 读取 0x91000000 0x3400 0x400

    [/报价]

     正确。

    2.关于引导区域部分。 对于 eMMC 引导、似乎仅创建了 rootfs 区域、并且文件系统类型不是由 fatls 标识。

    所以在哪里将引导文件(tiboot3.bin、tispl.bin、u-boot.img)写入呢?  

    [/报价]

    您正在写入 eMMC 的 RAW boot 0分区 ,这就是您无法读取的原因。另一方面,您正在以 ext4格式写入 UDA 分区中的 rootfs。

    此致
    迪瓦卡尔

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

    你好 , Diwakar

    明白了、是否有办法列出 eMMC 器件上的所有文件?

    例如使用 fatls 列出 SD 卡上的文件。

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

    您好  

    找到了,是否有办法列出 eMMC 部件上的所有文件?

    如果您要写入 RAW 分区 、则只能使用 MMC 读取 命令(如果使用的是 具有 fat 分区类型的 UDA 分区)  

    可以使用 fatls 命令。

    此致
    迪瓦卡尔

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

    你好  , Diwakar

    我找到了 eMMC UDA 分区图。  

    您正在写入 eMMC 的原始引导0分区 ,这就是为什么您不能读取另一方面,您正在 UDA 分区中以 ext4格式写入 rootfs。

    这意味着我要将启动映像写入 UDA 的分区1?

    还有一  件事需要确认,从链接 https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/08_06_00_12/exports/docs/linux/Foundational_Components

    我找到了 eMMC 布局、我的问题是在哪里可以放置我们的系统映像?

    从 eMMC 布局来看、我们似乎无法使用 boot0分区的偏移0x3400、对吗? (偏移量0x3400是为环境变量和备份环境、和 sysfw 保留的。 运行时这些区域可以被写入、对吗?)

    如果需要、我们可以将系统映像放在哪里? 用户分区是否合适? 如何切换到用户分区?

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

    您好  

    请浏览 TDA4VH 的 SDK 文档、

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/09_00_01_02/exports/docs/linux/Foundational_Components?U5.2-Boot/UG-Memory.html?highlight=boot0

    BOOT0分区与 UDA 分区不同。  

    以上映像显示将引导映像(tiboot3.bin、tispl、u-boot.img)保留在 BOOT0分区中,并将 rootfs 保存在 UDA 分区中。

    此致
    迪瓦卡尔

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

    尊敬的 Diwakar:  

    以上映像显示在 BOOT0分区中保留启动映像(tiboot3.bin,tispl,u-boot.img ),并在 UDA 分区中保留 rootfs。

    我的问题是、是否有完整分区列表图? 谁创建了 BOOT0分区、分区的起始和长度如何?

    UDA Particton 从2MB 的偏移量中扣除?   我感到困惑, 因为所有启动映像的大小都大于2MB,所以 rootfs start 应该设置为大于所有启动映像大小,对吗?

    u-Boot # printenv 分区
    uuuid_disk=${uuid_gpt_disk}; name=rootfs, start= 2MiB、 size=-、uuid=${uuid_gpt_rootfs} 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好  

    我的问题是、是否有完整分区列表图? 谁创建了 BOOT0分区、分区的起始和长度如何?

    [/报价]

    引导分区和用户分区的大小由存储器制造商定义。

    UDA Particton 从2MB 的偏移量中扣除?   我感到困惑, 因为所有启动映像的大小都大于2MB,所以 rootfs start 应该设置为大于所有启动映像大小,对吗?

    [/报价]

    在这里它将在 UDA 中创建另一部分、偏移为2MB、这是由您在 SDK 中定义的、其为0  

    Fullscreen
    1
    2
    => printenv partitions
    partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=0,size=-,uuid=${uuid_gpt_rootfs}
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    希望这能回答您的问题。

    此致
    迪瓦卡尔

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

    您好、Diwakar、

    明白了、谢谢。 我的最后一个问题、在哪里适合放置我们的系统映像?

    如果遵循 u-boot.img,它是从偏移量0x3400开始的,那么我们的系统映像大约是>8MB。 可能会超过 boot0分区的大小。  

    以及如何找到 boot0 part还是 大小?

    我担心大小对于所有 TI 引导映像(tiboot3.bin、tispl.bin、u-boot.img)和我们的系统映像而言都是不够的。

    或者我们应该将系统映像放在 uda 中的 rootfs 中?   

    哪一个是更好的选择?

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

    您好  

    以及如何找到 boot0 part还是 大小?

    [/报价]

    该信息应来自 eMMC 供应商、但为了快速检查、您可以引导至链接并运行 lsblk 命令  

    此处引导为31MB

    或者我们应该将系统映像放在 uda 中的 rootfs 中?   

    [/报价]

    我们通常建议将引导映像保留在 boot0分区中、因为与 UDA 相比、它是原始访问并且速度很快  

    并在 UDA 中保留 rootfs。

    但如果您有优于 eMMC 的 OSPI、因为 ospi 比 eMMC 快得多。

    此致
    迪瓦卡尔

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

    您好,Diwakar:

    我们通常建议将引导映像保留在 boot0分区中、因为与 UDA 相比、它是原始访问并且速度很快  

    并在 UDA 中保留 rootfs、

    [/报价]

    感谢您的评论、现在很明显、我们还将把我们的系统映像放在 boot0分区中、位于偏移0x3400的 uboot.image 后面、

    31MB 足以容纳所有映像。

    我现在没有问题了、再次感谢您对该表单的大力支持。  

x 出现错误。请重试或与管理员联系。