天天看點

Uboot 中 ubi 指令 及核心參數設定

uboot中的ubi 核心啟動參數分析

bootargs=console=ttyS0,115200n8 ubi.mtd=4 root=ubi0:rtfs rootfstype=ubifs rw mtdparts=café_nand:200M(part1),300M(part2),400M(part3),500M(part4),-(part5)

其中console部分是定義關于序列槽的參數,這裡不解釋了。

ubi.mtd=4 訓示整個系統的根檔案系統在第四個mtd 上,系統将據此預設把mtd4 attach到ubi0 上

root=ubi0:rtfs 訓示 根檔案系統在ubi0上的名字叫做rtfs的volume上注意這裡ubifs的裝置名字的寫法,不是以/dev開頭。他的寫法有兩種:

a) 【ubi device名b) 】:【ubi volume名c) 】,d) 例如ubi0:rootfs

e) 【ubi device名f) 】_【ubi volume 編号】,g) 例如ubi0_0

rootfstype=ubifs 訓示rootfs的檔案系統類型為ubifs

mtdparts=café_nand:200M(part1),300M(part2),400M(part3),500M(rootfs),-(part5)

定義了實體分區表。格式為

Mtd_id:[-]size@offset[mask_flag], …,…

其中[]中的代表可有可無項。

Mtd_id 對應于某種類型flash init過程中的name,二者必須相同,才能進行有效分區。

- 表示該分區劃分所有的剩餘空間。

Size 訓示目前分區的大小。

@引導offset的開始。// 如 [email protected](kernel)

Offset 訓示該分區的起始偏移量。

(Name)中表示該實體分區(partition)的名字。

Mask_flag 表示該分區的讀寫屬性。// 如 [email protected](kernel)ro, xxx

uboot中的ubi 指令

(1)檢視MTD分區表

U-Boot$ mtdparts

mtdparts variable not set, see ‘help mtdparts’

no partitions defined

defaults:

mtdids : nand0=nandflash0

mtdparts: mtdparts=nandflash0:1536k(bootloder),512k(params),4m(kernel),16m(safefs),-(rootfs)

(2)載入預設分區表

U-Boot$ mtdparts default

(3)激活分區

U-Boot$ ubi part safefs

Creating 1 MTD partitions on “nand0”:

0x000000600000-0x000001600000 : “mtd=3”

device_name0:mtd=3

UBI: attaching mtd1 to ubi0

UBI: physical eraseblock size: 131072 bytes (128 KiB)

UBI: logical eraseblock size: 129024 bytes

UBI: smallest flash I/O unit: 2048

UBI: sub-page size: 512

UBI: VID header offset: 512 (aligned 512)

UBI: data offset: 2048

scanning error 0

UBI: attached mtd1 to ubi0

UBI: MTD device name: “mtd=3”

UBI: MTD device size: 16 MiB

UBI: number of good PEBs: 127

UBI: number of bad PEBs: 1

UBI: max. allowed volumes: 128

UBI: wear-leveling threshold: 4096

UBI: number of internal volumes: 1

UBI: number of user volumes: 1

UBI: available PEBs: 0

UBI: total number of reserved PEBs: 127

UBI: number of PEBs reserved for bad PEB handling: 2

UBI: max/mean erase counter: 4/1

檢視目前激活的分區:

U-Boot$ ubi part

Device 0: nand0, partition safefs

(4)挂載分區

U-Boot$ ubifsmount safefs

UBIFS: recovery needed

UBIFS: recovery deferred

UBIFS: mounted UBI device 0, volume 0, name “safefs”

UBIFS: mounted read-only

UBIFS: file system size: 14192640 bytes (13860 KiB, 13 MiB, 110 LEBs)

UBIFS: journal size: 9033728 bytes (8822 KiB, 8 MiB, 71 LEBs)

UBIFS: media format: w4/r0 (latest is w4/r0)

UBIFS: default compressor: LZO

UBIFS: reserved for root: 0 bytes (0 KiB)

(5)檢視分區的内容

U-Boot$ ubifsls

<DIR> 3840 Tue Apr 20 07:42:09 2010 bin

<DIR> 480 Fri Aug 28 02:32:54 2009 dev

<DIR> 2416 Thu Jan 01 00:18:47 1970 etc

<DIR> 5464 Tue Apr 20 07:54:28 2010 lib

<DIR> 480 Tue Apr 20 07:42:01 2010 mnt

<DIR> 160 Fri Aug 28 01:37:57 2009 opt

<DIR> 224 Tue Apr 20 09:19:29 2010 tmp

<DIR> 160 Fri Aug 28 01:37:57 2009 sys

<DIR> 736 Thu Feb 26 07:25:19 2009 var

<DIR> 608 Fri Aug 28 02:32:54 2009 usr

<DIR> 296 Fri Aug 28 01:37:57 2009 boot

<DIR> 224 Tue Apr 20 07:42:01 2010 home

<DIR> 160 Fri Aug 28 01:37:57 2009 proc

<DIR> 2528 Tue Sep 14 08:50:07 2010 sbin

<DIR> 160 Fri Aug 28 01:37:57 2009 root

<LNK> 11 Tue Sep 14 08:24:07 2010 linuxrc

706 Wed Sep 15 08:47:30 2010 burn.usb

52 Wed Jun 30 06:30:21 2010 readme

697 Wed Sep 15 08:47:43 2010 burn.cf

664 Wed Sep 15 08:47:17 2010 burn.sd

(6)檢視某個檔案

U-Boot$ ubifsload 80008000 readme

Loading file ‘readme’ to addr 0x80008000 with size 52 (0x00000034)…

Done

U-Boot$ md 80008000

80008000: 65666173 66207366 6120726f 4c206c6c safefs for all L

80008010: 32334350 42203035 6472616f 200a2e73 PC3250 Boards…

80008020: 20202020 32202020 2d303130 302d3730 2010-07-0

80008030: 0a0a0a31 00000000 00000000 00000000 1…

補充:

ubi part // 把一個mtd 分區 格式化為ubi 裝置

ubi create // 建立一個volume

ubi write <大小> //從addr中 寫入size 大小的 ubi 檔案系統到 volume

ubi write <大小> //從volume中讀入size大小的ubi檔案系統到addr

ubi remove // 移除 volume

1.MTD Subsystem:

MTD 子系統, 提供對flash晶片的通路接口, MTD子系統提供了MTD device的概念,比如/dev/mtdx,MTD可以認為是raw flash。

2.UBI subsystem:

為flash device提供了wear-leveling和 volume management功能; UBI工作在MTD裝置之上,提供了UBI volume;UBI是MTD裝置的高層次表示,對上層屏蔽了一些MTD不得不處理的問題,比如wearing以及壞塊管理。

3.UBIFS filesystem

UBIFS 檔案系統,工作于UBI之上。

--------                   --------
          | ubi0:0 |                | ubi0:1 |
          --------                   --------    
                ↑                         ↑ make volume 
         ----------------          -----------------
       |       ubi0      |        |        ubi1      |
         ----------------          -----------------      
                ↑attach                    ↑attach
           -----------               ------------ 
          | mtdblock0 |             |  mtdblock 1 |
            -----------              ------------
                   ↑                       ↑
            --------------------------------------
           |               nand flash             |            
            --------------------------------------
           

作者:HarkerYX

來源:CSDN

原文:https://blog.csdn.net/yexiangcsdn/article/details/81199091

版權聲明:本文為部落客原創文章,轉載請附上博文連結!