最近在跟着何宾老师的《ZYNQ-7000嵌入式》这本书做uboot移植,结果移植的过程中遇到了这样的报错信息:
mmcblk0: mmc0:0001 00000 29.8 GiB (ro)
mmcblk0: p1 p2
VFS: Cannot open root device “mmcblk0p2” or unknown-block(179,2): error -30
很明显是因为“(ro)”SD卡的只读导致了文件系统无法挂载。
原因:因为SD卡有两种规格,一种大的,标准的SD卡;一种小的,Micro SD卡。如果是大SD卡,直接拨动SD卡上的开关就可以解除写保护;如果是Micro SD卡,因为板子设计的原因,可能就会出现这种情况。
解决方法:
1.在Vivado设计中单击IP INTEGRATOR下的Open Block Design;
2.在出现的Diagram窗口中双击ZYNQ IP核,打开Re-Customize IP;
3.单击I/O Peripherals中的SD0,出现SD0以及下属的CD和WP(write protect),WP就是我们要更改的地方;
4.单击WP后面的MIO 46复选框,出现下拉菜单,选择最上面的EMIO后,单击OK,在ZYNQ IP核上可见多出SDIO_0的接口;(第一次操作这里应该是个加号,单击加号就可以展开)
5.右击SDIO_WP,然后点击make external,就会出现一个SDIO0_WP_0的IN口。之后在约束文件里面加上约束就可以啦!(建议:我直接连到了一个开关上,其实也可以直接拉高或者拉低的)注意电平标准!(注意:一定要把SDIO0_WP点黄了再右键)
之后再插上SD卡,启动Uboot,就能成功挂载文件系统啦!