mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 02:15:45 +01:00 
			
		
		
		
	In commit 021e79c853 ("tools: imximage: Fix the maximum DCD size for
mx53/mx6") we have fixed the maximum DCD size for mx53/mx53.
Do the same on the README document for consistency.
Reported-by: Jonas Karlsson <jonas.d.karlsson@gmail.com>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
		
	
		
			
				
	
	
		
			240 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			240 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ---------------------------------------------
 | |
| 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>
 |