ZynqMP AXU4EV-E开发板,参考官方指导实现单emmc启动,但串口无输出
https://www.bilibili.com/video/BV1SS4y1p764/?spm_id_from=333.788&vd_source=6955302a8b636832b6c5825fb0b80f32
petalinux 2022.2或者2020.1
参考官方指导文档
1、用ps_hello的xsa
2、添加3个节点 project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
&sdhci1
&sdhci0
&dwc3_0
3、petalinux-config配置
Subsystem AUTO Hardware Settings --->
SD/SDIO Settings --->
Primary SD/SDIO (psu_sd_1)
Image Packaging Configuration
Root filesystem type--》EXT4
(/dev/mmcblk0p2) Device node of SD device
SD卡启动后,给EMMC分区vfat【2G】和ext4【5G】,将启动文件和rootfs放置到对应的分区中,
拨码到emmc启动方式,正常启动、串口有输出信息。
zynq 将u-boot env partition settings->image storage media(primary sd)
primary flash 修改为 primary sd
可以使用 petalinux-boot 命令查看启动过程。该命令可以提供更多的调试信息,并且可以帮助了解在哪里出现了问题。
另外可以使用 xsct 命令查看系统的设备树 (Device Tree),以确保设备树配置是正确的。
还可以试试使用 dmesg 命令查看内核的输出信息,以了解内核是否有任何错误信息。
可以使用 fdisk 命令来创建 EMMC 上的分区。该命令可以帮助创建所需大小的分区,并设置分区类型。
例如可以运行以下命令来创建一个名为 /dev/mmcblk0 的 2G vfat 分区:
sudo fdisk /dev/mmcblk0
n (新建分区)
p (主分区)
1 (第一个分区)
(回车) (默认值)
+2G (分区大小)
t (修改分区类型)
1 (选择第一个分区)
c (设置分区类型为 vfat)
w (写入分区表并退出)
然后可以使用 mkfs 命令来格式化该分区:
sudo mkfs.vfat /dev/mmcblk0p1
可以使用类似的方法创建另一个 ext4 分区。
接下来,可以使用 mount 命令来挂载分区:
sudo mount /dev/mmcblk0p1 /mnt
然后可以将文件复制到挂载的分区中。例如可以使用以下命令将启动文件复制到 vfat 分区中:
sudo cp boot/* /mnt
可以使用类似的方法将 rootfs 复制到 ext4 分区中。
可以使用 umount 命令来卸载分区:
sudo umount /mnt
还可以使用类似的方法将文件复制到其他分区中。
可以使用 bootgen 命令来生成启动文件,并将其复制到 EMMC 上的 vfat 分区中。
可以通过使用以下命令生成启动文件:
bootgen -image <boot image file> -o <output file>
可以使用以下命令将生成的启动文件复制到 EMMC 上的 vfat 分区中:
sudo cp <output file> /mnt
还需要在系统中设置正确的启动顺序。通常,需要将 EMMC 设置为第一个启动设备,以便在拨码到 EMMC 启动方式时,系统会可以试试从 EMMC 启动。
可以通过运行以下命令来更改启动顺序:
efibootmgr -o <device number>,<device number>,<device number>,...
其中, 是希望系统可以试试启动的设备的编号。
假如希望将 EMMC 设置为第一个启动设备,可以运行以下命令:
efibootmgr -o 1,2,3,4
在这种情况下,系统将从 EMMC 启动,如果失败,就从其他设备启动。
仅供参考,望采纳,谢谢。
望采纳!!!
你的配置看起来没有问题。如果你的串口没有输出信息,可能是串口连接有问题或者硬件有问题。我有几点建议供你参考:
1.确保你的串口连接正常,并且你使用的串口软件配置正确。
2.如果你使用的是 USB-UART 转换器,确保它的驱动已经安装正确。
3.在 PetaLinux 配置中,确保你已经启用了串口输出。你可以在 PetaLinux 配置的“ Kernel Bootargs”菜单中查看和配置启动参数。
4.如果你已经排除了以上所有可能的问题,你可以尝试更新固件或者重新烧录系统镜像。
5.如果以上都没有解决问题,你可以尝试检查硬件,排除硬件问题。
1、首先需要确保硬件配置上正确,然后需要在petalinux项目的 device-tree/system-user.dtsi 文件中添加正确的U-boot bootcmd 和 emmc启动相关节点配置;
2、下载并配置正确的U-boot 启动文件,并将此文件设置为系统的启动文件;
3、设置正确的Image Packaging Configuration 中 Root filesystem type,以及 SD/SDIO 设置中选择Primary SD/SDIO;
4、编译petalinux项目,然后将petalinux编译出来的启动文件和文件系统放置到对应的分区中,拨码到emmc启动方式进行测试;
5、如果启动成功,重新烧写 U-Boot 启动文件以及文件系统分区相关的文件,进行测试,最后确认串口有输出信息。
建议您可以尝试以下步骤来解决您的问题:
1 确保您已经正确地配置了eMMC启动,并且您的系统已经能够从SD卡启动。这可以通过在Petalinux项目目录下运行以下命令来实现:
petalinux-build
2 按照您的要求创建eMMC分区。您可以使用以下命令在eMMC上创建vfat和ext4分区:
sudo fdisk /dev/mmcblk0
在fdisk命令提示符下,输入“n”来创建一个新分区。按照提示输入分区号、起始块号和结束块号,然后输入“t”来更改分区类型。使用以下命令更改分区类型:
t 6 b # 为vfat分区更改类型为0xb
t 7 83 # 为ext4分区更改类型为0x83
输入“w”来保存更改并退出fdisk命令。然后,使用以下命令创建文件系统:
mkfs.vfat /dev/mmcblk0p6
mkfs.ext4 /dev/mmcblk0p7
3 将启动文件和rootfs拷贝到eMMC分区中。您可以使用以下命令将启动文件拷贝到vfat分区中:
mount /dev/mmcblk0p6 /mnt
cp -r <boot partition>/* /mnt/
umount /mnt
您还可以使用以下命令将rootfs拷贝到ext4分区中:
mount /dev/mmcblk0p7 /mnt
cp -r <rootfs partition>/* /mnt/
umount /mnt
4 将系统配置为从eMMC启动。您可以使用以下命令来配置u-boot从eMMC启动:
petalinux-config -c u-boot
在配置菜单中,选择“Boot Configuration”选项,然后在“Primary Boot Device”选项中选择“eMMC”。保存更改并退出配置菜单。
5 重新构建Petalinux项目并烧写eMMC。您可以使用以下命令重新构建Petalinux项目:
petalinux-build
然后,使用以下命令烧写eMMC:
petalinux-flash --u-boot <path to u-boot.sd file> /dev/mmcblk0
6 将系统拨码设置为eMMC启动,然后重新启动系统。根据您使用的开发板的不同,您可能需要使用跳线帽或者按钮来将系统拨码设置为eMMC启动。具体的操作方法可以参考开发板的用户手册或者相关文档。
在设置完拨码后,您可以使用以下命令重新启动系统:reboot
如果一切顺利,您的系统应该会从eMMC启动,并且串口应该会有输出信息。
希望对您有所帮助!望采纳。