主题中讨论的其他器件:UNIFLASH
尊敬的团队
我需要在 A53内核上运行 Linux、并在 R5上运行裸机应用程序。 我们可以通过 USB DFU 刷写 Linux 映像吗?
目前、我正在使用 SD 卡在 A53上引导 Linux。 如果没有 SD 卡、我们如何通过 USB DFU 将 Linux 映像放在 eMMC/OSPI 上?
此致、
Shraddha Naik。
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.
尊敬的团队
我需要在 A53内核上运行 Linux、并在 R5上运行裸机应用程序。 我们可以通过 USB DFU 刷写 Linux 映像吗?
目前、我正在使用 SD 卡在 A53上引导 Linux。 如果没有 SD 卡、我们如何通过 USB DFU 将 Linux 映像放在 eMMC/OSPI 上?
此致、
Shraddha Naik。
尊敬的 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 闪存过程
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 引导映像,是否有任何风险?
U-Boot 可从任何受支持的介质引导 Linux 内核。
对于第3点,USB DFU 引导映像刚通过 DFU 引导 意味着它使用了任何 RAM 内存?
是的、映像从 DDR 运行。
这意味着该脚本未检测到连接到 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 自动登录吗? [/报价]否。 刷写成功后、更改引导模式引脚。 然后、电路板应引导刷写的映像。
无论如何,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?
我能够使用 USB DFU 在 eMMC 上刷写 Linux 映像。
您在这里说过您已在 eMMC 中刷写了 Linux。
而且、flash-files.cfg 中使用的 rootfs.img 名称只是一个虚拟名称。 您应该使用 rootfs.ext4替换路径。
,但在刷新之前,我们需要手动进行分区? [/报价]分区后、分区布局应类似于
=> 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 引导内核
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
请查看所附回复。
尊敬的 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/.../tmds64evm-flashing-uboot-and-linux-kernel-image-on-emmc-via-dfu-flash