Add GPL-2.0+ SPDX-License-Identifier to source files
[platform/kernel/u-boot.git] / doc / README.imximage
1 ---------------------------------------------
2 Imximage Boot Image generation using mkimage
3 ---------------------------------------------
4
5 This document describes how to set up a U-Boot image that can be booted
6 by Freescale MX25, MX35, MX51, MX53 and MX6 processors via internal boot
7 mode.
8
9 These processors can boot directly from NAND, SPI flash and SD card flash
10 using its internal boot ROM support. MX6 processors additionally support
11 boot from NOR flash and SATA disks. All processors can boot from an internal
12 UART, if booting from device media fails.
13 Booting from NOR flash does not require to use this image type.
14
15 For more details refer Chapter 2 - System Boot and section 2.14
16 (flash header description) of the processor's manual.
17
18 This implementation does not use at the moment the secure boot feature
19 of the processor. The image is generated disabling all security fields.
20
21 Command syntax:
22 --------------
23 ./tools/mkimage -l <mx u-boot_file>
24                 to list the imx image file details
25
26 ./tools/mkimage -T imximage \
27                 -n <board specific configuration file> \
28                 -e <execution address> -d <u-boot binary>  <output image file>
29
30 For example, for the mx51evk board:
31 ./tools/mkimage -n ./board/freescale/mx51evk/imximage.cfg \
32                 -T imximage -e 0x97800000  \
33                 -d u-boot.bin u-boot.imx
34
35 You can generate directly the image when you compile u-boot with:
36
37 $ make u-boot.imx
38
39 The output image can be flashed on the board SPI flash or on a SD card.
40 In both cases, you have to copy the image at the offset required for the
41 chosen media devices (0x400 for both SPI flash or SD card).
42
43 Please check Freescale documentation for further details.
44
45 Board specific configuration file specifications:
46 -------------------------------------------------
47 1. This file must present in the $(BOARDDIR) and the name should be
48         imximage.cfg (since this is used in Makefile).
49 2. This file can have empty lines and lines starting with "#" as first
50         character to put comments.
51 3. This file can have configuration command lines as mentioned below,
52         any other information in this file is treated as invalid.
53
54 Configuration command line syntax:
55 ---------------------------------
56 1. Each command line is must have two strings, first one command or address
57         and second one data string
58 2. Following are the valid command strings and associated data strings:-
59         Command string          data string
60         --------------          -----------
61         IMXIMAGE_VERSION        1/2
62                                 1 is for mx25/mx35/mx51 compatible,
63                                 2 is for mx53/mx6 compatible,
64                                 others is invalid and error is generated.
65                                 This command need appear the fist before
66                                 other valid commands in configuration file.
67
68         BOOT_OFFSET             value
69
70                                 This command is parallel to BOOT_FROM and
71                                 is preferred over BOOT_FROM.
72
73                                 value:  Offset of the image header, this
74                                         value shall be set to one of the
75                                         values found in the file:
76                                                 arch/arm/include/asm/\
77                                                 imx-common/imximage.cfg
78                                 Example:
79                                 BOOT_OFFSET FLASH_OFFSET_STANDARD
80
81         BOOT_FROM               nand/spi/sd/onenand/nor/sata
82
83                                 This command is parallel to BOOT_OFFSET and
84                                 is to be deprecated in favor of BOOT_OFFSET.
85
86                                 Example:
87                                 BOOT_FROM spi
88
89         DATA                    type address value
90
91                                 type: word=4, halfword=2, byte=1
92                                 address: physycal register address
93                                 value: value to be set in register
94                                 All values are in in hexadecimal.
95                                 Example (write to IOMUXC):
96                                 DATA 4 0x73FA88a0 0x200
97
98 The processor support up to 60 register programming commands for IMXIMAGE_VERSION 1
99 and 121 register programming commands for IMXIMAGE_VERSION 2.
100 An error is generated if more commands are found in the configuration file.
101
102 3. All commands are optional to program.
103
104 Setup a SD Card for booting
105 --------------------------------
106
107 The following example prepare a SD card with u-boot and a FAT partition
108 to be used to stored the kernel to be booted.
109 I will set the SD in the most compatible mode, setting it with
110 255 heads and 63 sectors, as suggested from several documentation and
111 howto on line (I took as reference the preparation of a SD Card for the
112 Beagleboard, running u-boot as bootloader).
113
114 You should start clearing the partitions table on the SD card. Because
115 the u-boot image must be stored at the offset 0x400, it must be assured
116 that there is no partition at that address. A new SD card is already
117 formatted with FAT filesystem and the partition starts from the first
118 cylinder, so we need to change it.
119
120 You can do all steps with fdisk. If the device for the SD card is
121 /dev/mmcblk0, the following commands make the job:
122
123 1. Start the fdisk utility (as superuser)
124         fdisk /dev/mmcblk0
125
126 2. Clear the actual partition
127
128 Command (m for help): o
129
130 3. Print card info:
131
132 Command (m for help): p
133 Disk /dev/mmcblk0: 1981 MB, 1981284352 bytes
134
135 In my case, I have a 2 GB card. I need the size to set later the correct value
136 for the cylinders.
137
138 4. Go to expert mode:
139
140 Command (m for help): x
141
142 5. Set card geometry
143
144 Expert command (m for help): h
145 Number of heads (1-256, default 4): 255
146
147 Expert command (m for help): s
148 Number of sectors (1-63, default 16): 63
149 Warning: setting sector offset for DOS compatiblity
150
151 We have set 255 heads, 63 sector. We have to set the cylinder.
152 The value to be set can be calculated with:
153
154         cilynder = <total size> / <heads> / <sectors> / <blocksize>
155
156 in this example,
157         1981284352 / 255 / 63 / 512 = 239.x = 239
158
159
160 Expert command (m for help): c
161 Number of cylinders (1-1048576, default 60032): 239
162
163 6. Leave the expert mode
164 Expert command (m for help): r
165
166 7. Set up a partition
167
168 Now set a partition table to store the kernel or whatever you want. Of course,
169 you can set additional partitions to store rootfs, data, etc.
170 In my example I want to set a single partition. I must take care
171 to not overwrite the space where I will put u-boot.
172
173 Command (m for help): n
174 Command action
175    e   extended
176    p   primary partition (1-4)
177 p
178 Partition number (1-4): 1
179 First cylinder (1-239, default 1): 3
180 Last cylinder, +cylinders or +size{K,M,G} (3-239, default 239): +100M
181
182 Command (m for help): p
183
184 Disk /dev/mmcblk0: 1967 MB, 1967128576 bytes
185 255 heads, 63 sectors/track, 239 cylinders
186 Units = cylinders of 16065 * 512 = 8225280 bytes
187 Disk identifier: 0xb712a870
188
189         Device Boot      Start         End      Blocks   Id  System
190 /dev/mmcblk0p1               3          16      112455   83  Linux
191
192 I have set 100MB, leaving the first 2 sectors free. I will copy u-boot
193 there.
194
195 8. Write the partition table and exit.
196
197 Command (m for help): w
198 The partition table has been altered!
199
200 Calling ioctl() to re-read partition table.
201
202 9. Copy u-boot.imx on the SD card
203
204 I use dd:
205
206 dd if=u-boot.imx of=/dev/mmcblk0 bs=512 seek=2
207
208 This command copies the u-boot image at the address 0x400, as required
209 by the processor.
210
211 Now remove your card from the PC and go to the target. If evrything went right,
212 the u-boot prompt should come after power on.
213
214 ------------------------------------------------
215 Author: Stefano babic <sbabic@denx.de>