---------------------------------------------
Imximage Boot Image generation using mkimage
---------------------------------------------

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.

These processors can boot directly from NAND, SPI flash and SD card flash
using its internal boot ROM support. MX6 processors additionally support
boot from NOR flash and SATA disks. All processors can boot from an internal
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.

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
	--------------		-----------
	IMXIMAGE_VERSION        1/2
				1 is for mx25/mx35/mx51 compatible,
				2 is for mx53/mx6 compatible,
				others is invalid and error is generated.
				This command need appear the fist before
				other valid commands in configuration file.

	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

	BOOT_FROM		nand/spi/sd/onenand/nor/sata

				This command is parallel to BOOT_OFFSET and
				is to be deprecated in favor of BOOT_OFFSET.

				Example:
				BOOT_FROM spi

	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

	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

The processor support up to 60 register programming commands for IMXIMAGE_VERSION 1
and 220 register programming commands for IMXIMAGE_VERSION 2.
An error is generated if more commands are found in the configuration file.

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

	Device Boot	 Start	       End	Blocks	 Id  System
/dev/mmcblk0p1		     3		16	112455	 83  Linux

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>
