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上了:

bash 复制代码
# 测试SD0的分区2
setenv bootargs 'console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootwait earlyprintk rootfstype=ext4'
# 启动
boot


# 测试SD1的分区2
setenv bootargs 'console=ttyPS0,115200 root=/dev/mmcblk1p2 rw rootwait earlyprintk rootfstype=ext4'
# 启动
boot

注意:如果putty无法完成用户指令交互,请重启计算机,重新打开串口多试几次。

2)寻找错误

bash 复制代码
# 原先的提示
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.3V

4)配置petalinux-config->Image Packaging Configuration

在依据步骤2)配置Device node of SD device

bash 复制代码
# 如果SD挂载到SD0了,那么填
/dev/mmcblk0p2

# 如果SD挂载到SD1了,那么填
/dev/mmcblk1p2

5)配置设备树,强制SD卡配置

bash 复制代码
/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;       
};

6)petalinux-build

7)下面是我的已经打包好的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,可以看到如下信息

bash 复制代码
mmcblk1     29.1G 0 disk 
├─mmcblk1p1  512M 0 part  /boot
└─mmcblk1p2 28.6G 0 part  /

3)执行命令编辑 fstab 文件:

bash 复制代码
vi /etc/fstab

4)源文本的内容大致是这样的

bash 复制代码
/dev/mmcblk0p1  /boot  vfat  defaults  0  2
/dev/mmcblk0p2  /     ext4  errors=remount-ro  0  1

5)修改为mmcblk1就行

bash 复制代码
/dev/mmcblk1p1  /boot  vfat  defaults  0  2
/dev/mmcblk1p2  /     ext4  errors=remount-ro  0  1

6)重启系统

bash 复制代码
reboot
相关推荐
szxinmai主板定制专家4 小时前
AMR 项目落地:机器人控制器硬件定制化需求复盘
arm开发·单片机·fpga开发·系统架构·机器人·am62x
FPGA小迷弟1 天前
FPGA 与卫星:从星载硬件到在轨智能的完整技术解析
fpga开发·架构·fpga·1024程序员节·无线电
NamoAmitabha1281 天前
CPU 内部结构是什么?---deepseek
fpga开发
abc light1 天前
ARM 裸机开发(6)——时钟树与定时器
arm开发·单片机·fpga开发
156082072192 天前
JFMZQ28DR、JFMZQ68DR、RFsoc XCZU47DR、XCZU48DR 信号处理板
fpga开发·信号处理
XMAIPC_Robot2 天前
-40~85℃宽温实测:RK3588 机器人控制器硬件底座,长时间 SLAM 定位稳定性验证
人工智能·fpga开发·机器人·边缘计算·arm+fpga·rk3588+fpga
樱木花道長2 天前
AMD Ross 深度系列 8:FAQ 七问七答(文末附网盘链接)
人工智能·fpga开发
FPGA小迷弟2 天前
FPGA 与无人机:从飞控实时性到智能载荷的硬件加速实践
人工智能·ai·fpga开发·架构·无人机·ai编程
低慢小uav2 天前
(已解决)Zynq芯片lwip协议栈,使用tcp作为服务器Service,接收大量数据时,长度接收正常,接收对数据校验,校验和异常分析
网络协议·tcp/ip·fpga开发
szxinmai主板定制专家2 天前
ARM+FPGA 数控机床控制器:选 CODESYS SoftMotion CNC,还是基于 LinuxCNC 自研搭建?架构、授权、实时性、量产风险深度对比
arm开发·fpga开发·codesys·数据采集卡·linuxcnc·rk3576