[U-Boot-Users] boot uncompressed uImage

hello,all
i builded compressed image using montavista's tools :
1. /bin/sh /usr/src/linux-2.4.20_mvlcee31/scripts/mkuboot.sh -A arm -O linux -T kernel \ -C none -a 0x10008000 -e 0x10008000 \ -n 'Linux-2.4.20_mvlcee31-omap730_gsm_gprs' \ -d /usr/src/linux-2.4.20_mvlcee31/arch/arm/boot/zImage uImage
2. tftp 0x10000000 uImage (i used u-boot-1.1.2, 0x10000000 is physical address)
3. bootm and kernel could boot successfully.
but i want to install uncompressed image, so i do:
1. /bin/sh /usr/src/linux-2.4.20_mvlcee31/scripts/mkuboot.sh -A arm -O linux -T kernel \ -C none -a 0x10008000 -e 0x10008000 \ -n 'Linux-2.4.20_mvlcee31-omap730_gsm_gprs' \ -d /usr/src/linux-2.4.20_mvlcee31/vmlinux uImage
2. tftp 0x10000000 uImage
3. bootm
but kernel booting failed, and u-boot rebooted!
shall i change 0x10008000 to sth. and do something else?
thanks!

On Wed, 2005-04-27 at 17:26 +0800, 朱成 wrote:
but i want to install uncompressed image, so i do:
/bin/sh /usr/src/linux-2.4.20_mvlcee31/scripts/mkuboot.sh -A arm -O linux -T kernel \ -C none -a 0x10008000 -e 0x10008000 \ -n 'Linux-2.4.20_mvlcee31-omap730_gsm_gprs' \ -d /usr/src/linux-2.4.20_mvlcee31/vmlinux uImage
I'm gonna risk making a fool out of myself since I've never actually worked with ARM, but...
vmlinux is (for all other platforms I've used) an ELF image, not a raw binary. In order to be usable for u-boot, you need to run
<path-to-your-cross>objcopy -S -O binary vmlinux vmlinux.bin
and then use the resulting vmlinux.bin instead.
/ Leif

I'm gonna risk making a fool out of myself since I've never actually worked with ARM, but...
vmlinux is (for all other platforms I've used) an ELF image, not a raw binary. In order to be usable for u-boot, you need to run
<path-to-your-cross>objcopy -S -O binary vmlinux vmlinux.bin
and then use the resulting vmlinux.bin instead.
ok, i do it successfully! thanks!

In message 1114593987.6981.25.camel@localhost you wrote:
i builded compressed image using montavista's tools :
Well, actually you should ask MV support for help, then.
/bin/sh /usr/src/linux-2.4.20_mvlcee31/scripts/mkuboot.sh -A arm -O linux -T kernel \ -C none -a 0x10008000 -e 0x10008000 \ -n 'Linux-2.4.20_mvlcee31-omap730_gsm_gprs' \ -d /usr/src/linux-2.4.20_mvlcee31/arch/arm/boot/zImage uImage
Normally the build command should look something like this:
... arm-linux-ld -p -X -T arch/arm/vmlinux.lds arch/arm/kernel/head-armv.o arch/arm/kernel/init_task.o init/main.o init/version.o init/do_mounts.o \ --start-group \ arch/arm/kernel/kernel.o arch/arm/mm/mm.o arch/arm/mach-s3c2400/s3c2400.o kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o \ drivers/serial/serial.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/scsi/scsidrv.o drivers/mtd/mtdlink.o drivers/i2c/i2c.o drivers/usb/usbdrv.o drivers/media/media.o \ net/network.o \ arch/arm/nwfpe/math-emu.o arch/arm/lib/lib.a /work/TRAB/lib/lib.a \ --end-group \ -o vmlinux ... arm-linux-objcopy -O binary -R .note -R .comment -S /work/TRAB/vmlinux piggy gzip -9 < piggy > piggy.gz ... mkimage -A arm -O linux -T kernel -C gzip -a 0x0c008000\ -e 0x0c008000 -n 'ARM Linux-2.4.27' \ -d compressed/piggy.gz uImage
I'm not sure if your "zImage" is equivalent to our "piggy.gz", Normally this is NOT the case. What you have might work, but it is not the "correct" way to build an ARM image.
tftp 0x10000000 uImage
This is dangerous - The "bootm" command will copy your image from the downlaod address (0x10000000) tpo the load address (0x10008000). Given the size of the kernel image this is an overlapping area. The behaviour is undefined.
but i want to install uncompressed image, so i do:
/bin/sh /usr/src/linux-2.4.20_mvlcee31/scripts/mkuboot.sh -A arm -O linux -T kernel \ -C none -a 0x10008000 -e 0x10008000 \ -n 'Linux-2.4.20_mvlcee31-omap730_gsm_gprs' \ -d /usr/src/linux-2.4.20_mvlcee31/vmlinux uImage
This is definitely wrong, as "vmlinux" is an ELF file, while you need the raw binary image.
Best regards,
Wolfgang Denk
participants (3)
-
Leif Lindholm
-
Wolfgang Denk
-
朱 成