From mboxrd@z Thu Jan 1 00:00:00 1970 From: Guillaume Berthelom Date: Thu, 03 May 2007 11:59:47 +0200 Subject: [U-Boot-Users] problem to load uImage but not zImage (onvirtex-4 board) In-Reply-To: <406A31B117F2734987636D6CCC93EE3C01700E4F@ehost011-3.exch011.intermedia.net> References: <10289563.post@talk.nabble.com> <528646bc0705021018k5bcc5995g7b4a824b357e567b@mail.gmail.com> <406A31B117F2734987636D6CCC93EE3C01700E4F@ehost011-3.exch011.intermedia.net> Message-ID: <4639B293.6020605@cleode.fr> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 : > 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 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