日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

DM368开发 -- 制作ubifs文件系统

發布時間:2025/3/15 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DM368开发 -- 制作ubifs文件系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Ubifs 文件系統的制作和啟動

(重點)參看:UBIFS Support

參看:UBIFS - UBI File-System

UBI 文件系統是 JFFS2 的下一代文件系統,更適合 NAND FLASH。看到一些用戶在應用 UBIFS 時遇到些問題,現在做個簡要介紹。

1. 在 U-boot 和 kernel 中使能對 UBIFS 的支持

1.1 U-boot 的\include\configs\am335x_evm.h 中加入如下宏的定義:

#define CONFIG_CMD_NAND #define CONFIG_CMD_UBI #define CONFIG_CMD_UBIFS #define CONFIG_RBTREE #define CONFIG_MTD_DEVICE #define CONFIG_MTD_PARTITIONS #define CONFIG_CMD_MTDPARTS #define CONFIG_LZO

1.2 Kernel 中的 menuconfig:

Enabling UBI support on MTD devices. Device Drivers ---> Memory Technology Device (MTD) support ---> Enable UBI - Unsorted block images --->Enabling UBIFS file-system support. File systems ---> Miscellaneous filesystems ---> UBIFS file system support

2. 下載和編譯 MTD Utilites

2.1 下載 MTD Utilites:

通過 Git://git.infradead.org/mtd-utils.git 下載最新的 MTD-Utils 源代碼。
下載 3 個編譯所需的依賴庫
Zlib: ?http://zlib.NET/

Lzo: ?http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gze2fsprogs

e2fsprogs : ?https://www.kernel.org/pub/Linux/kernel/people/tytso/e2fsprogs/v1.42.12/

下載:ubifs文件系統 相關軟件包


在制作 ubifs 文件系統的過程中需要如下:
為方便操作,把下面將要安裝的數據包的解壓文件到存放在:/home/user/mtd
再mkdir install,下面將要運行的數據包生成的文件將會存放在:/home/user/mtd/install?

1),正確安裝數據包:

? ? ?zlib-1.2.5;lzo-2.06;e2fsprogs-1.42,mtd-utils-1.5.0
? ? ?這些數據包的版本最好如上所述,否則可能會導致無法生成所需的文件或生成的文件不正確
? ? ?這是制作 ubifs 過程中將要用到的所有的軟件包的連接:ubifs
?
1,zlib
? ? host$ tar xvf zlib-1.2.5.tar.gz
? ? host$ cd zlib-1.2.5/
? ? host$ ./configure --prefix=/home/user/mtd/install ? ? ?
打開其根目錄下的 Makefile,替換 ? gcc, ldshared, cpp, ar , ranlib 為如下:
? ? host$ gedit Makefile
? ? ? ? ? ?CC=arm-arago-linux-gnueabi-gcc
? ? ? ? ? ?LDSHARED=arm-arago-linux-gnueabi-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
? ? ? ? ? ?CPP=arm-arago-linux-gnueabi-gcc -E
? ? ? ? ? ?AR=arm-arago-linux-gnueabi-ar rc
? ? ? ? ? ?RANLIB=arm-arago-linux-gnueabi-ranlib
保存,退出
? ? host$ make
? ? host$ make install
? ? host$ cd ..
?
生成的 zlib.a 存放在 /home/user/mtd/install/lib 中;
生成的 zlib 的頭文件存放在 /home/user/mtd/install/include中。
zlib安裝完成!
?
2,lzo
? ? host$ tar xvf lzo-2.06.tar.gz
? ? host$ cd lzo-2.06/
? ? host$ ./configure --build=i686-pc-linux --prefix=/home/user/mtd/install --host=arm-arago-linux-gnueabi
? ? host$ make
? ? host$ make install
? ? host$ cd ..
?
生成的 liblzo2.a 存放在 /home/user/mtd/install/lib 中;
生成的 lzo 的頭文件 存放在 /home/user/mtd/install/include/lzo中
lzo安裝完成!
?
3,e2fsprogs
? ? host$ tar xvf e2fsprogs-1.42.tar.gz
? ? host$ cd e2fsprogs-1.42/
? ? host$ ./configure --build=i686-pc-linux --prefix=/home/user/mtd/install --host=arm-arago-linux-gnueabi
? ? host$ make
? ? host$ make install
? ? host$ cd lib/uuid/
? ? host$ make install
? ? host$ cd ../../../
?
生成的 libuuid.a 存放在 /home/user/mtd/install/lib 中;
生成的 uuid 的頭文件 存放在 /home/user/mtd/install/include/uuid 中。
e2fsprogs安裝完成!
?
4,mtd-utils
? ? host$ tar xvf mtd-utils-1.5.0.tar.gz
? ? host$ cd mtd-utils-1.5.0/
?
打開其根目錄下的Makefile,加入如下語句
? ? host$ gedit Makefile
? ? ? ? ? ?PREFIX = /home/user/mtd/install
? ? ? ? ? ?ZLIBCPPFLAGS = -I$(PREFIX)/include
? ? ? ? ? ?LZOCPPFLAGS = -I$(PREFIX)/include
? ? ? ? ? ?ZLIBLDFLAGS = -L$(PREFIX)/lib
? ? ? ? ? ?LZOLDFLAGS = -L$(PREFIX)/lib
? ? ? ? ? ?LDFLAGS += $(ZLIBLDFLAGS) $(LZOLDFLAGS)
? ? ? ? ? ?CFLAGS ?= -O2 -g $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)
? ? ? ? ? ?CROSS=arm-arago-linux-gnueabi-
?
保存,關閉,再打開 common.mk 文件,注釋 PREFIX=/usr 語句:
? ? host$ gedit common.mk
? ? ? ? ? ?# PREFIX=/usr
保存,關閉。
?
? ? host$ make WITHOUT_XATTR=1?
? ? host$ make install ?DESTDIR=/home/user/mtd/install
? ? host$ cd ..
?
交叉環境編譯的MTD通用工具就存放在 /home/user/mtd/install/sbin/中。
如mkfs.ubifs,ubinize 的工具(可執行文件)
至此,安裝數據包應該算是完成了。可先跳轉到 ? 2),生成鏡像文件,
?
5,安裝 mtd-utils 的疑難雜癥及其解決方法
如果在使用生成的 mkfs.ubifs 和 ubinize 可執行文件的過程中發生了如下錯誤,再回過頭來看這部分的內容
如:1,mkfs.ubifs 和 ubinize 這兩個文件無法執行;
? ? ? ?2,mkfs.ubifs 無法使用 命令參數 -F;
發生這些問題的原因是 mtd-ubifs 數據包沒有安裝正確,安裝的 mtd-ubifs 版本過低。
? ? ? ? ? ?解決方法:下載數據包 :mtd-utils_1.5.0-1_i386.deb
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?host$sudo dpkg -i ? mtd-utils_1.5.0-1_i386.deb
?
? ? ? 3,acl 庫版本過低,如 需要libacl1 的版本要大于 2.2.51,可當前的為:libacl1_2.2.49。
? ? ? ? ? ? 解決方法:下載數據包:libacl1_2.2.51-8_i386.deb
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?host$sudo dpkg -i ? libacl1_2.2.51-8_i386.deb
?
? ? ? 4,attr 庫版本過低,如 需要libattr1 的版本要大于 2.4.46,可當前的為:libacl1_2.1.11。
? ? ? ? ? ? 解決方法:下載數據包:libattr1_2.4.46-8_i386.deb
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?host$sudo dpkg -i ? libattr1_2.4.46-8_i386.deb
?
? ? ? 5,uuid 庫版本過低,如 需要libacl1 的版本要大于 2.19.1,可當前的為:libacl1_2.12.1。
? ? ? ? ? ? 解決方法:下載數據包:uuid-dev_2.19.1-2ubuntu3_i386.deb
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?host$sudo dpkg -i ? uuid-dev_2.19.1-2ubuntu3_i386.deb
?
對 dpkg命令有興趣的請看:ubuntu下用命令行運行deb安裝包
執行完更新庫版本的命令后,重新操作:1),正確安裝數據包:-> ?4,mtd-utils。
PS:Ubifs 的制作需要以下兩個命令
mkfs.ubifs: 制作 UBIFS image
ubinize: ? 根據 UBIFS image 制作 ubi.img,這個 ubi.img 是通過 u-boot 直接燒寫在 nand flash 分區上的。
?

2),生成鏡像文件

? ? 1,在使用 mkfs.ubifs 生成 ubifs.img 前,需要如下:
? ? ? ?1,把可執行文件 mkfs.ubifs , ubinize 這兩個文件放在某個目錄下。
? ? ? ? ? 并在在目錄下: ? host$mkdir filesystem
?
? ? ?2,把用于生產 ubifs.img 映像文件的 sbin,etc 等文件夾等復制到 filesystem 目錄下
? ? ? ? 如:本人將要用到的是:ti-sdk-am335x-evm/filesystem/base-rootfs-am335x-evm.tar.gz。
? ? ? ? 把以下文件或文件夾放于 filesystem目錄下:bin/,boot/,dev/,etc/,home/,lib/,
? ? ?media/,mnt /,proc/,sbin/,srv/,sys/,tmp/,usr/,var/, linuxrc。
? ? ? ? 其中 linuxrc是一個可執行文件,其余的都是文件夾
?
? ? ? ? !!!注意:linuxrc 這個可執行文件是用以引導內核加載文件系統的。
? ? ? ? 這個文件名在uboot設置環境變量中使用到。
?
?
U-Boot#setenv bootargs 'console=ttyO0,115200n8 noinitrd ip=off mem=256M rootwait=1 rw ubi.mtd=7,2048 rootfstype=ubifs root=ubi0:rootfs init=/linuxrc'
?
如果 init=*** 設置不正確的話,將會導致下面的錯誤:
? ? ? Kernel panic - not syncing: No init found. ?Try passing init= option to kernel.


? ? ? 3,執行以下命令生成 ubifs.img 映像文件
? ? ? ? ?開發板類型為am335x的需要添加 -F 命令參數,否則在加載 ubi.img 時內核可能會崩潰。
? ? ? ? host$mkfs.ubifs -r filesystem/ -F -o ubifs.img -m 2048 -e 126976 -c 1580
?
參數簡介:
-F:使能"white-space-fixup",如果是通過 u-boot 燒寫需要使能此功能。
-r:待制作的文件系統目錄
-m: NAND FLASH 的最小讀寫單元,一般為 page size
-e: LEB size,對于 AM335x 的 NAND driver,為 block size-2x(page size)
-c:文件系統所占用的最大 block 數,一般小于等于 block count -1
-o:輸出的 ubifs.img 文件
?
? ? ? 4,生成ubi.img 映像文件。
? ? ? ? ? ?1,創建以下文件:
? ? ? ? ? ? ? host$ gedit ? ubinize.cfg
? ? ? ? ? ? ? 在該文件寫入如下內容:
? ? ? ? ? ? ? ? ? ? [ubifs] ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? mode=ubi ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? image=ubifs.img ? ? ?
? ? ? ? ? ? ? ? ? ? vol_id=0 ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? vol_size=192MiB ? ? ?
? ? ? ? ? ? ? ? ? ? vol_type=dynamic ? ? ?
? ? ? ? ? ? ? ? ? ? vol_name=rootfs ? ??
? ? ? ? ? ? ? ? ? ? vol_flags=autoresize
?
? ? ? ? ? ? ?2,執行如下命令,生成 ubi.img 映像文件
? ? ? ? ? ? ? ? ? ? host$ ubinize -o ubi.img -m 2048 -p 128KiB -s 512 -O 2048 ubinize.cfg
?
參數簡介:
-p: block size。
-m: NAND FLASH 的最小讀寫單元,一般為 page size
-o:輸出的 ubi.img 文件
?
當使用這些命令的過程中,如果遇到了問題請轉到:1),正確安裝數據包:-> ?5,安裝 mtd-utils 的疑難雜癥及其解決方法。
?
至此,生成的 ubi.img 映像文件應該是正確的。
?

二、UBIFS文件系統鏡像的燒寫

以下主要說以下將UBIFS鏡像燒寫到NAND FLASH中的三種方法。

(1)在u-boot下通過nand write命令燒寫

使用ubinize命令制作的帶有卷標的UBIFS文件系統鏡像可以直接使用nand flash的燒 寫命令燒寫到NAND FLASH上,具體命令為:
tftp 0xc1180000 ubi.img
nand erase 0x400000 0x7c00000
nand write.e 0xc1180000 0x400000 0x3660000
關于tftp,nand 等命令使用格式請參見u-boot的help。
?

(2) 在u-boot下通過ubi write命令燒寫

使用mkfs.ubifs命令制作的UBIFS文件系統鏡像可以使用命令ubi write燒寫到NAND ?FLASH上,具體命令為:

1. 設置FLASH的分區,此處以128M NAND FLASH為例,分為5個區:

setenv mtdids nand0=nand0
setenv mtdparts mtdparts=nand0:0x20000(u-boot env),0x20000(UBL),0x1c0000(u-boot),0x200000(kernel),0x7c00000(filesystem)
?
設置完后,使用mtdparts命令可以看到分區信息:
device nand0 <nand0>, # parts = 5
#: name size offset mask_flags
?0: u-boot env 0x00020000 0x00000000 0
1: UBL 0x00020000 0x00020000 0
2: u-boot 0x001c0000 0x00040000 0
3: kernel 0x00200000 0x00200000 0
4: filesystem 0x07c00000 0x00400000 0
active partition: nand0,0 - (u-boot env) 0x00020000 @ 0x00000000

2. 燒寫文件系統:

nand erase 0x400000 0x7c00000
tftp 0xc1180000 ubifs.img
ubi create rootfs
ubi part nand filesystem
ubi write 0xc1180000 rootfs 0x1d1000
通過以上命令,可以將文件系統燒寫到第4個分區上,UBIFS文件系統卷標為rootfs。

3. 設置內核啟動參數:

setenv bootargs 'console=ttyS2,115200n8 ubi.mtd=4,2048 root=ubi0:rootfs rootwait rootfstype=ubifs rw ip=off'
這樣就可以將燒寫的UBIFS文件系統用作根分區了。

4. 要在u-boot下使用ubi,mtd等命令,需要配置一下u-boot

具體可參見: http://blog.csdn.net/longfeey/article/details/5881433

(3)在linux系統下燒寫

在linux系統下,可以使用ubiformat工具燒寫使用ubinize工具制作的UBIFS文件系統映像,此處以燒寫到NAND FLASH的5個分區上為例,具體命令為:

1. 查看FLASH的當前分區:

# cat /proc/mtd
dev: size erasesize name
mtd0: 00020000 00020000 "u-boot env"
mtd1: 00020000 00020000 "UBL"
mtd2: 00080000 00020000 "u-boot"
mtd3: 00200000 00020000 "kernel"
mtd4: 07c00000 00020000 "filesystem"

2. 擦除要燒寫的分區:

flash_eraseall /dev/mtd/mtd4

3. 燒寫UBIFS文件系統:

?ubiformat /dev/mtd/mtd4 -f /ubi.img

4. 掛載燒寫好的文件系統:

ubiattach /dev/ubi_ctrl -m 4 -O 2048
mount -t ubifs ubi0:rootfs /mnt/

5.在linux下創建UBIFS分區 ?

flash_eraseall /dev/mtd/mtd4
ubiattach /dev/ubi_ctrl -m 4 -O 2048
ubimkvol /dev/ubi0 -N rootfs -s 100MiB
mount -t ubifs ubi0:rootfs /mnt/

(4)從主機linux燒寫ubi文件系統

<1>啟動開發板,通過nfs根文件系統啟動開發板
<2>flash_eraseall /dev/mtd3
<3>ubiattach /dev/ubi_ctrl -m 3
<4>ubimkvol /dev/ubi0 -s 193MiB -N rootfs
<5>mount -t ubifs ubi0_0 /mnt
<6>cp -a /arago/* /mnt //arago/arago為要燒寫的文件系統,放在了nfs根文件系統之中。
<7>umount /mnt
<8>bootargs參數設置
ubi:setenv bootargs 'mem=364M@0x80000000 mem=320M@0x9FC00000 console=ttyO0,115200n8 noinitrd ip=off rootwait=1 rw ubi.mtd=3 rootfstype=ubifs root=ubi0:rootfs init=/init vmalloc=500M notifyk.vpssm3_sva=0xBF900000';saveenv
?
nfs: setenv bootargs mem=364M@0x80000000 mem=320M@0x9FC00000 console=ttyO0,115200n8 root=/dev/nfs rw nfsroot=192.168.2.104:/home/yxz1295324/targetfs,nolock ip=192.168.2.85:192.168.2.104:192.168.2.1:255.255.255.0::eth0:on vmalloc=500M notifyk.vpssm3_sva=0xBF900000
?
官方指導:
http://processors.wiki.ti.com/index.PHP/UBIFS_Support
參考網址:
http://processors.wiki.ti.com/index.php/UBIFS_Support#Flashing_UBIFS_image_to_a_NAND_partition
http://blog.sina.com.cn/s/blog_afeaebf00101figp.html
http://www.360doc.com/content/14/1015/18/18578054_417224516.shtml
http://www.360doc.com/content/15/1201/15/27345215_517173625.shtml

http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/59921.aspx



總結

以上是生活随笔為你收集整理的DM368开发 -- 制作ubifs文件系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产白丝袜美女久久久久 | 在线观看中文字幕码 | 少妇福利在线 | 黑人操日本女人视频 | 97久久久久| 6080毛片| 91色精品 | 午夜伦理影院 | 天天干夜夜撸 | 午夜激情视频网 | 人人干人人干人人干 | 亚洲色图美腿丝袜 | 五十路熟母| 丰满岳乱妇一区二区 | 欧美日本三级 | 日韩精品――色哟哟 | 日韩黄色一级视频 | 国产在线精品成人欧美 | 丁香婷婷九月 | 亚洲乱码中文字幕久久孕妇黑人 | 久久久久亚洲av无码专区 | 久久精品在线视频 | 制服丝袜中文字幕在线 | 在线视频中文字幕 | 一级黄色性生活视频 | 免费看一级黄色片 | 翔田千里一区二区三区av | 中文字幕综合网 | 国产精品制服丝袜 | 亚洲欧美日韩中文在线 | 日韩一区二区三区在线观看 | 亚洲综合在线播放 | av资源天堂 | 午夜做爰xxxⅹ性高湖视频美国 | 伦理自拍 | 性饥渴的农村熟妇 | 三日本三级少妇三级99 | 国产精品美女久久 | 色狠狠一区二区三区香蕉 | 国产在线精品一区二区 | 国产高潮久久久 | 精品无码国产一区二区三区av | 男人日女人的网站 | 国产不卡一区二区视频 | 麻豆av一区二区三区在线观看 | 加勒比在线免费视频 | 午夜精品一区二 | 久久93| 不卡的在线视频 | 欧美黄色特级片 | 黄色草逼视频 | 久久精品色妇熟妇丰满人妻 | 在线视频欧美亚洲 | 最近中文字幕在线mv视频在线 | 明里柚番号 | 999久久| 综合天天色 | 久久五月网 | www.一起操| 国内精品视频一区二区三区 | 一二三区中文字幕 | 婷婷丁香视频 | 中文天堂在线视频 | 欧美大喷水吹潮合集在线观看 | 日大逼| 日本久久久网站 | 香港三日本三级少妇66 | 美女福利视频导航 | 国产三级自拍 | www.超碰97.com | 色男天堂 | 亚洲乱色| 激情小说中文字幕 | 色老头一区二区三区 | 国产精品69久久久 | 极品少妇视频 | 性生交生活片1 | 久久98| 国产欧美日韩激情 | 美女隐私黄www网站动漫 | 久久国内免费视频 | 夜夜操免费视频 | 最新黄色av| 国产精品黄色片 | 日本人妻换人妻毛片 | 久久亚洲AV成人无码国产人妖 | 中国免费观看的视频 | 日本www免费 | 亚洲区小说 | 国产精品污www一区二区三区 | 男人天堂avav | 啦啦啦视频在线观看 | 大学生三级中国dvd 日韩欧美一区二区区 | 日本黄色免费看 | 伊人春色av| 欧美巨大乳 | 美女视频国产 | 人人射影院 | 98国产精品 |