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.

[参考译文] PROCESSOR-SDK-AM62X:是否可以将 TI AM62X U-boot 配置为使用 dfu-util 加载 eMMC?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1394162/processor-sdk-am62x-is-it-possible-to-configure-ti-am62x-u-boot-to-use-dfu-util-for-emmc-loading

器件型号:PROCESSOR-SDK-AM62X

工具与软件:

我有 AM62X 的 USBDFU 配置(am62x_evm_r5_usbdfu_defconfig 和 am62x_evm_a53_usbdfu_defconfig)以及 CONFIG_SET_DFU_ALT_info=y。  我使用 UART-bootmode 加载单元、因为尚未设置 eMMC。

当我尝试将 u-boot 切换到 DFU 模式时、收到以下消息:

=> DFU 0 MMC 0
仅 SF 支持动态 dfu_alt_info
未定义"dfu_alt_info" env 变量!
不允许从主输入 shell 退出。

SF (串行闪存)是使用 DFU 的唯一方法吗?  由于没有用于 microSD 的板载空间且板载以太网、我们实际上已经在使用此引导模式时使用 DFU 将 u-boot 和 rootfs 加载到 eMMC。  我们在电路板上设计了 WIFI、但您知道这两者都不是加载的可行解决方案。

我尝试做的其他事情都不是有效的、即 CCS 到闪存引导加载程序、它无法识别电路板。  JLink 软件似乎不支持 AM62X。

任何帮助都是非常感谢!

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

    您好!

    [报价 userid="366226" url="~/support/processors-group/processors/f/processors-forum/1394162/processor-sdk-am62x-is-it-possible-to-configure-ti-am62x-u-boot-to-use-dfu-util-for-emmc-loading "](am62x_evm_r5_usbdfu_defconfig 和 am62x_evm_a53_usbdfu_defconfig )

    您需要使用"am62x_evm_r5_usbdfu_defconfig"和"am62x_evm_a53_defconfig"进行构建 。

    将引导模式开关设置为 USB 外设模式: https://dev.ti.com/tirex/explore/node?node=AH0HH8Z-m5NoQXxu9-xB-A__XaWts8R__LATEST&search=am62

    需要使用 Type-C USB 连接器将 EVM 上的端口 J13连接到 Linux 主机。 此外、连接电源并使用 EVM 打开 UART 控制台。

    此常见问题解答介绍了使用 DFU 刷写 eMMC 的分步过程: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1127618/faq-sk-am62-how-to-flash-emmc-using-usb-dfu-on-am62x-sk-e2

    如果您遇到任何问题、请告诉我。

    此致、
    Aparna

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

    很抱歉、我应该说明一点、我不再使用 EVM。  我使用的是定制电路板。  正如我在此处的原始文章中提到的、我将使用您曾提到的用于 A53和 R5的 usbdfu defconfig。  我们将引导模式设置为 USB 外设、但它从未支持 DFU 的设备。

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

    我的定制板找不到任何地方、因此我回到 AM62-SK Rev B 板、查看我是否可以获取 dfu-util。  修复由 Ubuntu 黑名单 TI DFU 器件和更换电缆引起的 udev 问题后、我可以执行以下操作:

    sudo dfu-util -l
    DFU-util 0.9

    版权所有2005-2009 Weston Schmidt、Harald Welte 和 OpenMoko Inc.
    版权所有2010-2016 Tormod Volden 和 Stefan Schmidt
    该程序是自由软件、绝对没有任何担保
    请将错误报告给 sourceforge.net/.../

    找到 DFU:[0451:6165] ver=0200、devnum=40、cfg=1、intf=0、path="3-3"、 alt=1、name="SocId"、serial="01.00.00.00.00.00.00"
    找到 DFU:[0451:6165] ver=0200、devnum=40、cfg=1、intf=0、path="3-3"、 alt=0、name="bootloader"、serial="01.00.00.00

    感觉很好,我继续编程。  我收到一个错误、整个过程中止。  请参阅下面的输出。  然后、我研究了在使用 DFU 时发送的链接中调用的 u-boot 补丁。  我无法应用补丁、并且查看了 TI-SDK-09。 02.01.10 u-boot 源代码、并且未能找到任何引用此补丁的位置。  什么版本的 TI AM62X u-boot 实际上可与 DFU 配合使用?

    sudo dfu-util -R -a 引导加载程序-D tiboot3.bin
    DFU-util 0.9

    版权所有2005-2009 Weston Schmidt、Harald Welte 和 OpenMoko Inc.
    版权所有2010-2016 Tormod Volden 和 Stefan Schmidt
    该程序是自由软件、绝对没有任何担保
    请将错误报告给 sourceforge.net/.../

    dfu-util:无效的 dfu 后缀签名
    dfu-util:未来的 dfu-util 版本中将需要有效的 dfu 后缀!!!
    正在打开支持 DFU 的 USB 设备...
    ID 0451:6165
    运行时器件 DFU 版本0110
    正在声明 USB DFU 接口...
    正在设置备用设置#0...
    确定器件状态:STATE = dfuIDLE、STATUS = 0
    dfuIDLE、继续
    DFU 模式器件 DFU 版本0110
    设备返回的传输大小512
    将数据从 PC 复制到 DFU 器件
    下载[________________====] 100% 306042字节
    下载完成。
    STATE (6)= dfuMANIFEST-SYNC、STATUS (0)=不存在错误条件
    dfu-util:完成后无法读取 dfu 状态
    dfu-util:无法分离
    正在重置 USB 以切换回运行时模式

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

    您好!

    [报价 userid="548888" url="~/support/processors-group/processors/f/processors-forum/1394162/processor-sdk-am62x-is-it-possible-to-configure-ti-am62x-u-boot-to-use-dfu-util-for-emmc-loading/5334253 #5334253"]您需要使用"am62x_evm_r5_usbdfu_defconfig"和"am62x_evm_a53_defconfig"进行构建 。

    请仔细注意、您应该为 R5而不是 A53使用 USB defconfig。

    我无法应用补丁、

    第一步是通过 DFU 引导。 通过 DFU 获取启动日志后、我们可以继续为 eMMC 准备 U-boot 二进制文件、必要时应用补丁。

    您是否可以使用 minicom 或 picocom 在不同的终端上打开串行端口日志、并在运行 DFU 命令时共享日志。

    此致、
    Aparna

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

    正如我以前告诉过的、我将使用您为 DFU 建议的指定 defconfig。  我想知道我应该使用哪个版本的 uBoot。  我在连接到 ttyUSB0的 picocom 会话上获得的最小显示量。  但我只能运行1条命令、然后它会复位。

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

    以下是来自主机的输出:

    sudo dfu-util -R -a 引导加载程序-D tiboot3.bin
    [sudo] pholden 的密码:
    DFU-util 0.9

    版权所有2005-2009 Weston Schmidt、Harald Welte 和 OpenMoko Inc.
    版权所有2010-2016 Tormod Volden 和 Stefan Schmidt
    该程序是自由软件、绝对没有任何担保
    请将错误报告给 sourceforge.net/.../

    dfu-util:无效的 dfu 后缀签名
    dfu-util:未来的 dfu-util 版本中将需要有效的 dfu 后缀!!!
    正在打开支持 DFU 的 USB 设备...
    ID 0451:6165
    运行时器件 DFU 版本0110
    正在声明 USB DFU 接口...
    正在设置备用设置#0...
    确定器件状态:STATE = dfuIDLE、STATUS = 0
    dfuIDLE、继续
    DFU 模式器件 DFU 版本0110
    设备返回的传输大小512
    将数据从 PC 复制到 DFU 器件
    下载[________________====] 100% 306042字节
    下载完成。
    STATE (6)= dfuMANIFEST-SYNC、STATUS (0)=不存在错误条件
    dfu-util:完成后无法读取 dfu 状态
    dfu-util:无法分离
    正在重置 USB 以切换回运行时模式

    以下是 picocom 会话的输出:

    U-Boot SPL 2023.04-00759-g43791d945f-dirty (2024年7月31日- 17:32:51 -0400)
    SYSFW ABI:3.1 (固件版本0x0009 '9.1.8--v09.01.08 (Kool Koala)')
    SPL 初始堆栈使用量:13384字节
    尝试从 DFU 引导
    未找到 USB 设备
    usb_gadget_initialize 失败
    SPL:无法从所有引导设备引导
    ###错误###请重置主板###

    通过 USB C 电缆连接主机和 AM62-SK-RevB (连接至 J13)。  没有 USB-C 连接到 J11。  我将 microUSB 电缆连接到了 J15。

    我正在使用"am62x_evm_a53_usbdfu_defconfig"和"am62x_evm_r5_usbdfu_defconfig"。

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

    好消息。  我在试图用于 A53的 defconfig 中发现问题。  之后、我构建了新的 u-boot 映像。  我从未能够让 EVM 板启动、但我刚刚使用 DFU 配置了定制板、并成功加载了全部3个文件(tiboot3.bin、tispl.bin 和 u-boot.img)。  我进入了 u-boot 提示符。  然后、我运行"setenv dfu_alt_info ${dfu_alt_info_eMMC}"、后跟"Dfu 0 MMC 0"、并收到以下错误消息:

    在 MMC 器件#0上找不到器件#1
    DFU 实体配置失败!
    (分区表与 dfu_alt_info 不匹配?)
    DFU -器件固件升级

    用法:
    DFU [ ][列表]
    -通过设备固件升级
    设备上 、连接到接口

    [list]-列出可用的备选设置

    我运行"MMC 部件"并获得以下信息:

    ##未知分区表类型0

    现在、我该怎么配置 eMMC 分区?  我可以设置 GPT 分区、但不知道如何将分区0设置为 FAT。

    有任何建议吗?

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

    您好、由于尚未正确分区 eMMC、因此会收到上述错误。  

    从 Uboot 对 eMMC 进行分区的步骤:  3.1.4. SD、eMMC 和 USB—Processor SDK AM62Ax 文档

    此致、
    Aparna

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

    谢谢、我成功将 tiboot3.bin、tispl.bin 和 u-boot.img 复制到 eMMC 中。  现在我在尝试加载 rootfs.ext4文件时遇到问题:

    $ sudo dfu-util -c 1 -i 0 -a 1 -D rootfs.ext4
    DFU-util 0.9

    版权所有2005-2009 Weston Schmidt、Harald Welte 和 OpenMoko Inc.
    版权所有2010-2016 Tormod Volden 和 Stefan Schmidt
    该程序是自由软件、绝对没有任何担保
    请将错误报告给 sourceforge.net/.../

    dfu-util:文件大小太大:成功

    我试图找到一个解决这个文件大小问题的解决方案,但真的看不到任何可用的东西。  有什么建议吗?  duf-util, v 0.9是最新版本吗?

    谢谢!

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

    您好!

    您可以尝试使用微型文件系统。 在最新的9.2 SDK 中、基本映像可在中找到 TI-PROCESSOR-SDK-LINUX-am62xx-EVM-09.02.01.09/files/am62xx-EVM 目录。

    s duf-util, v 0.9最新版本?

    请切换到最新 SDK 版本以获取最新更新。 使用最新的 dfu-util v0.11刷写大文件。

    此致、
    Aparna

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

    我将使用 BuildRoot 编译 rootfs.ext4、它比 Yocto 映像要小得多。  我将尝试 dfu-util v0.11版本中使用、并让您知道我如何制作。

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

    我手动构建 dfu-util V0.11。  运行"Dfu-util -l 时、我现在收到错误"符号查找错误:dfu-util:未定义的符号:libusb_set_option"。  我的主机是 Ubuntu 22.04、我已安装 libusb-1.0.0-dev。  是否还有人遇到此问题?

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

    我与 dfu-util 的作者合作、我们在我的 PC 上使用 V0.11。  现在、当我尝试将 rootfs.ext4下载到 eMMC 时、我从 u-boot 本身收到以下错误:

    => printenv dfu_alt_info_eMMC
    dfu_alt_info_emmc=rawemmc raw 0 0x800000 mmcpart 1;rootfs 部分0 1;tiboot3.bin.raw raw 0x0 0x400 mmcpart 1;tispl.bin.raw raw raw 0x400 0x1000 mmcpart 1;u-boot.img.raw raw 0x1400 0x2000 mmcpart 1;u-env.raw 0x3400;原始部分0x100 mmcpart 0x3600 0x1;sysfw.itb.raw 原始部分0x800
    => setenv dfu_alt_info ${dfu_alt_info_eMMC}
    => DFU 0 MMC 0
    generic_phy_get_bulk:无 phys 属性
    请求超出指定区域!

    文件 rootfs.ext4只有2GB、我们电路板上的 eMMC 大小为16GB。

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

    您好!

    您是否可以在 U-boot 提示符下运行以下命令并共享输出?
    => MMC 器件

    因此、我们可以更改 DFU 尝试访问的分区。

    此致、
    Aparna

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

    这是我得到的结果:

    => MMC 器件

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

    Part Start LBA End LBA Name (部分开始 LBA 结束 LBA 名称)
    Attributes
    键入 GUID
    分区 GUID
    1 0x00000022 0x00000061"引导"
    attrs:0x0000000000000000
    类型:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
    GUID:5dd0385b-a688-4e0e-98a9-168fd913463a
    2 0x00000062 0x01d327de "rootfs"
    attrs:0x0000000000000000
    类型:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
    GUID:c965b8bf-f9a3-4576-adf8-6f8379bd7dd5
    =>

    => printenv dfu_alt_info_eMMC
    dfu_alt_info_emmc=rawemmc raw 0 0x800000 mmcpart 1;rootfs 部分0 1;tiboot3.bin.raw raw 0x0 0x400 mmcpart 1;tispl.bin.raw raw raw 0x400 0x1000 mmcpart 1;u-boot.img.raw raw 0x1400 0x2000 mmcpart 1;u-env.raw 0x3400;原始部分0x100 mmcpart 0x3600 0x1;sysfw.itb.raw 原始部分0x800
    =>

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

    您好!

    根据上述日志、应将 rootfs 刷写到 UDA 的第二个分区中。

    您是否能够在 dfu_alt_info_eMMC 变量中进行以下更改:

    => editenv dfu_alt_info_eMMC

    dfu_alt_info_emmc=rawemmc 原始值0 0x800000 mmcpart 1; rootfs 第0部分2. ;tiboot3.bin.raw raw 0x0 0x400 mmcpart 1;tispl.bin.raw raw 0x400 0x1000 mmcpart 1;u-boot.img.raw 0x1400 0x2000 mmcpart 1;u-env.raw RAW 0x3400 0x100 mmcpart 1;sysfw.itb.raw raw 0x3600 0x800 mmcpart 1

    => setenv dfu_alt_info ${dfu_alt_info_eMMC}
    => DFU 0 MMC 0

    此致、
    Aparna

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

    ######################################################################################## 下载...确定
    按 Ctrl+C 退出...

    谢谢、下一个问题是它无法从 eMMC 引导。

    我在 uboot 中输入了以下命令:

    => MMC partconf 0 1 1 1
    => MMC bootbus 0 2 0 0
    设置为 BOOT_BUS_WIDTH = 0x2、RESET = 0x0、BOOT_MODE = 0x0
    => setenv mmcdev 0
    => setenv bootpart 0
    =>引导

    尝试通过 TFTP 引导、这样电路板上没有以太网。  以下是我得到的输出(u-boot 显然不喜欢某种情况):

    切换到分区#0、好
    mmc0 (第0部分)是当前器件
    在器件0上找到 SD/MMC
    无法设置块设备
    无法设置块设备
    ##错误:未定义"main_cpsw0_qsgmii_pyinit"
    无法设置块设备
    无法设置块设备
    libfdt FDT_CHECK_HEADER(): FDT_ERR_BADMAGIC
    未配置 FDT 存储器地址。 请配置
    FDT 地址通过"FDT addr

    "命令。
    正在中止!
    错误的 Linux ARM64图像魔术!
    切换到分区#0、好
    mmc0 (第0部分)是当前器件
    MMC:不存在卡
    正在启动 USB...
    总线 USB@31100000:generic_phy_get_bulk:no phys 属性
    寄存器1000840网络端口1.
    启动控制器
    USB xHCI 1.10
    正在扫描总线 USB@31100000设备... 找到1个 USB 设备
    正在扫描存储设备的 USB ... 找到0个存储设备

    设备0:未知设备
    在端口1上建立链路、速度为10、半双工
    BOOTP 广播1
    BOOTP 广播2.
    BOOTP 广播3.
    BOOTP 广播4.
    BOOTP 广播5.
    BOOTP 广播6.
    BOOTP 广播7.
    BOOTP 广播8.
    BOOTP 广播9.
    BOOTP 广播10.
    BOOTP 广播11.
    Bootp 广播12.
    Bootp 广播13.
    Bootp 广播14.
    Bootp 广播15.
    BOOTP 广播16.
    中国人民解放军17.

    重试时间超时;再次开始
    缺少环境变量:pxeuuid
    正在检索文件:pxelinux.cfg/01-64-1c-10-2a-78-64
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    正在检索文件:pxelinux.cfg/00000000
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    正在检索文件:pxelinux.cfg/0000000
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    正在检索文件:pxelinux.cfg/000000
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    正在检索文件:pxelinux.cfg/00000
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    正在检索文件:pxelinux.cfg/0000
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    正在检索文件:pxelinux.cfg/000
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    正在检索文件:pxelinux.cfg/00
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    正在检索文件:pxelinux.cfg/0
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    正在检索文件:pxelinux.cfg/default-arm-k3-am62x
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    正在检索文件:pxelinux.cfg/default-arm-k3
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    正在检索文件:pxelinux.cfg/default-arm
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    正在检索文件:pxelinux.cfg/default
    在端口1上建立链路、速度为10、半双工
    ***错误:`serverip'未设置
    未找到配置文件
    在端口1上建立链路、速度为10、半双工
    BOOTP 广播1
    BOOTP 广播2.
    BOOTP 广播3.
    BOOTP 广播4.
    BOOTP 广播5.
    BOOTP 广播6.
    BOOTP 广播7.
    BOOTP 广播8.
    BOOTP 广播9.
    BOOTP 广播10.
    BOOTP 广播11.
    Bootp 广播12.
    Bootp 广播13.
    Bootp 广播14.
    Bootp 广播15.
    BOOTP 广播16.
    中国人民解放军17.

    重试时间超时;再次开始
    在端口1上建立链路、速度为10、半双工
    BOOTP 广播1
    BOOTP 广播2.
    BOOTP 广播3.
    BOOTP 广播4.
    BOOTP 广播5.
    BOOTP 广播6.
    BOOTP 广播7.
    BOOTP 广播8.
    BOOTP 广播9.
    BOOTP 广播10.
    BOOTP 广播11.
    Bootp 广播12.
    Bootp 广播13.
    Bootp 广播14.
    Bootp 广播15.
    BOOTP 广播16.
    中国人民解放军17.

    重试时间超时;再次开始

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

    我发现忘记使用 fitImage 和 Image 加载 eMMC 引导文件夹。  完成该操作后、由于定制板上没有 EEPROM、出现以下错误:

    EEPROM 在80时不可用、尝试在81时读取
    在0x51处读取板载 EEPROM 失败-121
    DRAM:未找到 Blobist!2 GiB
    内核:72个器件、32个 uClass、devicetre:单独
    MMC:MMC@fa10000:0、MMC@fa00000:1
    随处加载环境... 好的

    定制电路板上也没有可用的以太网。   我可以在 uboot 中安全地将两者关闭吗?

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

    您好!

     我能否在 uboot 中安全地关闭这两个选项?

    只要不妨碍您的启动过程、就不会出现这种问题。 在器件启动后、我们可以更改这些配置。

    您是否仍然能够获得完整的启动日志并引导至 Linux?

    此致、
    Aparna

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

    我很抱歉没有发送有关此问题的状态。  我终于能够获得启动的内核版本。  我能够关闭以太网、第一次通过引导时收到的错误消息消失了。  现在、我正在尝试断开 USB-USB 电缆的连接、以便它能够自动引导而不会引导。  我是否需要添加 uEnv 文件来使其运行?  我的引导模式已设置为 DFU-primary、eMMC-backup。

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

    您好!

    引导模式应设置为 eMMC、以便电路板从 eMMC 引导。

    此致、
    Aparna

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

    我在我们设计的定制电路板上没有这样的引导模式开关。  想法是让定制板使用 eMMC 作为主引导、并将 DFU 用作备用电源。  这不起作用吗?  我们是否需要添加开关?  板上并没有很大的空间用于这个目的。

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

    请注意、根据 spruiv7b.pdf、将保留位7用于上述 eMMC 引导(替代)设置。  

    Patra、该位7 (1)的值是否不正确? 您是指 BOOTMODE[6:3]= 1000b 下的 eMMC Boot Raw (1)模式、其中 BOOTMODE[7]表示 RAW 模式?

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

    我将向硬件人员询问他们为这个板上的每个引导模式引脚设置了什么、让我进行操作。  我仍有以下问题:

    如果我将电路板设置为 DFU 引导模式作为主要模式、并将 eMMC 作为备用模式、并且我已经成功地将 uboot/rootfs 编程到 eMMC 并验证了我可以从 uboot 提示符下启动电路板、那么如果我拉动 DFU USB 电缆、它是否应该最终自行启动?

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

    如果 DFU 无法在 PC 上枚举、那么如果 eMMC 是备份模式、我认为应该返回 eMMC 进行引导。  

    eMMC tiboot3.bin、tispl.bin R5和 u-boot A53代码库需要具有  

    在 am62x_EVM_A53_defconfig 中设置了 CONFIG_BOOTCOMMAND ="run envboot;run distro_bootcmd;"。

    这会根据 envboot 配置和后续命令 dustro_bootcmd 将 u-boot 驱动到引导。

    如果中断引导过程、您可以在=> u 引导提示符处看到这些-这将让您确认信息。 (printenv、bdinfo、mmc 零件、ls mmc 0、ls mmc 1、 printenv dfu_alt_info_eMMC、 printenv dfu_info_eMMC 等...

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

    HW 人员为定制电路板配置了 BOOTMODE 引脚:

    默认填充(eMMC 主要、DFU 备份)为:
    B[13-B0]= 00011101001011

    我发送给您的板上的组装(DFU 主要、eMMC 备份)为:
    B[13-B0]= 01011001010011

    这些设置对您来说是否正确?

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

    取决于定制板、是定制板中的 eMMC 端口0还是端口1?

    请参阅 SPRUIV7B–2022年5月–2023年9月修订-它对引脚进行了良好描述。 请注意、对于我的 partconf 设置、我未成功地使用 bootmode[6:3]=1000b 启动 eMMC。 我认为这与运行 u-boot 的 SoC 在运行 eMMC tiboot3...映像之前如何配置器件有关。 对我来说、eMMC 替代很好。

    主要:对于 USB、模式为0、这是 DFU 正确的。

    备份:您可以使用 eMMC/SD 进行备份。

    但请注意、默认的定制电路板配置是 eMMC 引导(替代)、可以很好地用作我的主引导。

    在 Linux 中、如果我想强制使用备份模式(在我的示例中、以太网加载一个全新的映像(工厂级更新))、我的计划是损坏 eMMC boot0闪存空间、因为它是 Linux 的单节电池(因此磨损等级更长)。 否则、我只会使用安装脚本或 scp 将我的应用程序更新到我的最新代码中。

    供参考:我对这件事感到沮丧- UDA/boot0/boot1 (甚至没有尝试与 DRM 相关的加密存储)、因此我在这里写了一篇文章:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1334061/processor-sdk-am62x-sk-am62x-evk---configuring-emmc-as-if-it-was-erased-factory-fresh-some-questions-about-mmc-hwpartion-mmc-partconf-gpt-and-related-commands

    请参阅最后一个响应(如果您有相同的结论、请告诉我-讨论硬件分区的 u-boot .rst 文件有助于我更好地遵循存储器布局)。

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

    Robert

    感谢您的答复!  根据您所说的内容以及引导模式文档、我相信我们在定制电路板上有正确的设置。

    这里是我所在的位置:

    我将"mmcdev 0"作为启动设备。  我使用了 GPT 分区1 (boot)和2 (rootfs)。  我成功使用 dfu-util 加载 eMMC 引导分区以及 tiboot3.bin、tispl.bin 和 u-boot.img。  我能够进入 uboot 提示符、设置 DFU 并使用 rootfs.ext4加载 eMMC rootfs 分区。

    rootfs DFU-load 完成后、我再输入以下命令:

    => setenv mmcdev 0

    => setenv bootpart 0:2

    =>引导

    内核初始化似乎可以正常工作、但 WiFi 没有出现。

    当我 在断开 USB-DFU 电缆的情况下重新启动电路板时、没有任何反应。

    下面是我找到的一些 uboot 信息:

    => printenv dfu_alt_info
    dfu_alt_info=rawemmc raw 0 0x800000 mmcpart 1;rootfs part 0 2;tiboot3.bin.raw raw 0x0 0x400 mmcpart 1;tispl.bin.raw raw raw 0x400 0x1000 mmcpart 1;u-boot.img.raw raw raw 0x1400 0x2000 mmcpart 1;u-env.raw 0x400 0x3400;sysfw.itb.raw 0x800 mmcstart 0x1;u-boot.raw 部分0x800 0x100 mmcart1

    => printenv bootcmd
    bootcmd=运行 envboot;运行 distro_bootcmd;

    => printenv envboot
    boot=mmc dev ${mmcdev};如果 MMC 重新扫描;则回显在器件${mmcdev}上找到的 SD/MMC;如果运行 loadbootscript;则运行 bootscript;否则如果运行 loadtenv;则回显从${boostenvfile}加载 env;运行 boostenv;fi;如果测试-n $uenvcmd;然后回显运行 uenvfi;

    => printenv dustro_bootcmd
    dirstro_bootcmd=用于${boot_targets}中的目标;执行运行 bootcmd_${target};完成

    我是否也需要将特殊的 uEnv.txt 加载到 eMMC 中?  目前、我没有定义一个并加载到 eMMC 中。

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

    我的 eMMC 也在物理器件0上。

    我正在使用 eMMC 替代-而不是 eMMC 文件 ys/Raw、即 boot0包含原始 FSBL 文件、UDA 是我的 bootpart 0、它包含一个具有两个文件系统分区的 GPT。 对于我来说、这意味着 MMC partconf 0 1 1 1 (第二个1? 对于 FSBL、为1索引=> boot0)。

    如果您在检查/dev/mmcXXXX 之前已引导 Linux  

    [报价 userid="366226" url="~/support/processors-group/processors/f/processors-forum/1394162/processor-sdk-am62x-is-it-possible-to-configure-ti-am62x-u-boot-to-use-dfu-util-for-emmc-loading/5362331 #5362331"]

    => setenv mmcdev 0

    => setenv bootpart 0:2

    =>引导

    [报价]

    不确定这是否有用、但请检查(我的 eMMC 交替模式):

    BRW-RW--> 1根磁盘179, 0 Apr 2817:57 /dev/mmcblk0    (. MMC 开发0)                    令人困惑的对吗? 这是 UDA 区域
    BRW-RW---1根磁盘179, 32 Apr 2817:57 /dev/mmcblk0boot0 (. MMC dev 0 1)  
    BRW-RW---1根磁盘179, 64 Apr 2817:57 /dev/mmcblk0boot1 (. MMC 开发0 2)
    BRW-RW---1根磁盘179, 1 Apr 2817:57 /dev/mmcblk0p1  (dev 0上的 GPT 分区1)          UDA 文件系统分区1
    BRW-RW---1根磁盘179, 2 Apr 2817:57 /dev/mmcblk0p2  ( dev 0上的 GPT 分区2)          UDA 文件系统 分区2.
    crw------- 1 root 用户240、4月28日17:57 /dev/mmcblk0rpmb  ( MMC 开发0 3)

    我相信 SD 卡和 eMMC 和文件系统的另一种方法如下:

    SD 卡和 eMMC  

    /dev/mmcblk0 - UDA

    /dev/mmcblk0p1 - FAT 16/32、其文件为 tiboot3.bin、tispl.bin 和 u-boot.image (?) 应跟随 SD 卡

    /dev/mmcblk0p2 -用于保存 Linux RFS 映像的 EXT4 Linux 文件系统。

    我相信您正在使用此方法? 我是手动操作、这意味着您不能使用1001b (交替)模式。 应用程序

    "当 eMMC 引导用作备份引导选项时、仅支持文件系统模式中的用户数据区域(UDA)。
    不支持 RAW 模式。 此外、在备份引导期间、仅在1位模式下进行引导。"

    因此、上述命令使用 FAT/EXT4文件系统进行备份的 SD/eMMC 卡布局。  如果你的适用于 eMMC 主(交替模式),它不适用于 UDA 文件系统备份模式。  

    -罗伯特

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

    我们的定制电路板上根本没有 SD 卡、因此我不需要担心引导问题、也不需要担心 FAT/EXT4分区。  我一直在使用的这块电路板是 DFU 主板、eMMC 模式备份板。  我们的其他电路板将 eMMC 作为 eMMC 主站和 DFU 备用站。  我认为接下来需要发生的是、我需要将电路板恢复回 eMMC 原始主引导模式。

    我仍然有一个问题: 是否需要 uEnv 文件来强制电路板使用 MMC bootpart 0:2?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我所做的是、对 eMMC 进行编程时、使用运行命令(定义 USER_COMMAND)将 uEnv.txt 文件放在0x3400 (最多0x800个块)处
    因此、这会引导至驻留 eMMC u-boot 映像中、因此:
    -config_BOOTCOMMAND="run envboot;run dustro_bootcmd;"
    +CONFIG_BOOTCOMMAND="MMC dev 0 1;MMC 读取${loadaddr}0x3400 0x800;env import -t ${loadaddr}0x800;run user_commands;"
    这将创建一种灵活的方法来修改 BOAD 引导方式(通过 uEnv.txt)。  
    我关心的引导模式开关设置是您显示了 eMMC 替代 BOOTMODE[7:0] 01001011 - boot0/boot1 (每个 partconf)和 ext4的 UDA。  
    从手动:
    当为 e 时 MMC 引导用作备用引导选项 支持文件系统模式中的用户数据区域(UDA)。
    不支持 RAW 模式。 此外、在备份引导期间、仅在1位模式下进行引导。
    因此、这意味着(再次)您将需要在闪存中使用 FAT16/32和 ext4分区-我认为这不包括 boot0/boot1。
    如果您想以这种方式使用、请在 UDA 分区上尝试此操作。 另一种方法是、如手册中所述、eMMC 替代方案不能用作备份选项。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有一点背景: 我展示的引导模式设置正是我现在用于对 eMMC 进行编程的设置。  我们有3个不同的原型、它们配置了各种引导模式设置、以尝试对 eMMC 进行编程。  如果没有可用于此定制设计的以太网和 SD 卡、就很难整合各种工具并付诸实践。

    基本上、如果切换到电路板、使用设计的引导模式设置(eMMC RAW 作为主器件、DFU/USB 作为备用件)、我认为我们应该没问题。  我们将尝试一下、因为我已经有一些脚本可以正常运行。

    我现在更清楚地理解 eMMC 引导作为备份选项、谢谢。  从我阅读的文档中、我认为不可能从 uboot 提示符在 eMMC 中设置 FAT 引导和 EXT4分区。  我已经阅读过有关使用 SD 卡执行此操作的信息、但此板没有该选项。  目前、我正在使用 XMODEM/Ymodem 来执行 uboot、然后我创建 eMMC 分区。  之后、我运行 dfu-util 以使用 uboot 和 rootfs 文件对 eMMC 进行编程。

    如果有另一种方法来创建 eMMC FAT/EXT4分区,我会尝试,欢迎任何建议。

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

    我想您原来的问题已经得到解答-如何通过 USB DFU 对 eMMC 进行编程?

    请关闭主题帖、然后打开一个新主题帖、其中包含您所需的主模式和备份模式表。

    我相信 GPT 可以将两个磁盘分成 FAT16和 ext4。 (tiboot3 et all on FAT16/32)和 RFS on ext4。 这应该允许您运行 eMMC 文件系统模式备份(或主要)以使您实现标准化。

    https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/Foundational_Components?U2-Boot/UG-Memory.htmlhighlight=gpt%20uuid

    注意:下面是我自己的一些参照,在这个研究期间(你现在的地方):

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1334061/processor-sdk-am62x-sk-am62x-evk---configuring-emmc-as-if-it-was-erased-factory-fresh-some-questions-about-mmc-hwpartion-mmc-partconf-gpt-and-related-commands/5121739?tisearch=e2e-sitesearch&keymatch=gpt%20AM623#5121739

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

    感谢您的所有帮助。  我将打开您建议的另一个主题、因为这已迁移到此时的另一个主题。