?Loading and debugging a linux kernel on a walnut board with a BDI2000
ibm405gp
ibm405.linux at laposte.net
Wed Jul 4 02:25:28 EST 2001
You're right,the "mkevimg" perl script suppressed the ELF header and
replace it by a
specific header for the IBM rom monitor.
I use the temporary file "zImage.tree.out" generated in the Makefile and
the format is now OK
but the boot sequence fails, the zImage is not extracted
In arch/ppc/boot/tree/main.c, i put some debug printf, and i have
"Memcopy Done " instead of "gunzip done"
What means the condition "if (im[0] == 0x1f && im[1] == 0x8b) " ?
It seems the "imageSect_start" is not set but this global variable is
assign by the "mkirimg" perl script in the Makefile :
// Makefile :
../utils/mkirimg -v treeboot.image treeboot.image.out irSectStart.txt
String table section header offset: 0xbf874
Section name strings start at: 0xbf6ea, 74 bytes.
Data section - Address: 0x00406000, Size: 0x00000404, File Offset
0x00016000
Bss section - Address: 0x00406404, Size: 0x000012f4, File Offset
0x00016404
Image section - Address: 0x00000000, Size: 0x000a6bf9
Initrd section not found in file: treeboot.image
irSectStartOffset Address: 0x004063d4
Updated symbol "imageSect_start" to 0x004076f8
Updated symbol "imageSect_size" to 0x000a6bf9
// arch/ppc/boot/tree/main.c
/* Linux kernel image section */
kick_watchdog();
im = (unsigned char *)(imageSect_start);
len = imageSect_size;
dst = (void *)PROG_START;
/* Check for the gzip archive magic numbers */
if (im[0] == 0x1f && im[1] == 0x8b) {
/* The gunzip routine needs everything nice and aligned */
void *cp = (void *)ALIGN_UP(RAM_FREE, 8);
avail_ram = (void *)(cp + ALIGN_UP(len, 8)); /* used by zalloc() */
memcpy(cp, im, len);
/* I'm not sure what the 0x200000 parameter is for, but it works. */
/* It tells gzip the size of the area you wish to copy into.
** The boot image is loaded beyond this point - if you increase this
** number, then be sure to increase the load address of treeboot.
*/
gunzip(dst, 0x400000, cp, (int *)&len);
printf("\n----- Gunzip Done --------\n\n");
} else {
memcpy(dst, im, len);
printf("\n----- MemCopy Done --------\n\n");
}
Scott Anderson a écrit :
>
> ibm405gp wrote:
> > My "vmlinuz-walnut" file generated with "make zImage" (with mvista
> > toolschain) seems invalid for
> > the bdi2000 but it works fine with 1.15 ROM Monitor
>
> It's been a while since I played with it, but as I recall the makefile
> tacks on a header to create an IBM Evaluation Board image. To figure
> out what it is doing, you might want to look in
> arch/ppc/boot/tree/Makefile for something called mkevimg.
>
> Scott Anderson
> scott_anderson at mvista.com MontaVista Software Inc.
> (408)328-9214 1237 East Arques Ave.
> http://www.mvista.com Sunnyvale, CA 94085
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list