Blame view

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