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.

[参考译文] TMDS64EVM:通过 USB DFU 在 eMMC 上刷写 Linux 图像

Guru**** 2540260 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1346143/tmds64evm-flashing-linux-image-on-emmc-via-usb-dfu

器件型号:TMDS64EVM
主题中讨论的其他器件:UNIFLASH

尊敬的团队

我需要在 A53内核上运行 Linux、并在 R5上运行裸机应用程序。 我们可以通过 USB DFU 刷写 Linux 映像吗?

目前、我正在使用 SD 卡在 A53上引导 Linux。 如果没有 SD 卡、我们如何通过 USB DFU 将 Linux 映像放在 eMMC/OSPI 上?

此致、

Shraddha Naik。

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

    尊敬的 Shraddha:

    请参阅

    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

    此致、

    普拉桑特

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

    Prashant 您好!

    根据共享 链接、我 已   通过 USB DFU 成功刷写所有三个 Uboot 映像(tiboot3.bin、tispl.bin、u-boot.img)并进入 Uboot 提示符。   

    在 U-Boot 提示符下、对于以下命令、我收到如下所附的错误

    • DFU 0 MMC 0

    此致、

    Shraddha

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

    您好 Shraddha、

    您首先需要对 eMMC UDA 进行分区、以便可以将 Linux Rootfs 存储在其中一个分区中。 请参考: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/Foundational_Components U-Boot/UG-Memory.html#partitioning-eMMC-from-u-boot

    此致、

    普拉桑特

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

    感谢 Prashant 的支持。 我能够使用 USB DFU 在 eMMC 上刷写 Linux 映像。

    我有一些问题是通过 USB DFU 闪存的、

    对于 Linux 映像刷写、在 eMMC 和 GPMC?  

    2.是否可以在 eMMC/GPMC 上保留 U-Boot 映像和在 OSPI 上进行 rootfs (内核)并运行 Linux? 是否有这样做的风险?

    3.在刷写时、我们需要将 U-boot 映像刷写2次、 一组用于 USB-DFU 引导、另一组用于刷写到 eMMC。 在本例中、USB-DFU 映像的第一个 DSET 将存储在哪个内存位置? 在这种情况下、 是否会有人使用 USB Uniflash 写入器?

    4.对于 USB-DFU 的第一组映像、在传输第三个文件后、我们需要按 EVM UART 控制台上的任意键来停止 EVM 的自动引导。 有没有其他方法可以在没有人为干预的情况下自动实现这一目标? 此外、如果我们未能停止 EVM 的自动引导、下一步应该是什么、或者我们需要如何恢复它?

    5. eMMC 上的 Uboot 刷写完成后、如果我们需要将我们的应用程序映像用于其他内核(.appimage.hs-fs)、我们是否应该使用 USB DFU Uniflash 写入器进行闪存?

    6.对于在 eMMC 上刷写的 Linux、它将从哪个存储器地址开始刷写?  

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

    1.否、GPMC 的刷写过程不同。 有一个闪存至 NAND 的常见问题解答: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1288373/faq-how-to-flash-and-boot-u-boot-from-serial-nand-on-am62x-am62ax

    2. Linux 内核主要以 GBS 为单位,因此,假设 OSPI 闪存大小不大,您需要在 eMMC 中刷写 Linux。

    3.只需刷写1组图像。 USB DFU 引导映像仅通过 DFU 引导、不会在任何位置刷新。

    4.请参阅以下文档、该文档使用新开发的 DFU 闪存工具、可自动执行 DFU 闪存过程

    https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/latest/exports/docs/linux/Foundational_Components Tools/Flash_via_DFU.html

    5.您可以使用 MCU+ SDK 中的 UART Uniflash 工具来写入同样来自 MCU+ SDK 的.appimage.hs_fs。

    Linux 被刷写到 eMMC UDA 分区中。 请注意、eMMC 的硬件分区如下所示

    +---------+---------+--------+----------------------------------+
    |  boot0  |  boot1  |  rpmb  |          User Data Area          |
    +---------+---------+--------+----------------------------------+

    tiboot3.bin、tispl.bin 和 u-boot.img 会刷写到 Boot0分区中,而 Linux 会刷写到 UDA 的其中一个 GPT 分区中。

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

    对于第2点,我的错误,它实际上颠倒了,如果我们在 eMMC/GMPC 上的 OSPI & Linux 内核上保留 U 引导映像,有没有风险?

    对于第3点、USB DFU 引导映像是通过 DFU 引导 的、这意味着它使用任何 RAM 内存?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于第2点,我的错误,它实际上是相反的,如果我们在 eMMC/GMPC 上的 OSPI 和 Linux 内核上保留 U 引导映像,是否有任何风险?

    U-Boot 可从任何受支持的介质引导 Linux 内核。

    对于第3点,USB DFU 引导映像刚通过 DFU 引导 意味着它使用了任何 RAM 内存?

    是的、映像从 DDR 运行。

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

    谢谢 Prashant。

    第4点、我尝试使用 DFU_Flash.py 脚本进行刷写。 在本例中、我使用了预构建的图像并使用了以下命令、但它会卡在中间 、如屏幕截图中所示。

    $ python3 dfu_flash.py -d am64xx-evm -t hsfs -c /path/to/.cfg -r 

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

    这意味着该脚本未检测到连接到 PC 的任何 DFU 器件。

    $ python3 dfu_flash.py -d am64xx-evm -t hsfs -c /path/to/.cfg -r

    可以尝试使用 sudo 运行该脚本吗?

    $ sudo python3 dfu_flash.py -d am64xx-evm -t hsfs -c /path/to/.cfg -r 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    刷写成功后、我需要再次按串行终端上的任意键来停止 EVM 自动编码。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再次需要按串行终端上的任意键来停止 EVM 自动登录吗?  [/报价]

    否。 刷写成功后、更改引导模式引脚。 然后、电路板应引导刷写的映像。

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

    一旦我更改了引导模式引脚、我就会在终端

    在这里、我必须停止自动绘制、然后使用以下命令从 eMMC 引导?

    • setenv mmcdev 0
    • setenv 启动器件0
    • 启动

    总之、DFU_flash.py 中是否有任何命令要在刷写之前擦除 eMMC?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    无论如何,DFU_flash.py 是否有任何命令可以在刷写之前擦除 eMMC?

    是的、您需要在 U-Boot 处停止并运行这些命令。 请访问: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1343571/sk-am62b-p1-sk-am62b-p1

    无论如何,DFU_flash.py 是否有任何命令可以在刷写之前擦除 eMMC?

    该工具不支持这一点。 您可以从 U-Boot 中手动擦除 eMMC。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,您需要在 U-Boot 处停止并运行这些命令。

    在共享链接中、它提到要通过 eMMC 将 EVM 自动引导到 Linux、我们需要应用补丁。 我需要在哪个文件中添加这些更改?

    此外、DFU_flash.py 和 USB_DFU_Uniflash.py 是否有任何差异?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我需要在哪个文件中添加这些更改?

    补丁本身提到了该文件。 它将为"board/ti/am62x/am62x.env"

    此外,DFU_flash.py 和 USB_DFU_Uniflash.py 是否有任何差异?

    第一个来自 Processor SDK、而第二个来自 MCU+ SDK

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

    尊敬的 Prashant:

    我尝试擦除 eMMC 并再次从以下命令加载 Uboot 映像、结果成功。

    $ sudo python3 dfu_flash.py -d am64xx-evm -t hsfs -c /path/to/.cfg -r 

    复位后在串行终端上、它会进入 Uboot 提示符。  当我尝试 引导内核时、收到以下错误消息。

    此外、在 flash-files.cfg 文件中、 对刷写 rootfs.img 进行了注释。 这不是必需的?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我尝试 引导内核时,收到以下错误消息。

    您是否已将 Linux 闪存到 eMMC?

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

    不可以、因为我在 SDK 中的任何位置都没有找到 rootfs.img。 您是否可以共享链接以如何创建 rootfs.img。

    也有什么区别在屋顶. img & rootfs.ext4 ?

    我可以使用 从  tisdk-base-image-am64xx-evm.tar.xz 生成的 rootfs.ext4而不是 rootfs.img?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我能够使用 USB DFU 在 eMMC 上刷写 Linux 映像。

    您在这里说过您已在 eMMC 中刷写了 Linux。

    而且、flash-files.cfg 中使用的 rootfs.img 名称只是一个虚拟名称。 您应该使用 rootfs.ext4替换路径。

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

    抱歉、我的错。 我实际上是指它的 Uboot 映像。

    感谢您的澄清、wrt rootfs.ext4。 但现在、在刷写之前、我们需要手动进行分区吗?  

    现在,我用 rootfs.ext4替换了路径,但它被卡在中间。 这是因为"board/ti/am64x/am64x.env"中的以下设置吗?

    mmcdev=1
    bootpart=1:2

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ,但在刷新之前,我们需要手动进行分区?  [/报价]

    可以。 请参考: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/Foundational_Components U-Boot/UG-Memory.html#partitioning-eMMC-from-u-boot

    分区后、分区布局应类似于

    => mmc part
    
    Partition Map for MMC device 0  --   Partition Type: EFI
    
    Part    Start LBA       End LBA         Name
            Attributes
            Type GUID
            Partition GUID
    1     0x00000022      0x01da3fde      "rootfs"
            attrs:  0x0000000000000000
            type:   ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
            guid:   51342c80-6801-457b-928a-72c4a6a00d7a

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

    Prashant 您好!

    我将遵循以下步骤、但仍然无法通过 DFU 闪存使用 Linux 引导 EVM

    1. 关闭 EVM 电源、引导模式开关更改为从 USB DFU 引导

    2.从以下命令加载 Uboot 映像并进入 Uboot 提示符。

           sudo python3 dfu_flash.py -d am64xx-evm -t hsfs -c /path/to/.cfg -r

    3.在 Uboot 提示符下,eMMC 分区已完成。 在分区后,我得到了与您在上一个评论中分享的类似输出。

    4. 我再次为 EVM 通电、从同一命令"  sudo python3 dfu_flash.py -d am64xx-evm -t hsfs -c /path/to/.cfg -r"加载 Uboot images/linux 内核

    5.下载所有映像后、再次进入 Uboot 提示符、以运行以下命令从 eMMC 引导内核

    • setenv mmcdev 0
    • setenv 启动器件0
    • 启动

    6.关闭 EVM 电源 、并将引导模式开关更改为从 eMMC 引导

    7.串行终端上无输出/消息

    我在这里遗漏了什么内容还是做错了?

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

    尊敬的 Shraddha:

    在执行第5步之前、您能否通过以下步骤检查 eMMC 是否已正确分区

    ### Verify if the mmc is partitioned correctly
        ```
        => mmc part
    
        Partition Map for MMC device 0  --   Partition Type: EFI
    
        Part    Start LBA       End LBA         Name
                Attributes
                Type GUID
                Partition GUID
        1     0x00000022      0x01da3fde      "rootfs"
                attrs:  0x0000000000000000
                type:   ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
                guid:   51342c80-6801-457b-928a-72c4a6a00d7a
        ```
    ### List the files/folders in the selected partition
        ```
        => ls mmc 0:1
        <DIR>       4096 .
        <DIR>       4096 ..
        <DIR>      16384 lost+found
        <DIR>       4096 bin
        <DIR>       4096 boot
        <DIR>       4096 dev
        <DIR>       4096 etc
        <DIR>       4096 home
        <DIR>       4096 lib
        <SYM>         19 linuxrc
        <DIR>       4096 media
        <DIR>       4096 mnt
        <DIR>       4096 proc
        <DIR>       4096 run
        <DIR>       4096 sbin
        <DIR>       4096 srv
        <DIR>       4096 sys
        <DIR>       4096 tmp
        <DIR>       4096 usr
        <DIR>       4096 var
        ```
        ```
        => ls mmc 0:1 /boot
        <DIR>       4096 .
        <DIR>       4096 ..
        <DIR>       4096 EFI
        <SYM>         29 Image
                19376640 Image-6.1.80-ti-g2e423244f8c0
        <DIR>       4096 dtb
        <SYM>         32 fitImage
                8408718 fitImage-6.1.80-ti-g2e423244f8c0
        => ls mmc 0:1 /boot/dtb/ti
        <DIR>       4096 .
        <DIR>       4096 ..
                    1990 k3-am625-beagleplay-csi2-ov5640.dtbo
                    1990 k3-am625-beagleplay-csi2-tevi-ov5640.dtbo
                    2882 k3-am625-beagleplay-lincolntech-lcd185-panel.dtbo
                61115 k3-am625-beagleplay.dtb
                    1116 k3-am625-sk-dmtimer-pwm.dtbo
                    872 k3-am625-sk-ecap-capture.dtbo
                    1969 k3-am625-sk-lincolntech-lcd185-panel.dtbo
                    1116 k3-am625-sk-mcspi-loopback.dtbo
                    2462 k3-am625-sk-microtips-mf101hie-panel.dtbo
                    1406 k3-am625-sk-microtips-mf103hie-lcd2.dtbo
                    1636 k3-am625-sk-pwm.dtbo
                    2360 k3-am625-sk-rpi-hdr-ehrpwm.dtbo
                59546 k3-am625-sk.dtb
                    1915 k3-am62x-sk-csi2-imx219.dtbo
                    1886 k3-am62x-sk-csi2-ov5640.dtbo
                    1886 k3-am62x-sk-csi2-tevi-ov5640.dtbo
                    2131 k3-am62x-sk-csi2-v3link-fusion.dtbo
                    936 k3-am62x-sk-eqep.dtbo
                    1345 k3-am62x-sk-hdmi-audio.dtbo
                    478 k3-am62x-sk-hdmi-disable-fastboot.dtbo
                    4232 k3-am62x-sk-lpm-wkup-sources.dtbo
                    2192 k3-am62x-sk-mcan.dtbo
        =>
        ```
    

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

    => mmc part
    
    Partition Map for MMC device 0  --   Partition Type: EFI
    
    Part    Start LBA       End LBA         Name
            Attributes
            Type GUID
            Partition GUID
      1     0x00000022      0x01da3fde      "rootfs"
            attrs:  0x0000000000000000
            type:   ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
            guid:   6920369f-8855-4591-a250-21feb0b50bdc
    => ls mmc 0:1
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>      16384 lost+found
    <DIR>       4096 bin
    <DIR>       4096 boot
    <DIR>       4096 dev
    <DIR>       4096 etc
    <DIR>       4096 home
    <DIR>       4096 lib
    <SYM>         19 linuxrc
    <DIR>       4096 media
    <DIR>       4096 mnt
    <DIR>       4096 proc
    <DIR>       4096 run
    <DIR>       4096 sbin
    <DIR>       4096 srv
    <DIR>       4096 sys
    <DIR>       4096 tmp
    <DIR>       4096 usr
    <DIR>       4096 var
    => ls mmc 0:1 /boot
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>       4096 EFI
    <SYM>         24 Image
            20238848 Image-6.1.69-g82d2b82784
    <DIR>       4096 dtb
    <SYM>         27 fitImage
             8705222 fitImage-6.1.69-g82d2b82784
    => ls mmc 0:1 /boot/dtb/ti
    <DIR>       4096 .
    <DIR>       4096 ..
                2609 k3-am642-evm-icssg1-dualemac-mii.dtbo
                2225 k3-am642-evm-icssg1-dualemac.dtbo
                3102 k3-am642-evm-nand.dtbo
               59008 k3-am642-evm.dtb
               56595 k3-am642-sk.dtb

    请查看所附回复。

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

    一切看起来都很好。 您是否可以尝试引导以下命令:

    => setenv mmcdev 0
    => setenv bootpart 0:1
    => boot

    如有故障、请分享输出。

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

    我有一个问题是、我的 u-boot 映像存储在哪里?? 您能告诉我如何检查这一点吗?

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

    在串行终端上没有输出。 是空白的。

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

    尊敬的 Shraddha:

    我有一个问题,我的 u-boot 映像存储在哪里? 您能告诉我如何检查此项吗?

    U-Boot 映像存储在 eMMC Boot0硬件分区中、而 Linux 文件系统存储在 eMMC UDA 分区中。

    串行终端上没有输出。 其空白。

    您能否以文本形式共享完整的 UART 日志?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当 Linux 文件系统存储在 eMMC UDA 分区时,U-Boot 映像存储在 eMMC Boot0硬件分区中。

    因此,使用"ls mmc0:0"时,我应该得到存储在 eMMC 中的 u-boot 映像文件的列表,但我得到的是"**无法识别的文件系统类型**"。

    请查看随附的 UART 日志

    e2e.ti.com/.../ElashEmmc_5F00_DFUFlash.txt

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

    Prashant 您好!

    这有什么更新吗?

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

    关闭此、因为这里会进一步处理该问题

    e2e.ti.com/.../tmds64evm-flashing-uboot-and-linux-kernel-image-on-emmc-via-dfu-flash