ubifs燒寫到nand flash中的幾種方法

2021-06-22 10:35:47 字數 4521 閱讀 5982

折騰了好幾天,突然柳暗花明,繼而思之,發現原來是出門就走錯了路,悲劇之餘,寫下此筆記,以省自己,警他人。

正題,關於ubifs

的介紹在此就不多說,詳見:

1. ubifs檔案系統映象的製作過程

1.1 

所需的工具

製作ubifs

映象所需的工具有

mkfs.ubifs

和ubinize

,可以通過以下方式獲取到此兩個工具:

1. 方法一:從官網通過git

git clone git:

和lzo

,uuib-dev

可以通過

apt-get

直接安裝,

lzo2. 

方法二:安裝mtd-utils

工具包,安裝命令為:

sudo apt-get install mtd-utils

不過此方法不保證安裝的工具可以正常使用(可能版本過低)。

1.2 

ubifs映象的製作

有了mkfs.ubifs

和ubinize

兩個工具後,就可以製作

ubifs

映象了,具體步驟如下:

1. 使用mkfs.ubifs

命令將某個資料夾製作為

ubifs

映象,具體命令為:

mkfs.ubifs -r /tmp/rootfs -m 2048 -e 126976 -c 992 -o ubifs.

img

以上命令的含義為將/tmp/rootfs

資料夾製作為

ubifs

檔案系統映象,輸出的映象名為

ubifs.img,-m

引數指定了最小的

i/o操作的大小,也就是

nand flash

乙個page

的大小,

-e引數指定了邏輯擦除快的大小,

-c指定了最大的邏輯塊號。

通過此命令製作的出的ubifs

檔案系統映象可在

u-boot

下使用ubi write

命令燒寫到

nand flash

上。 2. 

使用ubinize

命令可將使用

mkfs.ubifs

命令製作的

ubifs

檔案系統映象轉換成可直接在

flash

上燒寫的格式(帶有

ubi檔案系統映象卷標):

ubinize -o ubi.

img-m 2048 -

p 128kib -

s 512 -o 2048 ubinize.cfg

ubinize.cfg為一些配置引數:

[ubifs]

mode=ubi

image=ubifs.

imgvol_id=0

vol_size=100mib

vol_type=dynamic

vol_alignment=1

vol_name=rootfs

vol_flags=autoresize

通過此命令生成的ubi.img

可直接使用

nand flash

的燒寫命令燒寫到

flash

上。 2. 

ubifs檔案系統映象的燒寫

以下主要說以下將ubifs

映象燒寫到

nand flash

中的三種方法。

2.1 

在u-boot下通過

nand write

命令燒寫

使用ubinize

命令製作的帶有卷標的

ubifs

檔案系統映象可以直接使用

nand flash

的燒寫命令燒寫到

nand flash

上,具體命令為:

tftp 0xc1180000 ubi.

imgnand erase 0x400000 0x7c00000

nand write.e 0xc1180000 0x400000 0x3660000

關於tftp

,nand 

等命令使用格式請參見

u-boot

的help

。 2.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

, # parts = 5

#:name

size offset mask_flags0:u

-boot env 0x00020000 0x00000000 0

1: ubl 0x00020000 0x00020000 02: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.

imgubi 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

,具體可參見:

2.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/

3.在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/ 0

給主人留下些什麼吧!~~

ubifs燒寫到nand flash中的幾種方法

1.ubifs檔案系統映象的製作過程 1.1 所需的工具 製作ubifs 映象所需的工具有 mkfs.ubifs 和ubinize 可以通過以下方式獲取到此兩個工具 1.方法一 從官網通過git git clone git 和lzo,uuib dev 可以通過 apt get 直接安裝,lzo2.方...

python中執行shell命令的幾種方式

最近有個需求就是頁面上執行shell命令,第一想到的就是os.system,os.system cat proc cpuinfo 但是發現頁面上列印的命令執行結果 0或者1,當然不滿足需求了。嘗試第二種方案 os.popen output os.popen cat proc cpuinfo prin...

python在ubuntu中的幾種安裝方法

python在ubuntu下有幾種安裝方法 通過ubuntu官方的apt工具包安裝 html view plain copy sudo apt get install python2.7 sudo apt get install python3.4 安裝完成後,可以用下面的命令進行確認 plain ...