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