FPGA----完美解决VFS: Cannot open root device “mmcblk0p2“ or unknown-block179,2)问题

FPGA----完美解决VFS: Cannot open root device “mmcblk0p2“ or unknown-block179,2)问题 1、确保petalinux-config选中INITRAMFS系统是可以正常运行的2、为了根文件系统数据可以被保存一般将SD卡划分为两个分区一个是FAT32分区放内核另一个是EXT4分区放根文件系统3、问题的出现依据2的设置出现VFS: Cannot open root device mmcblk0p2 or unknown-block179,2): error -任意数字问题4、问题的原因zynq/zynqMP系列同时开启了SD0和SD1板卡电压不足时钟频率对接不上5、解决方案1首先给板卡上电启动在系统提示“Hit any key to stop autoboot”时分别测试到底SD卡挂载到SD0上了还是SD1上了# 测试SD0的分区2 setenv bootargs consolettyPS0,115200 root/dev/mmcblk0p2 rw rootwait earlyprintk rootfstypeext4 # 启动 boot # 测试SD1的分区2 setenv bootargs consolettyPS0,115200 root/dev/mmcblk1p2 rw rootwait earlyprintk rootfstypeext4 # 启动 boot注意如果putty无法完成用户指令交互请重启计算机重新打开串口多试几次。2寻找错误# 原先的提示 VFS: Cannot open root device mmcblk0p2 or unknown-block179,2) # 现在的提示 [ 44.860003] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,26)如果变了就知道到底SD卡挂载到了SD0还是SD1最简单的办法是看谁的运行时间长。如果设置mmcblk0p2 运行5秒就卡住但设置mmcblk1p2 运行44秒才卡住那么SD卡一定挂载到了SD1上。3设置Vivado的板卡电压为3.3V4配置petalinux-config-Image Packaging Configuration在依据步骤2配置Device node of SD device# 如果SD挂载到SD0了那么填 /dev/mmcblk0p2 # 如果SD挂载到SD1了那么填 /dev/mmcblk1p25配置设备树强制SD卡配置/include/ system-conf.dtsi / { }; # 如果是SD1就写sdhci1 如果是SD0就写sdhci0 sdhci1 { status okay; bus-width 4; disable-wp; no-1-8-v; no-sd-uhs-sdr104; no-sd-uhs-sdr50; no-sd-uhs-ddr50; cap-sd-highspeed; disable-cd; };6petalinux-build7下面是我的已经打包好的Debain 8根文件系统完美兼容petalinux 2019.1以上内核。欢迎大家下载https://github.com/qwer872336019/zynq_rootfs_epics_tcf/tree/masterhttps://github.com/qwer872336019/zynq_rootfs_epics_tcf/tree/master6、我的根文件系统之前是挂载到SD0上的如果你的SD卡在SD1上那么进入系统后会强制进入紧急模式。1在这个界面直接输入你的 root 密码回车就能进入 root 命令行。2输入lsblk可以看到如下信息mmcblk1 29.1G 0 disk ├─mmcblk1p1 512M 0 part /boot └─mmcblk1p2 28.6G 0 part /3执行命令编辑 fstab 文件vi /etc/fstab4源文本的内容大致是这样的/dev/mmcblk0p1 /boot vfat defaults 0 2 /dev/mmcblk0p2 / ext4 errorsremount-ro 0 15修改为mmcblk1就行/dev/mmcblk1p1 /boot vfat defaults 0 2 /dev/mmcblk1p2 / ext4 errorsremount-ro 0 16重启系统reboot