diff options
| author | fishsoupisgood <github@madingley.org> | 2019-04-29 01:17:54 +0100 | 
|---|---|---|
| committer | fishsoupisgood <github@madingley.org> | 2019-05-27 03:43:43 +0100 | 
| commit | 3f2546b2ef55b661fd8dd69682b38992225e86f6 (patch) | |
| tree | 65ca85f13617aee1dce474596800950f266a456c /roms/u-boot/doc/README.imximage | |
| download | qemu-master.tar.gz qemu-master.tar.bz2 qemu-master.zip  | |
Diffstat (limited to 'roms/u-boot/doc/README.imximage')
| -rw-r--r-- | roms/u-boot/doc/README.imximage | 239 | 
1 files changed, 239 insertions, 0 deletions
diff --git a/roms/u-boot/doc/README.imximage b/roms/u-boot/doc/README.imximage new file mode 100644 index 00000000..dcda2005 --- /dev/null +++ b/roms/u-boot/doc/README.imximage @@ -0,0 +1,239 @@ +--------------------------------------------- +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 121 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>  | 
