Blame view

doc/README.imximage 7.37 KB
8edcde5e4   Stefano Babic   mkimage: Add Free...
1
2
3
  ---------------------------------------------
  Imximage Boot Image generation using mkimage
  ---------------------------------------------
19b409c00   Dirk Behme   imximage: Add sup...
4
5
6
  This document describes how to set up a U-Boot image that can be booted
  by Freescale MX25, MX35, MX51, MX53 and MX6 processors via internal boot
  mode.
8edcde5e4   Stefano Babic   mkimage: Add Free...
7
8
  
  These processors can boot directly from NAND, SPI flash and SD card flash
19b409c00   Dirk Behme   imximage: Add sup...
9
10
  using its internal boot ROM support. MX6 processors additionally support
  boot from NOR flash and SATA disks. All processors can boot from an internal
8edcde5e4   Stefano Babic   mkimage: Add Free...
11
12
13
14
15
  UART, if booting from device media fails.
  Booting from NOR flash does not require to use this image type.
  
  For more details refer Chapter 2 - System Boot and section 2.14
  (flash header description) of the processor's manual.
8edcde5e4   Stefano Babic   mkimage: Add Free...
16
17
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
  Command syntax:
  --------------
  ./tools/mkimage -l <mx u-boot_file>
  		to list the imx image file details
  
  ./tools/mkimage -T imximage \
  		-n <board specific configuration file> \
  		-e <execution address> -d <u-boot binary>  <output image file>
  
  For example, for the mx51evk board:
  ./tools/mkimage -n ./board/freescale/mx51evk/imximage.cfg \
  		-T imximage -e 0x97800000  \
  		-d u-boot.bin u-boot.imx
  
  You can generate directly the image when you compile u-boot with:
  
  $ make u-boot.imx
  
  The output image can be flashed on the board SPI flash or on a SD card.
  In both cases, you have to copy the image at the offset required for the
  chosen media devices (0x400 for both SPI flash or SD card).
  
  Please check Freescale documentation for further details.
  
  Board specific configuration file specifications:
  -------------------------------------------------
  1. This file must present in the $(BOARDDIR) and the name should be
  	imximage.cfg (since this is used in Makefile).
  2. This file can have empty lines and lines starting with "#" as first
  	character to put comments.
  3. This file can have configuration command lines as mentioned below,
  	any other information in this file is treated as invalid.
  
  Configuration command line syntax:
  ---------------------------------
  1. Each command line is must have two strings, first one command or address
  	and second one data string
  2. Following are the valid command strings and associated data strings:-
  	Command string		data string
  	--------------		-----------
8a1edd7d5   Liu Hui-R64343   imximage: Add MX5...
56
57
  	IMXIMAGE_VERSION        1/2
  				1 is for mx25/mx35/mx51 compatible,
19b409c00   Dirk Behme   imximage: Add sup...
58
  				2 is for mx53/mx6 compatible,
8a1edd7d5   Liu Hui-R64343   imximage: Add MX5...
59
60
61
  				others is invalid and error is generated.
  				This command need appear the fist before
  				other valid commands in configuration file.
6cb83829a   Marek Vasut   tools: arm: imx: ...
62
63
64
65
66
67
68
69
70
71
72
73
  	BOOT_OFFSET		value
  
  				This command is parallel to BOOT_FROM and
  				is preferred over BOOT_FROM.
  
  				value:  Offset of the image header, this
  					value shall be set to one of the
  					values found in the file:
  						arch/arm/include/asm/\
  						imx-common/imximage.cfg
  				Example:
  				BOOT_OFFSET FLASH_OFFSET_STANDARD
19b409c00   Dirk Behme   imximage: Add sup...
74
  	BOOT_FROM		nand/spi/sd/onenand/nor/sata
6cb83829a   Marek Vasut   tools: arm: imx: ...
75
76
77
  
  				This command is parallel to BOOT_OFFSET and
  				is to be deprecated in favor of BOOT_OFFSET.
8edcde5e4   Stefano Babic   mkimage: Add Free...
78
79
  				Example:
  				BOOT_FROM spi
6cb83829a   Marek Vasut   tools: arm: imx: ...
80

0187c985a   Stefano Babic   tools: add suppor...
81
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
  	CSF			value
  
  				Total size of CSF (Command Sequence File)
  				used for Secure Boot/ High Assurance Boot
  				(HAB).
  
  				Using this command will populate the IVT
  				(Initial Vector Table) CSF pointer and adjust
  				the length fields only. The CSF itself needs
  				to be generated with Freescale tools and
  				'manually' appended to the u-boot.imx file.
  
  				The CSF is then simply concatenated
  				to the u-boot image, making a signed bootloader,
  				that the processor can verify
  				if the fuses for the keys are burned.
  
  				Further infos how to configure the SOC to verify
  				the bootloader can be found in the "High
  				Assurance Boot Version Application Programming
  				Interface Reference Manual" as part of the
  				Freescale Code Signing Tool, available on the
  				manufacturer's website.
  
  				Example:
  				CSF 0x2000
8edcde5e4   Stefano Babic   mkimage: Add Free...
107
108
109
110
111
112
113
114
  	DATA			type address value
  
  				type: word=4, halfword=2, byte=1
  				address: physycal register address
  				value: value to be set in register
  				All values are in in hexadecimal.
  				Example (write to IOMUXC):
  				DATA 4 0x73FA88a0 0x200
8a1edd7d5   Liu Hui-R64343   imximage: Add MX5...
115
116
117
  The processor support up to 60 register programming commands for IMXIMAGE_VERSION 1
  and 121 register programming commands for IMXIMAGE_VERSION 2.
  An error is generated if more commands are found in the configuration file.
8edcde5e4   Stefano Babic   mkimage: Add Free...
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
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
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
  
  3. All commands are optional to program.
  
  Setup a SD Card for booting
  --------------------------------
  
  The following example prepare a SD card with u-boot and a FAT partition
  to be used to stored the kernel to be booted.
  I will set the SD in the most compatible mode, setting it with
  255 heads and 63 sectors, as suggested from several documentation and
  howto on line (I took as reference the preparation of a SD Card for the
  Beagleboard, running u-boot as bootloader).
  
  You should start clearing the partitions table on the SD card. Because
  the u-boot image must be stored at the offset 0x400, it must be assured
  that there is no partition at that address. A new SD card is already
  formatted with FAT filesystem and the partition starts from the first
  cylinder, so we need to change it.
  
  You can do all steps with fdisk. If the device for the SD card is
  /dev/mmcblk0, the following commands make the job:
  
  1. Start the fdisk utility (as superuser)
  	fdisk /dev/mmcblk0
  
  2. Clear the actual partition
  
  Command (m for help): o
  
  3. Print card info:
  
  Command (m for help): p
  Disk /dev/mmcblk0: 1981 MB, 1981284352 bytes
  
  In my case, I have a 2 GB card. I need the size to set later the correct value
  for the cylinders.
  
  4. Go to expert mode:
  
  Command (m for help): x
  
  5. Set card geometry
  
  Expert command (m for help): h
  Number of heads (1-256, default 4): 255
  
  Expert command (m for help): s
  Number of sectors (1-63, default 16): 63
  Warning: setting sector offset for DOS compatiblity
  
  We have set 255 heads, 63 sector. We have to set the cylinder.
  The value to be set can be calculated with:
  
  	cilynder = <total size> / <heads> / <sectors> / <blocksize>
  
  in this example,
  	1981284352 / 255 / 63 / 512 = 239.x = 239
  
  
  Expert command (m for help): c
  Number of cylinders (1-1048576, default 60032): 239
  
  6. Leave the expert mode
  Expert command (m for help): r
  
  7. Set up a partition
  
  Now set a partition table to store the kernel or whatever you want. Of course,
  you can set additional partitions to store rootfs, data, etc.
  In my example I want to set a single partition. I must take care
  to not overwrite the space where I will put u-boot.
  
  Command (m for help): n
  Command action
     e   extended
     p   primary partition (1-4)
  p
  Partition number (1-4): 1
  First cylinder (1-239, default 1): 3
  Last cylinder, +cylinders or +size{K,M,G} (3-239, default 239): +100M
  
  Command (m for help): p
  
  Disk /dev/mmcblk0: 1967 MB, 1967128576 bytes
  255 heads, 63 sectors/track, 239 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Disk identifier: 0xb712a870
93910edb5   Wolfgang Denk   Prepare v2010.03-rc1
205
206
  	Device Boot	 Start	       End	Blocks	 Id  System
  /dev/mmcblk0p1		     3		16	112455	 83  Linux
8edcde5e4   Stefano Babic   mkimage: Add Free...
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
  
  I have set 100MB, leaving the first 2 sectors free. I will copy u-boot
  there.
  
  8. Write the partition table and exit.
  
  Command (m for help): w
  The partition table has been altered!
  
  Calling ioctl() to re-read partition table.
  
  9. Copy u-boot.imx on the SD card
  
  I use dd:
  
  dd if=u-boot.imx of=/dev/mmcblk0 bs=512 seek=2
  
  This command copies the u-boot image at the address 0x400, as required
  by the processor.
  
  Now remove your card from the PC and go to the target. If evrything went right,
  the u-boot prompt should come after power on.
  
  ------------------------------------------------
  Author: Stefano babic <sbabic@denx.de>