SMDK2450 - mounting rootfs from NAND Flash

Rajam AP
Hello all, 

We have SMDK2450 development kit with 64MB RAM and 256MB NAND Flash. We are
able to download the kernel and basic file system through memory. What we
need is to Boot the system from NAND flash. Boot from NAND Flash is
happening but root fs mounting from NAND is not going through. The kernel
log is enclosed below: 
---------------------------------------------------------------------
SMDK2416 # nand read 0xc0108000 0x400000 0x20cbff


NAND read: device 0 offset 0x400000, size 0x20cbff

 2149375 bytes read: OK

SMDK2416 # bootm 0xc0108000

Boot with zImage


Starting kernel ...


Uncompressing Linux... done, booting the kernel.
Linux version 2.6.35-rc4 (qmax@Qmax-U910) (gcc version 4.2.2) #4 Thu Jan 20
16:41:58 IST 2011
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: SMDK2416
Memory policy: ECC disabled, Data cache writeback
CPU S3C2416/S3C2450 (id 0x32450003)
S3C24XX Clocks, Copyright 2004 Simtec Electronics
CPU: MPLL on 800.000 MHz, cpu 400.000 MHz, mem 133.333 MHz, pclk 66.666 MHz
CPU: EPLL on 96.000 MHz, usb-bus 48.000 MHz
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: root=/dev/mtd:rootfs rootfstype=cramfs noinitrd
init=/linuxrc console=ttySAC0,115200 mem=64M
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 60488k/60488k available, 5048k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xffc00000 - 0xffe00000   (   2 MB)
    vmalloc : 0xc4800000 - 0xe0000000   ( 440 MB)
    lowmem  : 0xc0000000 - 0xc4000000   (  64 MB)
    modules : 0xbf000000 - 0xc0000000   (  16 MB)
      .init : 0xc0108000 - 0xc0130000   ( 160 kB)
      .text : 0xc0130000 - 0xc04e6000   (3800 kB)
      .data : 0xc0504000 - 0xc052d700   ( 166 kB)
Hierarchical RCU implementation.
  RCU-based detection of stalled CPUs is disabled.
  Verbose stalled-CPUs detection is disabled.
NR_IRQS:99
irq: clearing subpending status 00000003
irq: clearing subpending status 00000002
Console: colour dummy device 80x30
console [ttySAC0] enabled
Calibrating delay loop... 199.47 BogoMIPS (lpj=498688)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
S3C Power Management, Copyright 2004 Simtec Electronics
S3C2416: Initializing architecture
S3C2416: IRQ Support
S3C24XX DMA Driver, Copyright 2003-2006 Simtec Electronics
DMA channel 0 at c4808000, irq 88
DMA channel 1 at c4808100, irq 89
DMA channel 2 at c4808200, irq 90
DMA channel 3 at c4808300, irq 91
DMA channel 4 at c4808400, irq 92
DMA channel 5 at c4808500, irq 93
s3c-adc s3c24xx-adc: attached adc driver
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
s3c-i2c s3c2410-i2c: slave address 0x10
s3c-i2c s3c2410-i2c: bus frequency set to 65 KHz
s3c-i2c s3c2410-i2c: i2c-0: S3C I2C adapter
Advanced Linux Sound Architecture Driver Version 1.0.23.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
NetWinder Floating Point Emulator V0.97 (extended precision)
JFFS2 version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
ROMFS MTD (C) 2007 Red Hat, Inc.
msgmni has been set to 118
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
lp: driver loaded but no devices found
ppdev: user-space parallel port driver
Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
s3c2440-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440
brd: module loaded
loop: module loaded
usbcore: registered new interface driver ub
Uniform Multi-Platform E-IDE driver
ide-gd driver 1.18
ide-cd driver 5.00
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c24xx-nand s3c2412-nand: Tacls=3, 22ns Twrph0=8 60ns, Twrph1=3 22ns
s3c24xx-nand s3c2412-nand: System booted from NAND
s3c24xx-nand s3c2412-nand: NAND soft ECC
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V
8-bit)
Scanning device for bad blocks
Bad eraseblock 0 at 0x000000000000
Bad eraseblock 1 at 0x000000400000
Bad eraseblock 2 at 0x000000800000
Bad eraseblock 3 at 0x000000c00000
Bad eraseblock 24 at 0x000006000000
Bad eraseblock 25 at 0x000006400000
Bad eraseblock 26 at 0x000006800000
Creating 8 MTD partitions on "NAND 256MiB 3,3V 8-bit":
0x000000000000-0x000000004000 : "Boot Agent"
mtd: partition "Boot Agent" doesn't end on an erase block -- force
read-only
0x000000000000-0x000000200000 : "S3C2410 flash partition 1"
mtd: partition "S3C2410 flash partition 1" doesn't end on an erase block --
force read-only
0x000000400000-0x000000800000 : "S3C2410 flash partition 2"
0x000000800000-0x000000a00000 : "S3C2410 flash partition 3"
mtd: partition "S3C2410 flash partition 3" doesn't end on an erase block --
force read-only
0x000000a00000-0x000000e00000 : "S3C2410 flash partition 4"
mtd: partition "S3C2410 flash partition 4" doesn't start on an erase block
boundary -- force read-only
0x000000e00000-0x000001800000 : "S3C2410 flash partition 5"
mtd: partition "S3C2410 flash partition 5" doesn't start on an erase block
boundary -- force read-only
0x000001800000-0x000003000000 : "S3C2410 flash partition 6"
0x000003000000-0x000010000000 : "S3C2410 flash partition 7"
dm9000 Ethernet Driver, V1.31
usbmon: debugfs is not available
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver libusual
usbcore: registered new interface driver usbserial
USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial Driver core
USB Serial support registered for FTDI USB Serial Device
usbcore: registered new interface driver ftdi_sio
ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
USB Serial support registered for pl2303
usbcore: registered new interface driver pl2303
pl2303: Prolific PL2303 USB to serial adaptor driver
mice: PS/2 mouse device common for all mice
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
No device for DAI UDA134X
No device for DAI s3c24xx-i2s
ALSA device list:
  No soundcards found.
TCP cubic registered
NET: Registered protocol family 17
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "mtd:rootfs" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available
partitions:
1f00              16 mtdblock0 (driver?)
1f01            2048 mtdblock1 (driver?)
1f02            4096 mtdblock2 (driver?)
1f03            2048 mtdblock3 (driver?)
1f04            4096 mtdblock4 (driver?)
1f05           10240 mtdblock5 (driver?)
1f06           24576 mtdblock6 (driver?)
1f07          212992 mtdblock7 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on
unknown-block(2,0)
[<c0136368>] (unwind_backtrace+0x0/0xf0) from [<c0153f64>]
(panic+0x54/0xe4)
[<c0153f64>] (panic+0x54/0xe4) from [<c01090d0>]
(mount_block_root+0x1c4/0x20c)
[<c01090d0>] (mount_block_root+0x1c4/0x20c) from [<c0109380>]
(prepare_namespace+0x164/0x1c8)
[<c0109380>] (prepare_namespace+0x164/0x1c8) from [<c0108908>]
(kernel_init+0x108/0x14c)
[<c0108908>] (kernel_init+0x108/0x14c) from [<c0131e2c>]
(kernel_thread_exit+0x0/0x8)

We look forward for any help in resolving the issue. 

Thanks and regards

Rajam
QMax Systems

davef
http://www.linuxquestions.org/questions/linux-embedded-78/smdk2450-linux...

says you are using u-boot.

What are you using for a bootloader?  u-boot needs a uImage not a zImage.

With u-boot are you doing a <nand scrub> and  a <nand createbbt> as per 
http://narnia.cs.ttu.edu/drupal/node/131

Or is it not required on this platform?