U-Boot
From Openmoko
HaraldWelte (Talk | contribs) (→Bootloader source code) |
HaraldWelte (Talk | contribs) |
||
Line 1: | Line 1: | ||
+ | == General == | ||
+ | |||
The GTA01 uses the [http://u-boot.sourceforge.net/ u-boot] bootloader. | The GTA01 uses the [http://u-boot.sourceforge.net/ u-boot] bootloader. | ||
Line 32: | Line 34: | ||
The resulting "u-boot.bin" is _NOT SUITABLE_ for NAND flash, but only for direct execution from within ram, e.g. by using the [[s3c2410_boot_usb]] program. | The resulting "u-boot.bin" is _NOT SUITABLE_ for NAND flash, but only for direct execution from within ram, e.g. by using the [[s3c2410_boot_usb]] program. | ||
+ | |||
+ | == Creating bootable images == | ||
+ | |||
+ | u-boot needs bootable images (such as kernels, but also initrd and others) in form of a so-called ''uImage''. In order to create a ''uImage'' from e.g. a ''vmlinux'' kernel image, you can proceed as follows: | ||
+ | |||
+ | <pre> | ||
+ | objcopy -O binary -R .note -R .comment -S vmlinux linux.bin | ||
+ | gzip -9 linux.bin | ||
+ | u-boot/tools/mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "Kernel Image QT2410" -d linux.bin.gz uImage | ||
+ | </pre> |
Revision as of 10:10, 7 August 2006
Contents |
General
The GTA01 uses the u-boot bootloader.
More information on u-boot can be found at [1] and [2].
However, the vanilla u-boot doesn't support many of the features that GTA01 needs, such as
- Support for boot from NAND flahs using S3C2410 Steppingstone
- Support for reading kernel/initrd from SD/Transflash
- Support for S3C2410 NAND flash
- Support for downloading programs via S3C2410 USB Device Controller
- Support to display bootup logo / status on S3C2410 Framebuffer
User:HaraldWelte is working on those issues, and in fact most of them have already been implemented.
Bootloader source code
The current bootloader source code can be found at [3]. You will need the original tar.bz2 archive as well as the u-boot-qt2410.patch.
Untar the sources, apply the patch. run "make qt2410_config", run "make". You will get a resulting "u-boot.bin" image, which you can directly flash (either using existing bootloader or sjf2410-linux) into NAND.
Bootloader binary
The latest bootloader binary (for NAND) can be found at [4]
Bootloader development
If you want to do bootloader development on the QT2410, it's easier to work with a bootloader image that can be downloaded via USB into RAM instead of flashing.
To do so, you need to edit the u-boot/include/configs/qt2410.h file, and change the "if 0" in Line 32 into a "if 1", then recompile with "make".
The resulting "u-boot.bin" is _NOT SUITABLE_ for NAND flash, but only for direct execution from within ram, e.g. by using the s3c2410_boot_usb program.
Creating bootable images
u-boot needs bootable images (such as kernels, but also initrd and others) in form of a so-called uImage. In order to create a uImage from e.g. a vmlinux kernel image, you can proceed as follows:
objcopy -O binary -R .note -R .comment -S vmlinux linux.bin gzip -9 linux.bin u-boot/tools/mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "Kernel Image QT2410" -d linux.bin.gz uImage