ZYNQ关于挂载UBI卷时候出现的错误

问题描述:zynq挂载ubi卷的时候,出现错误

zynq> ubimkvol /dev/ubi0 -n 0 -N uavde -s 35MiB

libubi: error!: cannot get information about "/dev/ubi0"

        error 2 (No such file or directory)

ubimkvol: error!: error while probing "/dev/ubi0"

          error 2 (No such file or directory)

解决方案:首先看字面意思,是没有找到/dev/ubi0的节点信息。

我们对ubi挂载的整个过程进行分析:

查看linux系统中有关mtd与ubi的接口:

Cat /proc/mtd :可以看到当前系统的各个mtd分区的情况

或者查看cat /proc/partitions,查看系统分区情况

Cat /sys/class/ubi/ubi0/* 当前系统的ubi情况

Ls /dev/* 查看设备节点

挂载ubi

Ubiformat /dev/mtduramdisk.image.gz1 格式化mtdblock1

Ubiattach /dev/ubi_ctrl -m 0 将mtdblock1与ubi建立链接,命令输出如下:

ubiattach /dev/ubi_ctrl -m 0 -d 0

系统自动将mtd0 关联到ubi0设备上,在/sys/class/ubi/目录下就可以找到ubi0这个虚拟设备的连接

 

zynq> ubiattach /dev/ubi_ctrl -m 0 -d 0

ubi0: default fastmap pool size: 20

ubi0: default fastmap WL pool size: 10

ubi0: attaching mtd0

ubi0: scanning is finished

ubi0: empty MTD device detected

ubi0: attached mtd0 (name "uavde", size 50 MiB)

ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes

ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048

ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096

ubi0: good PEBs: 400, bad PEBs: 0, corrupted PEBs: 0

ubi0: user volume: 0, internal volumes: 1, max. volumes count: 128

ubi0: max/mean erase counter: 0/0, WL threshold: 4096, image sequence number: 1756202480

ubi0: available PEBs: 314, total reserved PEBs: 86, PEBs reserved for bad PEB handling: 80

ubi0: background thread "ubi_bgt0d" started, PID 833

UBI device number 0, total 400 LEBs (50790400 bytes, 48.4 MiB), available 314 LEBs (39870464 bytes, 38.0 MiB), LEB size 126976 bytes (124.0 KiB)

  命令:ubimkvol /dev/ubi0 -n 0 -N uavde -s 35MiB  从ubi0设备上创建一个ubi卷,在/sys/class/ubi/下就会生成ubi0_0目录

 

整个挂载过程如下:

Ls /sys/class/ubi/ 可以看到该目录下增加了一个ubi0的子目录

Cat /sys/class/ubi/ubi0/dev   可以得到该ubi0设备的主次设备号, 如249:0

Cat /sys/class/ubi/ubi0/volumes_count 结果为0,表示该ubi上没有任何的volume

Ls /dev/ubi*  如果/dev中没有ubi0.那么可以手动创建 mknod /dev/ubi0 c 249 0

Ubimkvol /dev/ubi0 -s 100MiB -N uavde  ,在ubi0上创建一个volume,

Ls /sys/class/ubi/ 可以看到该目录下增加一个ubi0_0的目录,代表ubi0上的第一个volume,

Cat /sys/class/ubi/ubi0_0/dev 可以得到该volume的主次设备号,249:1

Mount -t ubifs ubi0_0 /mnt 将ubi0_0挂载到本地目录/mnt上

 

Mdev的主要作用就是初始化对象和动态更新

Mdev会扫描/sys/class和/sys/block目录下的所有的类设备目录,如果在类设备目录中含有名为dev的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev目录下创建设备节点文件。

一般只在启动时才执行一次 mdev -s,就应该会自动创建设备节点,但是奇怪的是在建立ubi链接的时候,没有自动建立设备节点,只有重新执行一次mdev -s才可以正常建立设备节点。这个原因还有待查一查。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

长沙聚为科技有限公司

聚为电子,专注于ZYNQ领域,所有产品独立自主研发、自主创新,所有产品完全拥有自主知识产权,公司提供完整的嵌入式产品和整体解决方案,协助客户快速设计、开发并生产出高性能、高可靠性的嵌入式产品,能为客户提供从硬件到软件的整体解决方案,减少产品的开发风险和缩短产品的研发生产周期及进入市场周期。公司提供专业的ZYNQ技术服务,专注于嵌入式方案的定制开发。依托资深的ZYNQ技术及资源优势,为客户提供全方位的支持和服务。

网址:http://www.csjuwei.com/

电话:0731-82826518

电子邮件:[email protected]

手机号:18073164796 (微信同号)

QQ:1530182157

扫描聚为科技微信二维码详细咨询 

ZYNQ关于挂载UBI卷时候出现的错误_第1张图片

你可能感兴趣的:(ZYNQ关于挂载UBI卷时候出现的错误)