Home | History | Annotate | Download | only in doc
      1 -------------------
      2 UBI usage in U-Boot
      3 -------------------
      4 
      5 UBI support in U-Boot is broken down into five separate commands.
      6 The first is the ubi command, which has six subcommands:
      7 
      8 => help ubi
      9 ubi - ubi commands
     10 
     11 Usage:
     12 ubi part [part] [offset]
     13  - Show or set current partition (with optional VID header offset)
     14 ubi info [l[ayout]] - Display volume and ubi layout information
     15 ubi create[vol] volume [size] [type] - create volume name with size
     16 ubi write[vol] address volume size - Write volume from address with size
     17 ubi write.part address volume size [fullsize]
     18  - Write part of a volume from address
     19 ubi read[vol] address volume [size] - Read volume to address with size
     20 ubi remove[vol] volume - Remove volume
     21 [Legends]
     22  volume: character name
     23  size: specified in bytes
     24  type: s[tatic] or d[ynamic] (default=dynamic)
     25 
     26 
     27 The first command that is needed to be issues is "ubi part" to connect
     28 one mtd partition to the UBI subsystem. This command will either create
     29 a new UBI device on the requested MTD partition. Or it will attach a
     30 previously created UBI device. The other UBI commands will only work
     31 when such a UBI device is attached (via "ubi part"). Here an example:
     32 
     33 => mtdparts
     34 
     35 device nor0 <1fc000000.nor_flash>, # parts = 6
     36  #: name                size            offset          mask_flags
     37  0: kernel              0x00200000      0x00000000      0
     38  1: dtb                 0x00040000      0x00200000      0
     39  2: root                0x00200000      0x00240000      0
     40  3: user                0x01ac0000      0x00440000      0
     41  4: env                 0x00080000      0x01f00000      0
     42  5: u-boot              0x00080000      0x01f80000      0
     43 
     44 active partition: nor0,0 - (kernel) 0x00200000 @ 0x00000000
     45 
     46 defaults:
     47 mtdids  : nor0=1fc000000.nor_flash
     48 mtdparts: mtdparts=1fc000000.nor_flash:2m(kernel),256k(dtb),2m(root),27392k(user),512k(env),512k(u-boot)
     49 
     50 => ubi part root
     51 Creating 1 MTD partitions on "nor0":
     52 0x000000240000-0x000000440000 : "mtd=2"
     53 UBI: attaching mtd1 to ubi0
     54 UBI: physical eraseblock size:   262144 bytes (256 KiB)
     55 UBI: logical eraseblock size:    262016 bytes
     56 UBI: smallest flash I/O unit:    1
     57 UBI: VID header offset:          64 (aligned 64)
     58 UBI: data offset:                128
     59 UBI: attached mtd1 to ubi0
     60 UBI: MTD device name:            "mtd=2"
     61 UBI: MTD device size:            2 MiB
     62 UBI: number of good PEBs:        8
     63 UBI: number of bad PEBs:         0
     64 UBI: max. allowed volumes:       128
     65 UBI: wear-leveling threshold:    4096
     66 UBI: number of internal volumes: 1
     67 UBI: number of user volumes:     1
     68 UBI: available PEBs:             0
     69 UBI: total number of reserved PEBs: 8
     70 UBI: number of PEBs reserved for bad PEB handling: 0
     71 UBI: max/mean erase counter: 2/1
     72 
     73 
     74 Now that the UBI device is attached, this device can be modified
     75 using the following commands:
     76 
     77 ubi info	Display volume and ubi layout information
     78 ubi createvol	Create UBI volume on UBI device
     79 ubi removevol	Remove UBI volume from UBI device
     80 ubi read	Read data from UBI volume to memory
     81 ubi write	Write data from memory to UBI volume
     82 ubi write.part	Write data from memory to UBI volume, in parts
     83 
     84 
     85 Here a few examples on the usage:
     86 
     87 => ubi create testvol
     88 Creating dynamic volume testvol of size 1048064
     89 
     90 => ubi info l
     91 UBI: volume information dump:
     92 UBI: vol_id          0
     93 UBI: reserved_pebs   4
     94 UBI: alignment       1
     95 UBI: data_pad        0
     96 UBI: vol_type        3
     97 UBI: name_len        7
     98 UBI: usable_leb_size 262016
     99 UBI: used_ebs        4
    100 UBI: used_bytes      1048064
    101 UBI: last_eb_bytes   262016
    102 UBI: corrupted       0
    103 UBI: upd_marker      0
    104 UBI: name            testvol
    105 
    106 UBI: volume information dump:
    107 UBI: vol_id          2147479551
    108 UBI: reserved_pebs   2
    109 UBI: alignment       1
    110 UBI: data_pad        0
    111 UBI: vol_type        3
    112 UBI: name_len        13
    113 UBI: usable_leb_size 262016
    114 UBI: used_ebs        2
    115 UBI: used_bytes      524032
    116 UBI: last_eb_bytes   2
    117 UBI: corrupted       0
    118 UBI: upd_marker      0
    119 UBI: name            layout volume
    120 
    121 => ubi info
    122 UBI: MTD device name:            "mtd=2"
    123 UBI: MTD device size:            2 MiB
    124 UBI: physical eraseblock size:   262144 bytes (256 KiB)
    125 UBI: logical eraseblock size:    262016 bytes
    126 UBI: number of good PEBs:        8
    127 UBI: number of bad PEBs:         0
    128 UBI: smallest flash I/O unit:    1
    129 UBI: VID header offset:          64 (aligned 64)
    130 UBI: data offset:                128
    131 UBI: max. allowed volumes:       128
    132 UBI: wear-leveling threshold:    4096
    133 UBI: number of internal volumes: 1
    134 UBI: number of user volumes:     1
    135 UBI: available PEBs:             0
    136 UBI: total number of reserved PEBs: 8
    137 UBI: number of PEBs reserved for bad PEB handling: 0
    138 UBI: max/mean erase counter: 4/1
    139 
    140 => ubi write 800000 testvol 80000
    141 Volume "testvol" found at volume id 0
    142 
    143 => ubi read 900000 testvol 80000
    144 Volume testvol found at volume id 0
    145 read 524288 bytes from volume 0 to 900000(buf address)
    146 
    147 => cmp.b 800000 900000 80000
    148 Total of 524288 bytes were the same
    149 
    150 
    151 Next, the ubifsmount command allows you to access filesystems on the
    152 UBI partition which has been attached with the ubi part command:
    153 
    154 => help ubifsmount
    155 ubifsmount - mount UBIFS volume
    156 
    157 Usage:
    158 ubifsmount <volume-name>
    159     - mount 'volume-name' volume
    160 
    161 For example:
    162 
    163 => ubifsmount ubi0:recovery
    164 UBIFS: mounted UBI device 0, volume 0, name "recovery"
    165 UBIFS: mounted read-only
    166 UBIFS: file system size:   46473216 bytes (45384 KiB, 44 MiB, 366 LEBs)
    167 UBIFS: journal size:       6348800 bytes (6200 KiB, 6 MiB, 50 LEBs)
    168 UBIFS: media format:       w4/r0 (latest is w4/r0)
    169 UBIFS: default compressor: LZO
    170 UBIFS: reserved for root:  0 bytes (0 KiB)
    171 
    172 Note that unlike Linux, U-Boot can only have one active UBI partition
    173 at a time, which can be referred to as ubi0, and must be supplied along
    174 with the name of the filesystem you are mounting.
    175 
    176 
    177 Once a UBI filesystem has been mounted, the ubifsls command allows you
    178 to list the contents of a directory in the filesystem:
    179 
    180 
    181 => help ubifsls
    182 ubifsls - list files in a directory
    183 
    184 Usage:
    185 ubifsls [directory]
    186     - list files in a 'directory' (default '/')
    187 
    188 For example:
    189 
    190 => ubifsls
    191 	    17442  Thu Jan 01 02:57:38 1970  imx28-evk.dtb
    192 	  2998146  Thu Jan 01 02:57:43 1970  zImage
    193 
    194 
    195 And the ubifsload command allows you to load a file from a UBI
    196 filesystem:
    197 
    198 
    199 => help ubifsload
    200 ubifsload - load file from an UBIFS filesystem
    201 
    202 Usage:
    203 ubifsload <addr> <filename> [bytes]
    204     - load file 'filename' to address 'addr'
    205 
    206 For example:
    207 
    208 => ubifsload ${loadaddr} zImage
    209 Loading file 'zImage' to addr 0x42000000 with size 2998146 (0x002dbf82)...
    210 Done
    211 
    212 
    213 Finally, you can unmount the UBI filesystem with the ubifsumount
    214 command:
    215 
    216 => help ubifsumount
    217 ubifsumount - unmount UBIFS volume
    218 
    219 Usage:
    220 ubifsumount     - unmount current volume
    221 
    222 For example:
    223 
    224 => ubifsumount
    225 Unmounting UBIFS volume recovery!
    226