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.
工具与软件:
你(们)好
尊敬的 Kishan:
加载"//dtb/ti/k3-am62a7-sk.dtb 失败
U-Boot 在/boot/dtb/ti 目录下查找内核 devicetree 文件。 在创建 bootfs.img 之前、您是否将文件 k3-am62a7-sk.dtb 复制到了正确的位置?
你(们)好
感谢您的答复!
我已经将引导目录从文件系统复制到我的构建目录
tar -xvf tisdk-edgeai-image-am62axx-evm.tar.xz --strip-components=1 C build//boot
使用以下命令来创建 bootfs.img
截断-s 120M bootfs.img
DD if=bootfs.img bs=1M seek=150的/dev/null
mkfs.ext4 -O ^metadata_csum -F bootfs.img
mkdir -p 引导
sudo mount -t ext4 -o loop bootfs.img $(pwd)/boot
sudo cp -rv build/boot/* boot/
SYNC -f 启动
sudo umount -l boot
使用以下命令刷写 bootfs.img
设备:
> setenv dfu_alt_info ${dfu_alt_info_emmc}
> DFU 0 MMC 0
主持人:
sudo dfu-util -a boot -D bootfs.img
内核被污染了我是否需要将其他东西复制到引导目录或我是否在刷写过程中丢失了?
被污染的内核日志:
[ 3.542907] debugfs:目录"pd:182"、其中父级"pm_genpd"已存在!
[ 3.551719] debugfs:目录'pd:182'和父级'pm_genpd'已经存在!
[ 3.559061] debugfs:目录'pd:182'和父级'pm_genpd'已经存在!
[ 3.574179] ALSA 器件列表:
[3.577243]找不到声卡。
[ 3.618855] ext4-fs (mmcblk0p1 ):已安装的文件系统,带有序数据模式。 配额模式:无。
[3.627472] VFS:在设备179:1上安装了 root (ext4文件系统)。
[ 3.634092] devtmpfs:装入-2时出错
[3.638634]释放未使用的内核内存:1984k
[ 3.643269]作为初始化进程运行/sbin/init
[ 3.647565]作为 init 进程运行/etc/init
[ 3.651685]作为初始化进程运行/bin/init
[ 3.655773]作为初始化进程运行/bin/sh
[ 3.659659]内核严重错误-未同步:未找到工作初始化。 尝试将 init=选项传递给内核。 请参见 Linux Documentation/admin-guide/init.rst for GUI。
[ 3.673804] CPU:1 PID:1 Comm:swapper/0 not duced 6.1.80-ti-g2e423244f8c0 #1
[ 3.681188]硬件名称:Texas Instruments AM62A7 SK (DT)
[ 3.686746]呼叫跟踪:
[ 3.689183] dump_backtrace.part.0+0xdc/0xf0
[ 3.693457] show_stack+0x18/0x30
[ 3.696767] dump_stack_lvl+0x68/0x84
[ 3.700426] dump_stack+0x18/0x34
[ 3.703735] panic+0x188/0x348
[ 3.706783] kernel_init+0x124/0x130
[ 3.710355] ret_from_fork+0x10/0x20
[3.713925] SMP:停止辅助 CPU
[ 3.717844] Kernel Offset:disabled.
[ 3.721320] CPU 特性:0x00,000,00800800,084,0000420b
[3.726186]内存限制:无
[ 3.729235]--[结束内核恐慌-未同步:未找到工作中的 init。 尝试将 init=选项传递给内核。 请参阅 Linux Documentation/admin-guide/init.linux- rs
尊敬的 Kishan:
[报价 userid="622259" url="~/support/processors-group/processors/f/processors-forum/1412031/am62a7-bootfs-img-generation-and-emmc-flashing-over-usb/5409076 #5409076"]tar -xvf tisdk-edgeai-image-am62axx-evm.tar.xz --条带组件=1 -C build//boot如果我不是错的,你是试图创建一个120MB 的映像文件主机~900MB eageai rootfs tarball 吗?
你(们)好
我是否需要创建900MB 的 bootfs.img?
只有 evm.tar.xz 中的引导目录足以满足要求、我们还需要添加其他内容吗?
tar -xvf tisdk-edgeai-image-am62axx-evm.tar.xz --strip-components=1 C build//boot
bootfs.img 的大小应足以托管您选择的 rootfs、具体取决于项目的应用。
你(们)好
谢谢!
我的 bootfs.img 创建是否正确、或者我是否需要在其中添加其他内容?
尊敬的 Kishan:
创建 bootfs 映像的命令序列似乎是正确的、除非您应该知道要使用的文件大小、这是由您为项目使用的 rootfs 确定的。 例如、Processor SDK 提供以下预编译的 rootfs 映像:
- tisdk-edgeai-image-am62axx-evm.tar.xz [899MB]
- tisdk-tiny-image-am62axx-evm.tar.xz [25MB]
请注意、这些是压缩文件。 您必须对它进行解压缩才能查看托管根文件系统所需的空间大小。
你(们)好
非常感谢您的支持、
您能否指导我、如何 使用 dfu-util 将 tar.xz 文件刷写到 eMMC、以便我能够刷写整个设备?
我无法找到使用 dfu-util 通过 eMMC 刷写整个电路板的确切步骤。
tisdk-default-image-am62xx-evm.tar.xz
尊敬的 Kishan:
抱歉、这是我的错、我没有意识到您的"flash_bootfs.sh"脚本只闪存到 eMMC 引导分区、而不是 rootfs、我们以前的所有通信都是无效的。 很抱歉混淆。
您能否按照下面链接的说明刷写 eMMC?
您好、Bin、
我可以刷写 rootfs 系统、但如果我仅使用映像和 dtb 文件生成 bootfs.img、那么我无法完全引导设备、
您能否分享使用 dfu-util 准备内核映像和闪存方法的过程?
我将执行以下命令来准备 bootfs、其中我仅复制映像和 dtb 文件
截断-s 120M bootfs.img
DD if=bootfs.img bs=1M seek=150的/dev/null
mkfs.ext4 -O ^metadata_csum -F bootfs.img
mkdir -p 引导
sudo mount -t ext4 -o loop bootfs.img $(pwd)/boot
sudo cp -rv build/kisha/boot/* boot/
SYNC -f 启动
sudo umount -l boot
闪存命令:
#> setenv dfu_alt_info ${dfu_alt_info_eMMC}
#> DFU 0 MMC 0
sudo dfu-util -a boot -D bootfs.img
在上面链接的 e2e 常见问题解答中、它具有以下用于创建 rootfs 映像的指令:
The following instructions can be used to prepare the <your_rootfs.ext4> using tisdk-base-image-am62xx-evm.tar.xz: $ cd <path-ti-psdk>/filesystem $ dd if=/dev/null of=tisdk-base.ext4 bs=1M seek=300 $ mkfs.ext4 -F tisdk-base.ext4 $ mkdir mnt_fs $ sudo mount -t ext4 tisdk-base.ext4 mnt_fs $ cd mnt_fs $ sudo tar xvf ../tisdk-base-image-am62xx-evm.tar.xz $ cd .. $ sudo umount mnt_fs
然后、您需要使用以下命令将 rootfs 映像刷写到 eMMC。 请确保将内核映像和 dtb 复制到使用上述说明创建的 rootfs。
$ sudo dfu-util -a rootfs -D
您好、Bin、
此步骤将刷写完整的引导文件系统、我只想刷写内核和 dtb。
我已尝试此操作并刷写了器件、但它将擦除整个器件。
我们是否可以通过任何方法准备 bootfs.img 并仅更新 dtb 和内核映像?
尊敬的 Kishan:
要在 AM62Ax 电路板上运行 Linux、需要 Linux rootfs、如果 bootfs.img 仅具有内核映像及其 dtb、您应该在哪里将 rootfs 刷写到哪里?
您好、Bin、
我只刷写了 rootfs、我的问题是、我是否可以 只刷写内核和 dtb 映像而不是 rootfs?
因为如果我每次都在平台驱动程序中调试某些内容、我需要刷写完整的 rootfs、它会擦除设备上的所有内容。
因此、只在器件上刷写内核映像和 dtb。
好的、现在我了解了您想要解决的问题-只需在软件开发期间更新 eMMC 中的内核即可。
我可以考虑两种不同的解决方案。
1.在最初将整个 Linux 刷写到 eMMC 中后、每次需要更新内核映像或 DTB 时、将板从 eMMC 引导到 Linux、然后使用板上的任何接口复制/下载 Linux 中的各个文件、并将其写入 eMMC 中的相应位置、然后重新启动板。 这与 Linux 计算机的使用方法基本相同。
每当更新的内核映像或 dtb 导致电路板无法引导时、您需要使用 DFU 来刷写整个 rootfs 以便恢复。
-2. 对 eMMC 进行分区以将内核映像和 dtb 与 rootfs 分离、以便这两个文件都不在 rootfs 中。 然后、您可以随时使用 DFU 来更新内核映像和 DTB。 您只需修改 U-Boot 即可从新分区加载内核映像和 dtb、但不能从 rootfs 加载。
您好、Bin、
非常感谢您的支持!
您能否帮助 对 eMMC 进行分区以将内核映像和 DTB 与 rootf 分离?
请提供任何参考资料或步骤。
尊敬的 Kishan:
SDK 不支持此功能、因此我没有要向您展示的示例。 但我已经在上一篇文章中解释过,你应该能够遵循和实施它。
您好、Bin、
我已经使用"MACHINE="am62axx-evm" bitbake -k tisdk-edgeai-image"命令构建图像
从以下位置刷写 rootfs、但在启动电路板时、我的内核和 dtb 更改不会受到影响。
编译/部署-ti/images/am62axx-evm/tisdk-edgeai-image-am62axx-evm-20240930132544.rootfs.tar.xz
使用以下命令准备 ext4
mkdir -p mnt_fs
DD if=tisdk-base.ext4 /dev/null bs=1M seek=6144
mkfs.ext4 -F tisdk-base.ext4
sudo mount -t ext4 tisdk-base.ext4 mnt_fs
CD mnt_fs
sudo tar xvf ../tisdk-edgeai-image-am62axx-evm-20240930132544.rootfs.tar.xz
cd ./
sudo umount mnt_fs
刷写步骤:
# U-Boot 在运行前应等待连接:
#> setenv dfu_alt_info ${dfu_alt_info_eMMC}
#> DFU 0 MMC 0
sudo dfu-util -a rootfs -D tisdk-base.ext4
我是否需要按照以下命令中的说明来刷写内核和 dtb?
参考: [常见问题解答] SK-AM62:如何在 AM62x-SK E2上使用 USB DFU 进行 eMMC 刷写-处理器论坛-处理器- TI E2E 支持论坛
我具有以下配置
ls -lrth /dev/block/platform /*
lrwxrwxrwx 1根根根15一月1 1970 /dev/block/platform/boot ->../../mmcblk0p1
lrwxrwxrwx 1根根根15一月1 1970 /dev/block/platform/rootfs ->../../mmcblk0p2
root@am62axx-evm:~# dmesg | grep -i 'mmc'
[ 0.982369] mmc0:CQHCI 版本5.10
[ 1.023814] mmc0:fa1000.mmc [fa1000.mmc]上的 SDHCI 控制器使用 ADMA 64位
[1.098712] mmc0:启用命令队列引擎
[1.098730] mmc0:地址0001处的新 HS200 MMC 卡
[ 1.099359] mmcblk0:mmc0:0001 016G01 14.5 GiB
[ 1.102349] mmcblk0:p1 p2
[ 1.103025] mmcblk0boot0:mmc0:0001 016G01 8.00 MIB
[ 1.103919] mmcblk0boot1:mmc0:0001 016G01 8.00 MIB
[ 1.104808] mmcblk0rpmb:mmc0:0001 016G01 4.00 MiB、chardev (510:0)
[31.581167] EXT4-FS (mmcblk0p2 ):已安装的文件系统,带有序数据模式。 配额模式:无。
[35.894032] EXT4-FS (mmcblk0p2):重新安装。 配额模式:无。
[39.259037] EXT4-FS (mmcblk0p1 ):已安装的文件系统,带有序数据模式。 配额模式:无。
lrwxrwxrwx 1根根根号15 1月1日1970 /dev/block/platform/boot ->/../mmcblk0p1
lrwxrwxrwx 1根根根1月15日1970年/dev/block/platform/rootfs ->../../mmcblk0p2
好的、现在您的 eMMC UDA 有两个分区。
[报价 userid="622259" url="~/support/processors-group/processors/f/processors-forum/1412031/am62a7-bootfs-img-generation-and-emmc-flashing-over-usb/5452955 #5452955"]#> setenv dfu_alt_info ${dfu_alt_info_emmc}我从未执行此操作、但您需要修改$dfu_alt_info_eMMC、这样即可
sudo dfu-util -a rootfs -D tisdk-base.ext4
此"rootfs"指向 mmcblk0p2、而不是默认的 mmcblk0。
对于 DFU 闪存内核映像和将 DTB 写入 mmcblk0p1、您需要向$DFU_alt_info_eMMC 添加两个条目、以便这两个文件都能够以 FAT 文件格式写入 mmcblk0p1。
你(们)好
感谢您的答复!
我已经打印了 env 变量。
dfu_alt_info_emmc=rawemmc raw 0 0x800000 mmcpart 1; boot part 0 1; rootfs part 0 2; tiboot3.bin.raw raw 0x0 0x400 mmcpart 1; tispl.bin.raw raw 0x400 0x1000 mmcpart 1; u-1 dfu_alt_info_mmc=boot part 1 1; rootfs part 1 2; tiboot3.bin fat 1 1; tispl.bin fat 1 1; u-boot.img fat 1 1; uEnv.txt fat 1 1; sysfw.itb fat 1 1 dfu_alt_info_nand=NAND.tiboot3 part 0 1; NAND.tispl part 0 2; NAND.tiboot3.backup part 0 3; NAND.u-boot part 0 4; NAND.u-boot-env part 0 5; NAND.u-boot-env.backup part 07 dfu_alt_info_ospi=tiboot3.bin raw 0x0 0x080000; tispl.bin raw 0x080000 0x200000; u-boot.img raw 0x280000 0x400000; u-boot-env raw 0x680000 0x020000; sysfw.itb raw 0x6c000 dfu_alt_info_ospi_nand=ospi_nand.tiboot3 part 1; ospi_nand.tispl part 2; ospi_nand.u-boot part 3; ospi_nand.env part 4; ospi_nand.env.backup part 5; ospi_nand.rootfs par7 dfu_alt_info_ram=tispl.bin ram 0x80080000 0x200000; u-boot.img ram 0x81000000 0x400000
参考: [常见问题解答] SK-AM62:如何在 AM62x-SK E2上使用 USB DFU 进行 eMMC 刷写-处理器论坛-处理器- TI E2E 支持论坛
尊敬的 Kishan:
q1) 请分享如何更新"dfu_alt_info_emc"?
我想您可以引用 dfu_alt_info_mmc、它以 FAT 格式定义文件。
Q2) 是否需要按照下面的命令来刷写内核和 DTB?
是的、这种刷写 u-boot 二进制文件的方法没有变化。 它们与闪存内核和 DTB 无关、后者会进入不同的分区和格式。