博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mtd-utils 及 ubi-utils 交叉编译
阅读量:7098 次
发布时间:2019-06-28

本文共 2093 字,大约阅读时间需要 6 分钟。

参考:

NAND是嵌入式系统一个很重要的部件,而mtd-utilts中包含了很多针对NAND的调试和测试的工具。

 

1. 在上下载最新的mtd-utils代码, 下面是以2009-07-03的代码为例。

2. 解压缩mtd-utils.tgz

3. cd mtd-utils,编辑common.mk: 增加CROSS=arm-linux-

4. 执行make即可。 

 

在mtd-utils中生成的主要工具有:

(1) flash_eraseall, 用于擦除指定的MTD分区, 用法如下:

      ./flash_eraseall /dev/mtd1     擦除MTD1

      ./flash_eraseall -j /dev/mtd1  擦除MTD1并将其格式化为JFFS2

(2)  nanddump,  打印(或保存)NAND中的内容,用法如下:

     ./nanddump -s 0 -l 8024 -f result.dat /dev/mtd1    将mtd1中从地址0开始的8024长度的内容保存到result.dat中,(缺省的,包含OOB的内容)

     注意,用vi或vim查看result.dat的内容时是2进制,在命令模式下,输入%!xxd即可转换为十六进制的可读内容。

(3)  其他的还有nandwrite, nandtest等。

 

 

在mtd-utils/ubi-utils中生成的工具是针对UBIFS的,包含:

(1)mtdinfo: 输出指定的mtd分区的信息, 该命令只对可读的设备分区有效。

用法: ./mtdinfo /dev/mtd1

 

(2)ubinfo:  输出指定的ubi设备的信息,不带参数时,输出系统所有的ubi设备以及ubi控制设备信息。ubi控制设备即/dev/ubi_ctrl是一个字符设备,在后面还将用到。

用法:./ubinfo

      ./ubinfo /dev/ubi0

 

(3)ubiformat:格式化指定的mtd分区, 参数使用的是mtd的字符设备

用法:./ubiformat /dev/mtd1

 

(4)ubiattach:将指定的mtd分区关联到ubi上

用法:./ubiattach /dev/ubi_ctrl -m 1, 将mtd1关连ubi

 

(5)ubidetach:解除mtd与ubi的关联

用法:./ubidetach /dev/ubi_ctrl -m 1

 

(6)ubimkvol:创建一个voluem,volume才是最终用户挂载文件系统的地方。

用法:在ubi2上创建4个olume,每个大小是20M, 名字分别为my_vol_a, my_vol_b, my_vol_c, my_vol_d.

./ubimkvol /dev/ubi2 -s 20Mib -N my_vol_a

./ubimkvol /dev/ubi2 -s 20Mib -N my_vol_b

./ubimkvol /dev/ubi2 -s 20Mib -N my_vol_c

./ubimkvol /dev/ubi2 -s 20Mib -N my_vol_d

 

(7)ubirename: 更改ubi某个olume的名字,或者完成两个volume的互换

用法:

(1)将ubi2上名字为my_vol_a的volume名字改为my_vol_newname

./ubirename /dev/ubi2 my_vol_a my_vol_newname

(2)将ubi2上名字为my_vol_b和my_vol_c的两个volume互换,

./ubirename /dev/ubi2 my_vol_b my_vol_c my_vol_c my_vol_b

 

(8)ubirmvol: 删除某个volume,可以通过名字或id指定具体的volume

用法: ./ubirmvol /dev/ubi2 -n 1

或./ubirmvol /dev/ubi2 -N my_vol_d

 

(9)ubinize: 创建ubi image。

用法: ./ubinize -o myubi.img -p 126976 -m 2048 my.ini

其中, -p, 指定的是目标flash的physical eraseblock的大小

       -s, 指定的是目标flash的minimum input/output unit 的大小, 这两个参数的值可以通过“cat /sys/class/ubi/ubi2/*”得到

       my.ini是配置文件,其中指定了原文件,目标volume的大小、名字等。其格式如小:

[jffs2-volume]

mode=ubi
image=../jffs2.img
vol_id=1
vol_size=30MiB
vol_type=dynamic
vol_name=jffs2_volume
vol_flags=autoresize
vol_alignment=1

(10)ubiupdatevol: 向指定的volume上写数据

用法:./ubiupdatevol /dev/ubi2_0 myubi.img

转载地址:http://cuhql.baihongyu.com/

你可能感兴趣的文章
[Web 前端] mobx教程(二)-mobx主要概念
查看>>
解决pycharm远程连接mysql错误1130代码的方法
查看>>
给font awesome中加入自定义图片
查看>>
JS数组控制台排序
查看>>
创业泡沫真他妈的大出血来了 --个人需要创业以谋生,行业需要创业以求变,国家需要创业以维稳...
查看>>
【转】安卓Java的虚拟机区别
查看>>
atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模
查看>>
Codeforces 91C Ski Base 加边求欧拉回路数量
查看>>
深度学习项目实战——“年龄预测”
查看>>
金融安全资讯精选 2017年第二期:金融网络安全和反欺诈方法论_金融新兴技术成熟度几何?...
查看>>
预编译指令包括:宏定义;条件编译;文件包含(就是include)
查看>>
(待编辑)贪心算法学习——会议安排问题
查看>>
getopts的使用
查看>>
lnmp安装学习
查看>>
CodeChef - QRECT Rectangle Query CDQ分治
查看>>
React Native系列(6) - 编译安卓私有React-Native代码
查看>>
初探12306售票算法(一)- 理论(转)
查看>>
shell中使用sqlplus及调试相关
查看>>
java.lang.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE 的理解
查看>>
Python学习【第23篇】:利用threading模块开线程
查看>>