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