UBIFS文件系统搭建与配置(Micro2440 + linux 2.6.39)

发布者:心愿成真最新更新时间:2022-07-11 来源: csdn关键字:UBIFS  文件系统  Micro2440  linux  6 手机看文章 扫描二维码
随时随地手机看文章

1. UBIFS文件系统配置

a) 内核配置


        2.6.27以后,ubifs被整合进内核树中,本文档所使用的2.6.39内核中已经包好UBIFS的相关代码,因此直接进行make menuconfig配置即可。


        Device Drivers  --->


                <*> Memory Technology Device (MTD) support  ---> 


                <*>   Enable UBI - Unsorted block images  ---> 


        File systems  --->


                [*] Miscellaneous filesystems  --->


                <*>   UBIFS file system support


                [*]     Extended attributes support


                [*]     Advanced compression options


                [*]       LZO compression support 


                [*]       ZLIB compression support


b) 创建UBIFS相关设备节点(没有以下两个设备文件的则需要创建,可将命令加到/etc/init.d/rcS中,让其开机自动创建)


        # mknod /dev/ubi_ctrl c 10 63


        # mknod /dev/ubi0 c 251 0  //这个文件没有的,通过cat /proc/devices//查询主设备号,如果主设备号不对,将无法//执行ubimkvol


c) 格式化一空闲分区,用于挂载UBIFS


        # /mtd_tools/flash_eraseall /dev/mtd3


d) 将mtd3分区关联到ubi上(ubiattach可以在mtd-utils工具/busybox中取得,我这里是使用busybox中的)


        # ubiattach /dev/ubi_ctrl -m 3 //最后一个数据表示分区号


        如下图所示,提示“UBI error: ubi_io_write: error -5 while writing 512 bytes to PEB 0:512, written 0 bytes”错误。

        经上网查找原因,在http://www.linux-mtd.infradead.org/faq/ubi.html#L_subpage_verify_fail有对这个问题的专门描述:


        I get "ubi_io_write: error -5 while writing 512 bytes to PEB 5:512"


        If you have a 2048 bytes per NAND page device, and have CONFIG_MTD_NAND_VERIFY_WRITE enabled in your kernel, you will need to turn it off. The code does not currently (as of 2.6.26) perform verification of sub-page writes correctly. As UBI is one of the few users of sub-page writes, not much else seems to be affected by this bug.


        如上所述,我的NAND的页大小是2048B的,需要关闭内核配置CONFIG_MTD_NAND_VERIFY_WRITE。


        Device Drivers  --->


                <*> Memory Technology Device (MTD) support  --->


                         <*>   NAND Device Support  --->


                                [ ]   Verify NAND page writes  


        修改配置后生成uImage并下载至开发板运行,此时已经可以顺利将mtd3分区关联到ubi上。

 

e) 设定volume 大小(不是固定值,可以用工具改变)及名称(ubimkvol可以在mtd-utils工具/busybox中取得,我这里是使用busybox中的)


        结合上一步(d步)的打印信息可知,这个分区总共有250MiB的空间,有2005片PEB可用,其中要分出一小部分PEB以供UBI运行时使用(具体多少没研究),还剩大部分PEB用来存储数据。因此这里设置volume 大小为240MiB,使用全部250MiB会提示错误。


        # ubimkvol /dev/ubi0 -N root -s 240MiB


f) 挂载/卸载文件系统


        # mount -t ubifs ubi0:root /mnt


        # umount /mnt   


g) 重复挂载


        如果系统重启了,只需要重新执行关联(d步)和挂载(f步)操作即可。如果系统没有重新,则只需要执行f步操作即可。


        # ubiattach /dev/ubi_ctrl -m 3


        # mount -t ubifs ubi0:root /mnt


2. UBIFS文件系统映像制作

a) 下载较新版本的mtd-utils(旧版本没有ubi-utils)


       官方:http://git.infradead.org/mtd-utils.git 


       网盘:http://pan.baidu.com/s/1gd3Rk11 (mtd-utils-1.5.0.tar.bz2)


       如何编译mtd-utils-1.5.0这里就不作详细说明,直接解压后make即可,然后把生成的可执行文件(mkfs.ubifs)复制至/usr/bin中。这里需要注意一点的是,编译mtd-utils之前需要安装libacl-deve、lzo-devel、libuuid-devel,Cent OS可以使用yum来安装。


b) 使用mkfs.ubifs制作UBIFS镜像


       # mkfs.ubifs -m 2048 -c 1950 -e 129024 -r ./NFS -o fs_micro2440.uboot.ubifs


       以上命令的含义为将./NFS文件夹制作为UBIFS文件系统镜像,输出的镜像名为fs_mini.uboot.ubifs,-m参数指定了最小的I/O操作的大小,也就是NAND FLASH一个page的大小,-e参数指定了逻辑擦除快的大小,-c指定了最大的逻辑块号。通过此命令制作的出的UBIFS文件系统镜像可在u-boot下使用ubi write命令烧写到NAND FLASH上。


       命令的参数根据实际的NAND进行调整,可以在分区关联到ubi时的输出信息中获取参数(即ubiattach命令,上面d步),这里对主要的参数进行说明一下:


              -m: 最小的I/O操作的大小(也就是NAND FLASH的一个page的大小)


              -c : 最大逻辑擦除块的数量(文件系统总容量/逻辑擦除块大小)


                     我这个板子文件系统最多可以访问卷上的129024*1950=240M空间


              -e : 逻辑擦除块的大小


              -r : 要制作成镜像的根文件系统的路径


              -o : 最终制作成的根文件镜像的文件名


c) 配置ubinize.cfg


       在当前目录新建ubinize.cfg文件,并输入以下内容:


[ubifs]


mode=ubi


image=fs_micro2440.uboot.ubifs


vol_id=0


vol_size=240MiB


vol_type=dynamic


vol_alignment=1


vol_name=root


vol_flags=autoresize


d) 转换成FLASH烧写格式


       # ubinize -o fs_micro2440.flash.ubifs -m 2048 -p 128KiB -s 512 ubinize.cfg


       使用ubinize命令可将使用mkfs.ubifs命令制作的UBIFS文件系统镜像转换成可直接在FLASH上烧写的格式(带有UBI文件系统镜像卷标)。通过此命令生成的ubi.img可直接使用NAND FLASH的烧写命令烧写到FLASH上。


       命令的参数根据实际的NAND进行调整,可以在分区关联到ubi时的输出信息中获取参数(即ubiattach命令,上面d步),这里对主要的参数进行说明一下:


              -o : 最终制作成的根文件镜像的文件名


              -m: 页面大小 


              -p: 物理擦除块大小 


              -s: 最小的硬件输入输出页面大小 (sub-page size)


e) 测试镜像是否能成功挂载


       # /mtd_tools/flash_eraseall /dev/mtd3


       # /mtd_tools/nandwrite -a -p /dev/mtd3 ./fs_micro2440.flash.ubifs


       # ubiattach /dev/ubi_ctrl -m 3


       # mount -t ubifs ubi0:root /mnt  

 

f) 通过UBIFS启动根文件系统


       到这里,已经可以知道制作的UBIFS镜像可以正常启动,并已把镜像通过MTD的FLASH工具烧写到NAND FLASH中(linux mtd3分区),现在可以修改Linux启动参数,让其挂载此分区为rootfs。


       # setenv bootargs 'mem=64M console=ttySAC0,115200 mac=00:60:6E:42:BA:80 ubi.mtd=3 root=ubi0_0 rootfstype=ubifs ip=192.168.2.123:192.168.2.222:192.168.2.1:255.255.255.0:::eth0:off '

关键字:UBIFS  文件系统  Micro2440  linux  6 引用地址:UBIFS文件系统搭建与配置(Micro2440 + linux 2.6.39)

上一篇:Micro2440 + Linux 2.6.39建立NFS
下一篇:YAFFS2文件系统搭建与配置(Micro2440 + linux 2.6.39)

推荐阅读最新更新时间:2024-11-16 20:17

在基于ADSP BF533的嵌入式Linux系统上的移植
1 引言 Boot Loader(内核引导程序)是在操作系统内核运行之前运行的一段自举程序,用于初始化硬件设备、改变处理器运行模式、重组中断向量和建立内存空间映射图,从而将系统的软硬件带到一个合适的状态或者用户定制的特定状态,以便为最终加载操作系统内核准备好正确的环境 。 嵌入式Linux系统常用的Boot Loader有arm-boot、redboot、U-Boot等。U-Boot (全称Universal Boot Loader)是当前比较流行的遵循GPL条件的开放源码项目。U-Boot具有源码公开的特点,开发人员可根据自身需要进行裁减;支持多种处理器和嵌入式操作系统内核;具有多种设备驱动源码:支持种引导方式;具有功能
[单片机]
在基于ADSP BF533的嵌入式<font color='red'>Linux</font>系统上的移植
I2C总线浅谈之(四)--STM8的IIC驱动文件示例
本示例提供STM8S103F核心板的IIC驱动文件源代码,亲测没有任何问题,博主使用来驱动AT24C256和电子罗盘MMC5883MA,IIC通信速率100kHz,可以调整时序延时时间。 直接贴源码: IIC.h #ifndef _IIC_H #define _IIC_H #include iostm8s103F3.h #include type_def.h #define IIC_SCL PC_ODR_ODR5 //设置SCL为GPIO--PC5 #define IIC_SDA PC_ODR_ODR6 //设置SDA为GPIO--PC6 #define READ_SDA
[单片机]
2440 I2C存储卡读写实验 AT24c08a
本实验为IIC总线通信协议,以友善之臂mini2440为实验平台,对其开发板上的AT24c08a指定位置写入字符串“hello”,并指定位置读出该位置的内容。 初始工作,首先需要配置GPE14、15管脚分别为IICSLC、IICSDA,并禁止上拉功能。然后设置IIC时钟频率,使能应答信号,并使IIC中断使能,禁止IIC中断屏蔽寄存器。 应答中断处理函数为清除中断标志位,清除中断标记flag。 指定内存写函数的实现为:首先设置主设备发送模式,写入从设备地址,清除中断标记,然后等待应答,写入设备内存地址,等待到应答后开始连续发送数据,存入指定空间。发送结束发出停止命令,结束本次通讯,让IIC状态改为开始状态,准备下
[单片机]
Galaxy Z Fold 2将在9月1日推出 价格高达1万6
如果您一直在等待 Galaxy Z Fold 2 的发布的话,那么今天的新消息或许会让您感到惊喜。 「Galaxy Z Fold 2 将于 9 月 1 日在三星称为 Unpacked Part 2 的活动中推出」。该声明是由官方的 Samsung Mobile Twitter 帐户在网上发布的。 该推文显示了可折叠的手机,并且部分打开。Galaxy Z Fold 2 顶部有扬声器格栅,右侧是音量按键和指纹扫描仪的所在位置。 Winfuture.de 的 Roland Quandt 也泄露了该设备在欧洲的价格。据他表示,可靠的消息来源指出 Galaxy Z Fold 2 的售价为 1999 欧元(德国),约 16332
[手机便携]
WIFI技术得到革新,Wi-Fi 6即将到来
在无线的世界里,一直存在两种通信类别,一类是蜂窝网络,即2G、3G、4G、5G,另一类则是Wi-Fi技术,IEEE 802.11 a/b/g/n/ac/ax,作为蜂窝网络的室内覆盖补充,Wi-Fi也承担着大量的数据流量卸载。 11月28日,Qorvo北京新闻发布会上,Wi-Fi之父、现任Qorvo无线连接业务部总经理Cees Links分享了Qorvo在无线网络领域的全新规划,应用于室内的全新Wi-Fi 6技术更是成为发布会的主角,他相信这项技术将在未来对于室内无线网络带来一次革新,给人们带来前所未有的网络体验。 新一代IEEE 802.11ax标准,现已改名Wi-Fi 6! 虽说不管是看视频、玩游戏,还是控制智
[网络通信]
WIFI技术得到革新,Wi-Fi <font color='red'>6</font>即将到来
Maxim 推出单节和2节电池电量计IC
      Maxim推出单节和2节电池电量计IC MAX17040/MAX17041和MAX17043/MAX17044。该系列电量计采用Maxim的ModelGauge算法,是业内仅有的无需测量电流即可精确估计Li+电池充电状态(SOC)的电量计。ModelGauge IC无需检流电阻,只需很少的几个外部元件,有效节省空间和成本。易用性、低方案成本和小方案尺寸使得该系列IC理想用于无线电话、智能手机、电子书、便携式游戏机、数码相机、手持电脑和金融终端、便携式导航设备以及便携式医疗设备等采用单节和2节Li+电池供电的手持式应用。 面临的挑战:在精确测量电池容量的同时最大程度地降低成本和占用空间       传统的L
[电源管理]
Maxim 推出单节和<font color='red'>2</font>节电池电量计IC
工程师笔记|通过 STLINK-V3SET I2C 接口将程序下载到 SRAM 中并执行的方法
1.引言 STM32 MCU 在 bootloader 模式下,可以通过多种可用外设(USART、CAN、USB、I2C、SPI等)将程序下载到内部存储器中,详细内容可参考应用笔记 AN2606《STM32 microcontroller system memory boot mode》。本文档主要介绍利用 STLINK-V3SET 调试/编程工具的 I2C 接口将程序下载到 SDRAM 中并执行的方法。 2.问题描述 问题源自客户的实际需求,希望通过 I2C 接口将程序下载到 SRAM 中执行,进行芯片功能性测试。 3.问题分析与定位 关于在 Bootloader 模式下的应用程序下载,有多篇 LAT 可参考。例如《如
[单片机]
Linux环境下基于I2C总线的EEPROM 驱动程序
  1 引言   I2C (Inter-Integrated Circuit1总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备。它是同步通信的一种特殊形式,具有接口线少、控制方式简单、器件封装形式小、通信速率较高等优点。在主从通信中,可有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。笔者在开发基于MPC8250的嵌入式Linux系统的过程中发现I2C总线在嵌入式系统中应用广泛,I2C总线控制器的类型比较多,对系统提供的操作接口差别也很大。与I2C总线相连的从设备主要有微控制器、EEPROM、实时时钟、A/D转换器等.MPC8250处理器正是通过内部的I2C总线控制器来和这些连接在I
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved