[U-Boot-Users] problem to load uImage but not zImage (onvirtex-4 board)
Guillaume Berthelom
guillaume.berthelom at cleode.fr
Thu May 3 11:59:47 CEST 2007
First Thanks from your reply...
In my ml403.h u-boot config's file I've got that:
...
#define CONFIG_EXTRA_ENV_SETTINGS \
"netdev=eth0\0" \
"addip=setenv bootargs $(bootargs) " \
"ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask)" \
":$(hostname):$(netdev):off panic=1\0" \
"rootpath=/opt/eldk4.1/ppc_4xx\0" \
"bootfile=/tftpboot/fx12/boot/uImage\0" \
"nfsargs=setenv bootargs nfsroot=$(serverip):$(rootpath)\0" \
"net_nfs8=dhcp 800000 $(bootfile);run nfsargs addip;bootm\0" \
"net_nfs4=dhcp 400000 $(bootfile);run nfsargs addip;bootm\0" \
"net_nfs2=dhcp 200000 $(bootfile);run nfsargs addip;bootm\0"
#define CONFIG_BOOTCOMMAND "run net_nfs8" /* autoboot command */
#define CONFIG_BOOTARGS "console=ttyS0,9600"
#define CONFIG_LOADS_ECHO 1 /* echo on for serial download */
#define CFG_LOADS_BAUD_CHANGE 1 /* allow baudrate change */
...
My Linux config is very simple for now, I give you my .config in
attached file but my commande line is same as u-boot:
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="console=ttyS0,9600"
I try to turn off this option to be sure u-boot passed the BOOTARGS
commande to the kernel but no result.
The output of u-boot is:
U-Boot 1.2.0 (May 3 2007 - 09:57:13)
### No HW ID - assuming ML403
DRAM: 64 MB
Top of RAM usable for U-Boot at: 04000000
Reserving 159k for U-Boot at: 03fd8000
Reserving 384k for malloc() at: 03f78000
Reserving 120 Bytes for Board Info at: 03f77f88
Reserving 48 Bytes for Global Data at: 03f77f58
Stack Pointer at: 03f77f38
New Stack Pointer is: 03f77f38
Now running in RAM - U-Boot at: 03fd8000
FLASH: flash detect cfi
...
4 MB
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
U-Boot relocated to 03fd8000
### main_loop entered: bootdelay=3
### main_loop: bootcmd="run net_nfs8"
Hit any key to stop autoboot: 0
...
Bootfile: fx12/boot/uImage
DHCP client bound to address 192.168.85.154
TFTP from server 192.168.85.11; our IP address is 192.168.85.154
Filename 'fx12/boot/uImage'.
Load address: 0x800000
Loading: #################################################################
####################################
done
Bytes transferred = 517028 (7e3a4 hex)
## Booting image at 00800000 ...
Image Name: Linux-2.6.20.7
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 516964 Bytes = 504.8 kB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
## Current stack ends at 0x03F77308 => set upper limit to 0x00800000
## cmdline at 0x007FFF00 ... 0x007FFF71
bd address = 0x03F77F88
memstart = 0x00000000
memsize = 0x04000000
flashstart = 0xFF800000
flashsize = 0x00400000
flashoffset = 0x00000000
sramstart = 0x00000000
sramsize = 0x00000000
bootflags = 0xEEC2E568
procfreq = 300 MHz
plb_busfreq = 100 MHz
pci_busfreq = 0 MHz
ethaddr = 00:0A:35:00:22:01
IP addr = 192.168.85.154
baudrate = 9600 bps
No initrd
## Transferring control to Linux (at address 00000000) ...
To debug the kernel I use the xilinx xmd debugger with the JTAG cable
and GDB but I don't have the BDI2000 debugger.
I make a breakpoint at ppc4xx_setup_arch and then I continue with stepi
commande. As you could see the printk() is not finish when the kernel crash:
(gdb) target remote 192.168.85.39:1234
Remote debugging using 192.168.85.39:1234
0x00010100 in ?? ()
(gdb) symbol-file vmlinux
Reading symbols from /export/home/geb/linux-2.6.20.7/vmlinux...done.
(gdb) add-symbol-file vmlinux 0xC0000000
add symbol table from file "vmlinux" at
.text_addr = 0xc0000000
(y or n) y
Reading symbols from /export/home/geb/linux-2.6.20.7/vmlinux...done.
(gdb) hbreak ppc4xx_setup_arch
Hardware assisted breakpoint 1 at 0xc0104e38: file
arch/ppc/syslib/ppc4xx_setup.c, line 60.
(gdb) c
Continuing.
Breakpoint 1, ppc4xx_setup_arch () at arch/ppc/syslib/ppc4xx_setup.c:60
60 mtspr(SPRN_DBCR0, (DBCR0_IDM));
(gdb) stepi
0xc0104e3c 60 mtspr(SPRN_DBCR0, (DBCR0_IDM));
(gdb) stepi
61 mtspr(SPRN_DBSR, 0xffffffff);
(gdb)
0xc0104e44 61 mtspr(SPRN_DBSR, 0xffffffff);
(gdb)
68 }
(gdb)
ml403_setup_arch () at arch/ppc/platforms/4xx/xilinx_ml403.c:92
92 printk(KERN_INFO "Xilinx ML403 Reference System
(Virtex-4 FX)\n");
(gdb) stepi
0xc0105048 92 printk(KERN_INFO "Xilinx ML403 Reference
System (Virtex-4 FX)\n");
(gdb) stepi
0xc010504c 92 printk(KERN_INFO "Xilinx ML403 Reference
System (Virtex-4 FX)\n");
(gdb)
printk (fmt=0xc00e3c0c "<6>Xilinx ML403 Reference System (Virtex-4
FX)\n") at kernel/printk.c:503
503 {
(gdb)
0xc0014768 503 {
(gdb)
0xc001476c 503 {
(gdb)
507 va_start(args, fmt);
(gdb)
0xc0014774 507 va_start(args, fmt);
(gdb)
0xc0014778 507 va_start(args, fmt);
(gdb)
0xc001477c 507 va_start(args, fmt);
(gdb)
0xc0014780 507 va_start(args, fmt);
(gdb)
503 {
(gdb)
507 va_start(args, fmt);
(gdb)
508 r = vprintk(fmt, args);
(gdb)
507 va_start(args, fmt);
(gdb)
0xc0014794 507 va_start(args, fmt);
(gdb)
503 {
(gdb)
0xc001479c 503 {
(gdb)
0xc00147a0 503 {
(gdb)
0xc00147a4 503 {
(gdb)
0xc00147a8 503 {
(gdb)
0xc00147ac 503 {
(gdb)
508 r = vprintk(fmt, args);
(gdb)
vprintk (fmt=0xc00e3c0c "<6>Xilinx ML403 Reference System (Virtex-4
FX)\n", args=0xc00fff80)
at kernel/printk.c:518
518 {
(gdb)
0xc0014494 518 {
(gdb)
0xc0014498 518 {
(gdb)
0xc001449c 518 {
(gdb)
526 if (unlikely(oops_in_progress) && printk_cpu ==
smp_processor_id())
(gdb)
0xc00144a4 526 if (unlikely(oops_in_progress) &&
printk_cpu == smp_processor_id())
(gdb)
518 {
(gdb)
526 if (unlikely(oops_in_progress) && printk_cpu ==
smp_processor_id())
(gdb)
518 {
(gdb)
526 if (unlikely(oops_in_progress) && printk_cpu ==
smp_processor_id())
(gdb)
91 msr = mfmsr();
(gdb)
96 SET_MSR_EE(msr & ~MSR_EE);
(gdb)
0xc0014518 96 SET_MSR_EE(msr & ~MSR_EE);
(gdb)
538 printed_len = vscnprintf(printk_buf, sizeof(printk_buf),
fmt, args);
(gdb)
0xc0014520 538 printed_len = vscnprintf(printk_buf,
sizeof(printk_buf), fmt, args);
(gdb)
535 printk_cpu = smp_processor_id();
(gdb)
0xc0014528 535 printk_cpu = smp_processor_id();
(gdb)
538 printed_len = vscnprintf(printk_buf, sizeof(printk_buf),
fmt, args);
(gdb)
0xc0014530 538 printed_len = vscnprintf(printk_buf,
sizeof(printk_buf), fmt, args);
(gdb)
0xc0014534 538 printed_len = vscnprintf(printk_buf,
sizeof(printk_buf), fmt, args);
(gdb)
0xc0014538 538 printed_len = vscnprintf(printk_buf,
sizeof(printk_buf), fmt, args);
(gdb)
535 printk_cpu = smp_processor_id();
(gdb)
538 printed_len = vscnprintf(printk_buf, sizeof(printk_buf),
fmt, args);
(gdb)
vscnprintf (
buf=0xc0114b24 "Linux version 2.6.20.7 (geb at bouleau) (gcc version
4.0.0 (DENX ELDK 4.1 4.0.0)) #1 Thu May 3 09:42:17 CEST 2007\n", size=1024,
fmt=0xc00e3c0c "<6>Xilinx ML403 Reference System (Virtex-4 FX)\n",
args=0xc00fff80)
at lib/vsprintf.c:515
515 {
(gdb)
0xc00a00c8 515 {
(gdb)
0xc00a00cc 515 {
(gdb)
0xc00a00d0 515 {
(gdb)
0xc00a00d4 515 {
(gdb)
518 i=vsnprintf(buf,size,fmt,args);
(gdb)
vsnprintf (
buf=0xc0114b24 "Linux version 2.6.20.7 (geb at bouleau) (gcc version
4.0.0 (DENX ELDK 4.1 4.0.0)) #1 Thu May 3 09:42:17 CEST 2007\n", size=1024,
fmt=0xc00e3c0c "<6>Xilinx ML403 Reference System (Virtex-4 FX)\n",
args=0xc00fff80)
at lib/vsprintf.c:258
258 {
(gdb)
0xc009f8d0 258 {
(gdb)
277 if (unlikely((int) size < 0)) {
(gdb)
258 {
(gdb)
0xc009f8dc 258 {
(gdb)
0xc009f8e0 258 {
(gdb)
258 {
(gdb)
0xc009f8e8 258 {
(gdb)
277 if (unlikely((int) size < 0)) {
(gdb)
286 end = buf + size;
(gdb)
289 if (end < buf) {
(gdb)
0xc009f918 289 if (end < buf) {
(gdb)
0xc009f91c 289 if (end < buf) {
(gdb)
0xc009f920 289 if (end < buf) {
(gdb)
0xc00a0080 294 for (; *fmt ; ++fmt) {
(gdb)
0xc00a0084 294 for (; *fmt ; ++fmt) {
(gdb)
0xc00a0088 294 for (; *fmt ; ++fmt) {
(gdb)
0xc00a008c 294 for (; *fmt ; ++fmt) {
(gdb)
295 if (*fmt != '%') {
(gdb)
0xc009f934 295 if (*fmt != '%') {
(gdb)
0xc009f938 295 if (*fmt != '%') {
(gdb)
431 if (str < end)
(gdb)
0xc009fe48 431 if (str < end)
(gdb)
432 *str = '%';
(gdb)
433 ++str;
(gdb)
0xc009fe54 433 ++str;
(gdb)
294 for (; *fmt ; ++fmt) {
(gdb)
0xc00a0078 294 for (; *fmt ; ++fmt) {
(gdb)
0xc00a007c 294 for (; *fmt ; ++fmt) {
(gdb)
0xc00a0080 294 for (; *fmt ; ++fmt) {
(gdb)
0xc00a0084 294 for (; *fmt ; ++fmt) {
(gdb)
0xc00a0088 294 for (; *fmt ; ++fmt) {
(gdb)
/*************. repeat loop x times ************/
(gdb)
488 if (size > 0) {
(gdb)
0xc00a0094 488 if (size > 0) {
(gdb)
489 if (str < end)
(gdb)
0xc00a009c 489 if (str < end)
(gdb)
490 *str = '\0';
(gdb)
0xc00a00a4 490 *str = '\0';
(gdb)
495 return str-buf;
(gdb)
496 }
(gdb)
0xc00a00b4 496 }
(gdb)
0xc00a00b8 496 }
(gdb)
0xc00a00bc 496 }
(gdb)
0xc00a00c0 in vsnprintf (buf=Variable "buf" is not available.
) at lib/vsprintf.c:496
496 }
(gdb)
0x00001100 in ?? ()
(gdb) bt
#0 0x00001100 in ?? ()
#1 0xc00a00dc in vscnprintf (buf=Variable "buf" is not available.
) at lib/vsprintf.c:518
#2 0x480022b5 in ?? ()
#3 0x480022b5 in ?? ()
Previous frame inner to this frame (corrupt stack?)
(gdb)
I also try to use the command line specified in 8250_early.c like
console=uart,mmio,0x40401003,9600n8 (0x40401003 is my
XPAR_UARTNS550_0_BASEADDR + 3) but no result too.
So if you have any ideas or suggestion...
Thanks,
Guillaume Berthelom
Leonid a écrit :
> Grant is right - kernel command line (defined by u-boot variable
> "bootargs") is also very important, though it's difficult to see how
> wrong command line can crash printk(). It definitely can prevent serial
> output from showing up on console though.
>
> Leonid.
>
> -----Original Message-----
> From: u-boot-users-bounces at lists.sourceforge.net
> [mailto:u-boot-users-bounces at lists.sourceforge.net] On Behalf Of Grant
> Likely
> Sent: Wednesday, May 02, 2007 10:19 AM
> To: Guillaume Berthelom
> Cc: u-boot-users at lists.sourceforge.net
> Subject: Re: [U-Boot-Users] problem to load uImage but not zImage
> (onvirtex-4 board)
>
> On 5/2/07, Guillaume Berthelom <guillaume.berthelom at cleode.fr> wrote:
>
>> When I load the zImage directly with xilinx xmd debugger, the kernel
>>
> start
>
>> without problem (if I don't have KGDB or SERIAL_TEXT_DEBUG option in
>>
> my
>
>> kernel config). But when I try to load the uImage with u-boot, the
>>
> kernel
>
>> start but crach befor I can see something on output.
>> The kernel start because I debug it and the platform_init is ok,
>>
> setup_arch
>
>> too and it crach after ppc4xx_setup_arch at printk(KERN_INFO "Xilinx
>>
> ML403
>
>> Reference System (Virtex-4 FX)\n") line when the kernel access in
>>
> printk.c.
>
>> I use the opb_uart16550 IP in my Xilinx design and the associat
>>
> drivers in
>
>> u-boot and linux.
>>
>
> What are you passing for the kernel command line?
> Can you post your .config?
>
> Cheers,
> g.
>
>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: .config
Url: http://lists.denx.de/pipermail/u-boot/attachments/20070503/8369ed98/attachment.txt
More information about the U-Boot
mailing list