Skip to contentSkip to conversation

problem to load uImage but not zImage (on virtex-4 board)

U-Boot-Users Guillaume Berthelom 3 participants 6 messages May 2, 2007 – May 4, 2007

lore
Share & tools
lore
#0 lore raw

hi,

I'm trying to port Linux 2.6 on Avnet FX12 MM board with U-Boot and the help of xilinx ML403 config.

I have generate my costum xparameters.h file with EDK 8.2i.
I use ELDK 4.1 and Linux 2.6.20.x.
I have modified ml403.h u-boot's config file to adapt it for my board and I have no problem to boot u-boot.
I use the right board_info structure from <asm/ppcboot.h> and not the one in xilinx_ml403.h.

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.

I'm new in linux embedded and I'm in internship...I have any idea where and what is the problem, certanly in the serial int I guest but I'm not sure.

Thanks and sorry for my english I'm fench.
Guillaume Berthelom

Signature · 2 lines
View this message in context: http://www.nabble.com/problem-to-load-uImage-but-not-zImage-%28on-virtex-4-board%29-tf3681663.html#a10289563
Sent from the Uboot - Users mailing list archive at Nabble.com.
#1 lore raw

[U-Boot-Users] problem to load uImage but not zImage (on virtex-4board)

I take it you are running PPC405 core, right (since it's possible use Microblaze there)? Try to uncomment "#define DEBUG" in lib_ppc/board.c.

You'll see u-boot output regarding board info, see whether it's consistent.

Regarding debug - do you use BDI2000? In any rate, are you sure kernel crashes on that printk() operation or you just don't see any output on console? Where exactly it crashes?

Leonid.

-----Original Message-----
From: [email protected] [mailto:u-boot-users-bounces at lists.sourceforge.net] On Behalf Of Guillaume Berthelom
Sent: Wednesday, May 02, 2007 9:20 AM
To: u-boot-users at lists.sourceforge.net
Subject: [U-Boot-Users] problem to load uImage but not zImage (on virtex-4board)

hi,

I'm trying to port Linux 2.6 on Avnet FX12 MM board with U-Boot and the help
of xilinx ML403 config.

I have generate my costum xparameters.h file with EDK 8.2i. I use ELDK 4.1 and Linux 2.6.20.x.
I have modified ml403.h u-boot's config file to adapt it for my board and I
have no problem to boot u-boot.
I use the right board_info structure from <asm/ppcboot.h> and not the one in
xilinx_ml403.h.

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.

I'm new in linux embedded and I'm in internship...I have any idea where and
what is the problem, certanly in the serial int I guest but I'm not sure.

Thanks and sorry for my english I'm fench.
Guillaume Berthelom

Signature · 16 lines
View this message in context:
http://www.nabble.com/problem-to-load-uImage-but-not-zImage-%28on-virtex
-4-board%29-tf3681663.html#a10289563
Sent from the Uboot - Users mailing list archive at Nabble.com.


------------------------------------------------------------------------
-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users
#2 lore raw
In reply to Guillaume Berthelom
Quoted 10 lines · Guillaume Berthelom

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.

Signature · 4 lines
Grant Likely, B.Sc. P.Eng.
Secret Lab Technologies Ltd.
grant.likely at secretlab.ca
(403) 399-0195
#3 lore raw

[U-Boot-Users] problem to load uImage but not zImage (onvirtex-4 board)

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: [email protected] [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)

Quoted 1 line · Guillaume Berthelom

When I load the zImage directly with xilinx xmd debugger, the kernel

start

Quoted 1 line

without problem (if I don't have KGDB or SERIAL_TEXT_DEBUG option in

my

Quoted 1 line

kernel config). But when I try to load the uImage with u-boot, the

kernel

Quoted 2 lines

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

Quoted 1 line

too and it crach after ppc4xx_setup_arch at printk(KERN_INFO "Xilinx

ML403

Quoted 1 line

Reference System (Virtex-4 FX)\n") line when the kernel access in

printk.c.

Quoted 2 lines

I use the opb_uart16550 IP in my Xilinx design and the associat

drivers in

Quoted 1 line

u-boot and linux.

What are you passing for the kernel command line?
Can you post your .config?

Cheers,
g.

Signature · 15 lines
Grant Likely, B.Sc. P.Eng.
Secret Lab Technologies Ltd.
grant.likely at secretlab.ca
(403) 399-0195

------------------------------------------------------------------------
-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users
#4 lore raw

[U-Boot-Users] problem to load uImage but not zImage (onvirtex-4 board)

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. )@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 :

Quoted 48 lines

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)

Quoted 2 lines · Guillaume Berthelom

When I load the zImage directly with xilinx xmd debugger, the kernel

start

Quoted 2 lines

without problem (if I don't have KGDB or SERIAL_TEXT_DEBUG option in

my

Quoted 2 lines

kernel config). But when I try to load the uImage with u-boot, the

kernel

Quoted 3 lines

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

Quoted 2 lines

too and it crach after ppc4xx_setup_arch at printk(KERN_INFO "Xilinx

ML403

Quoted 2 lines

Reference System (Virtex-4 FX)\n") line when the kernel access in

printk.c.

Quoted 2 lines

I use the opb_uart16550 IP in my Xilinx design and the associat

drivers in

Quoted 10 lines
Quoted 2 lines

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

#5 lore raw

[U-Boot-Users] problem to load uImage but not zImage (onvirtex-4 board)

In reply to Leonid

Hi,

I find my problem! it was like you said a problem with the command line in u-boot. I had defined CONFIG_EXTRA_ENV_SETTINGS before CONFIG_BOOTARGS, that's it! and you have to do the opposite.

Thanks for your help,
Guillaume Berthelom

Leonid a ?crit :

Quoted 58 lines

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)

Quoted 2 lines · Guillaume Berthelom

When I load the zImage directly with xilinx xmd debugger, the kernel

start

Quoted 2 lines

without problem (if I don't have KGDB or SERIAL_TEXT_DEBUG option in

my

Quoted 2 lines

kernel config). But when I try to load the uImage with u-boot, the

kernel

Quoted 3 lines

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

Quoted 2 lines

too and it crach after ppc4xx_setup_arch at printk(KERN_INFO "Xilinx

ML403

Quoted 2 lines

Reference System (Virtex-4 FX)\n") line when the kernel access in

printk.c.

Quoted 2 lines

I use the opb_uart16550 IP in my Xilinx design and the associat

drivers in

Quoted 2 lines

u-boot and linux.

What are you passing for the kernel command line?
Can you post your .config?

Cheers,
g.