blob: 073e3fcb3c6ecc9a7dfa8af468c76f96b16bd4d5 [file] [log] [blame]
Stefano Babic7b07f092010-01-20 18:19:10 +01001---------------------------------------------
2Imximage Boot Image generation using mkimage
3---------------------------------------------
4
Dirk Behmedfbf6ce2012-01-11 23:28:31 +00005This document describes how to set up a U-Boot image that can be booted
6by Freescale MX25, MX35, MX51, MX53 and MX6 processors via internal boot
7mode.
Stefano Babic7b07f092010-01-20 18:19:10 +01008
9These processors can boot directly from NAND, SPI flash and SD card flash
Dirk Behmedfbf6ce2012-01-11 23:28:31 +000010using its internal boot ROM support. MX6 processors additionally support
11boot from NOR flash and SATA disks. All processors can boot from an internal
Stefano Babic7b07f092010-01-20 18:19:10 +010012UART, if booting from device media fails.
13Booting from NOR flash does not require to use this image type.
14
15For more details refer Chapter 2 - System Boot and section 2.14
16(flash header description) of the processor's manual.
17
18This implementation does not use at the moment the secure boot feature
19of the processor. The image is generated disabling all security fields.
20
21Command 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
30For 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
35You can generate directly the image when you compile u-boot with:
36
37$ make u-boot.imx
38
39The output image can be flashed on the board SPI flash or on a SD card.
40In both cases, you have to copy the image at the offset required for the
41chosen media devices (0x400 for both SPI flash or SD card).
42
43Please check Freescale documentation for further details.
44
45Board specific configuration file specifications:
46-------------------------------------------------
471. This file must present in the $(BOARDDIR) and the name should be
48 imximage.cfg (since this is used in Makefile).
492. This file can have empty lines and lines starting with "#" as first
50 character to put comments.
513. This file can have configuration command lines as mentioned below,
52 any other information in this file is treated as invalid.
53
54Configuration command line syntax:
55---------------------------------
561. Each command line is must have two strings, first one command or address
57 and second one data string
582. Following are the valid command strings and associated data strings:-
59 Command string data string
60 -------------- -----------
Liu Hui-R643434aa360a2011-01-19 09:40:26 +000061 IMXIMAGE_VERSION 1/2
62 1 is for mx25/mx35/mx51 compatible,
Dirk Behmedfbf6ce2012-01-11 23:28:31 +000063 2 is for mx53/mx6 compatible,
Liu Hui-R643434aa360a2011-01-19 09:40:26 +000064 others is invalid and error is generated.
65 This command need appear the fist before
66 other valid commands in configuration file.
67
Dirk Behmedfbf6ce2012-01-11 23:28:31 +000068 BOOT_FROM nand/spi/sd/onenand/nor/sata
Stefano Babic7b07f092010-01-20 18:19:10 +010069 Example:
70 BOOT_FROM spi
71 DATA type address value
72
73 type: word=4, halfword=2, byte=1
74 address: physycal register address
75 value: value to be set in register
76 All values are in in hexadecimal.
77 Example (write to IOMUXC):
78 DATA 4 0x73FA88a0 0x200
79
Liu Hui-R643434aa360a2011-01-19 09:40:26 +000080The processor support up to 60 register programming commands for IMXIMAGE_VERSION 1
81and 121 register programming commands for IMXIMAGE_VERSION 2.
82An error is generated if more commands are found in the configuration file.
Stefano Babic7b07f092010-01-20 18:19:10 +010083
843. All commands are optional to program.
85
86Setup a SD Card for booting
87--------------------------------
88
89The following example prepare a SD card with u-boot and a FAT partition
90to be used to stored the kernel to be booted.
91I will set the SD in the most compatible mode, setting it with
92255 heads and 63 sectors, as suggested from several documentation and
93howto on line (I took as reference the preparation of a SD Card for the
94Beagleboard, running u-boot as bootloader).
95
96You should start clearing the partitions table on the SD card. Because
97the u-boot image must be stored at the offset 0x400, it must be assured
98that there is no partition at that address. A new SD card is already
99formatted with FAT filesystem and the partition starts from the first
100cylinder, so we need to change it.
101
102You can do all steps with fdisk. If the device for the SD card is
103/dev/mmcblk0, the following commands make the job:
104
1051. Start the fdisk utility (as superuser)
106 fdisk /dev/mmcblk0
107
1082. Clear the actual partition
109
110Command (m for help): o
111
1123. Print card info:
113
114Command (m for help): p
115Disk /dev/mmcblk0: 1981 MB, 1981284352 bytes
116
117In my case, I have a 2 GB card. I need the size to set later the correct value
118for the cylinders.
119
1204. Go to expert mode:
121
122Command (m for help): x
123
1245. Set card geometry
125
126Expert command (m for help): h
127Number of heads (1-256, default 4): 255
128
129Expert command (m for help): s
130Number of sectors (1-63, default 16): 63
131Warning: setting sector offset for DOS compatiblity
132
133We have set 255 heads, 63 sector. We have to set the cylinder.
134The value to be set can be calculated with:
135
136 cilynder = <total size> / <heads> / <sectors> / <blocksize>
137
138in this example,
139 1981284352 / 255 / 63 / 512 = 239.x = 239
140
141
142Expert command (m for help): c
143Number of cylinders (1-1048576, default 60032): 239
144
1456. Leave the expert mode
146Expert command (m for help): r
147
1487. Set up a partition
149
150Now set a partition table to store the kernel or whatever you want. Of course,
151you can set additional partitions to store rootfs, data, etc.
152In my example I want to set a single partition. I must take care
153to not overwrite the space where I will put u-boot.
154
155Command (m for help): n
156Command action
157 e extended
158 p primary partition (1-4)
159p
160Partition number (1-4): 1
161First cylinder (1-239, default 1): 3
162Last cylinder, +cylinders or +size{K,M,G} (3-239, default 239): +100M
163
164Command (m for help): p
165
166Disk /dev/mmcblk0: 1967 MB, 1967128576 bytes
167255 heads, 63 sectors/track, 239 cylinders
168Units = cylinders of 16065 * 512 = 8225280 bytes
169Disk identifier: 0xb712a870
170
Wolfgang Denka2cfb242010-03-12 23:06:04 +0100171 Device Boot Start End Blocks Id System
172/dev/mmcblk0p1 3 16 112455 83 Linux
Stefano Babic7b07f092010-01-20 18:19:10 +0100173
174I have set 100MB, leaving the first 2 sectors free. I will copy u-boot
175there.
176
1778. Write the partition table and exit.
178
179Command (m for help): w
180The partition table has been altered!
181
182Calling ioctl() to re-read partition table.
183
1849. Copy u-boot.imx on the SD card
185
186I use dd:
187
188dd if=u-boot.imx of=/dev/mmcblk0 bs=512 seek=2
189
190This command copies the u-boot image at the address 0x400, as required
191by the processor.
192
193Now remove your card from the PC and go to the target. If evrything went right,
194the u-boot prompt should come after power on.
195
196------------------------------------------------
197Author: Stefano babic <sbabic@denx.de>