Hi, I'm working on booting kernel 2.6 on Xilinx. And I'm encountering a few problems.
1. When I directly download zImage.elf to the RAM and boot from there, I see the kernel starts booting, but it complains about not being able to mount /dev/sysace/disc0/part2 and thus kernel panic happens. The following is the output --------------------------------------------------------------- loaded at: 00400000 004D313C board data at: 004D1124 004D113C relocated to: 004050F8 00405110 zimage at: 0040580D 004D0AA8 avail ram: 004D4000 04000000 Linux/PPC load: console=ttyS0,9600 ip=off root=/dev/xsysace/disc0/part2 rw Uncompressing Linux...done. Now booting the kernel [ 0.000000] Linux version 2.6.17.8 (aleck at sac.gdatech.com) (gcc version 4.0.0 (DENX ELDK 4.0 4.0.0)) #2 Thu Aug 31 11:49:40 PDT 2006 [ 0.000000] Xilinx ML403 Reference System (Virtex-4 FX) [ 0.000000] Built 1 zonelists [ 0.000000] Kernel command line: console=ttyS0,9600 ip=off root=/dev/xsysace/disc0/part2 rw [ 0.000000] Xilinx INTC #0 at 0xD1000FC0 mapped to 0xFDFFEFC0 [ 0.000000] PID hash table entries: 512 (order: 9, 2048 bytes) [ 0.000176] Console: colour dummy device 80x25 [ 0.000676] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) [ 0.001452] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) [ 0.015453] Memory: 63104k available (1268k kernel code, 468k data, 80k init, 0k highmem) [ 0.204374] Mount-cache hash table entries: 512 [ 0.209943] NET: Registered protocol family 16 [ 0.218843] NET: Registered protocol family 2 [ 0.264481] IP route cache hash table entries: 512 (order: -1, 2048 bytes) [ 0.265267] TCP established hash table entries: 2048 (order: 1, 8192 bytes) [ 0.265465] TCP bind hash table entries: 1024 (order: 0, 4096 bytes) [ 0.265569] TCP: Hash tables configured (established 2048 bind 1024) [ 0.265599] TCP reno registered [ 0.272471] io scheduler noop registered [ 0.272558] io scheduler anticipatory registered (default) [ 0.272626] io scheduler deadline registered [ 0.272759] io scheduler cfq registered [ 0.318755] Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled [ 0.323749] serial8250.0: ttyS0 at MMIO 0xa0001003 (irq = 9) is a 16450 [ 2.026296] RAMDISK driver initialized: 16 RAM disks of 65536K size 1024 blocksize [ 2.117598] tun: Universal TUN/TAP device driver, 1.6 [ 2.177338] tun: (C) 1999-2004 Max Krasnyansky <maxk at qualcomm.com> [ 2.252474] mice: PS/2 mouse device common for all mice [ 2.314381] TCP bic registered [ 2.350802] NET: Registered protocol family 1 [ 2.402825] NET: Registered protocol family 17 [ 2.458051] VFS: Cannot open root device "xsysace/disc0/part2" or unknown-block(0,0) [ 2.549979] Please append a correct "root=" boot option [ 2.612426] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) [ 2.711373] <0>Rebooting in 180 seconds..<NULL> ----------------------------------------------------------- 2. When I tried to boot the zImage (sitting in the flash) from u-boot file (generated from the same source code as uImage.elf), as soon as it gives the control to the kernel, no messages would come. I checked to make sure that I had the right serial port setting (console=ttyS0,9600), but still nothing shows up. Here's the output of what I had (I turned on some extra debug msg in u-boot) ------------------------------------------- ### No HW ID - assuming ML403 DRAM: 64 MB FLASH: 8 MB In: serial Out: serial Err: serial Hit any key to stop autoboot: 5 4 3 2 0 => bootm 0xffa00000 ## Booting image at ffa00000 ... Image Name: Linux-2.6.17.8 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 832155 Bytes = 812.7 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK ## Current stack ends at 0x03E62B70 => set upper limit to 0x00800000 ## cmdline at 0x007FFF00 ... 0x007FFF3A memstart = 0x00000000 memsize = 0x04000000 flashstart = 0xFF800000 flashsize = 0x00800000 flashoffset = 0x00000000 sramstart = 0x00000000 sramsize = 0x00000000 bootflags = 0x40401003 procfreq = 300 MHz plb_busfreq = 100 MHz ethaddr = 00:0A:35:00:22:01 IP addr = 192.168.10.111 baudrate = 9600 bps No initrd ## Transferring control to Linux (at address 00000000) ... ------------------------------------------------------------ 3. Lastly, whenever I issue a reset command in u-boot, it just locks up and hangs. I have to do a hardware reset every time. I'm wondering if the reset vector is going to a wrong place. How would I check that? I'm fairly new to the whole embedded domain. Please feel free to help. It would be much appreciated! Thanks. Aleck