M-Systems DiskOnChip problems

David Parkinson parky_dw at ntlworld.com
Tue Feb 16 07:56:22 EST 2010


I'm trying to use an 32MB DOC 2000 chip (MD2202-D32) in a Geode 
GX1-based thin client - namely a Neoware Capio 620.  (This is old 
technology from 2003). Up to now I've been running Linux off a 
Compact Flash card on the IDE interface, but I'd like to make use of the DOC.

After wandering around the FFS documentation for a while I decided 
use to start with e2fs on NFTL on the MTD drivers.

Currently the DOC has Windows CE on it and is formatted with the old 
M-Systems TrueFFS.

Compile a 2.6.29.1 with the NAND drivers and NFTL enabled.  Initially 
fine, the DOC is detected on bootup:

....
DiskOnChip found at 0xd8000
DiskOnChip 2000 responds to DWORD access
Detected 1 chips per floor.
NAND device: Manufacturer ID: 0xec, Chip ID: 0x75 (Samsung NAND 32MiB 
3,3V 8-bit)
ECC error scanning DOC at 0x10000
Found DiskOnChip ANAND Media Header at 0x10000
ECC error scanning DOC at 0x14000
Found DiskOnChip ANAND Media Header at 0x14000
     DataOrgID        = ANAND
     NumEraseUnits    = 2044
     FirstPhysicalEUN = 4
     FormattedSize    = 32768000
     UnitSizeFactor   = 255
Bad block table at page 129, version 0x55
Bad block table at page 161, version 0x55
mtd: Giving out device 0 to DiskOnChip 2000 (NFTL Model)
Found alias of DOC at 0xd8000 to 0xda000
....

I can access it as a serial device (hexdump -C /dev/mtd0).

With the NFTL in the kernel the start-up time is extended as the code 
scans the entire 32MB and does occasional writes:

....
nand_read_oob: from = 0x01fefc00, len = 16
nand_read_oob: from = 0x01fefe00, len = 16
nand_write_oob: to = 0x01fec200, len = 8
nand_read_oob: from = 0x01ff0000, len = 8
nand_read_oob: from = 0x01ff0200, len = 8
nand_read_oob: from = 0x01ff0200, len = 8
nand_read_oob: from = 0x01ff0000, len = 16
....

(I've switched on debugging at Level 3).

If I try and format it:
    mke2fs /dev/nftla
It hangs after it prints "Writing superblocks" (or similar) and in 
the log file I find:

....
nand_read_oob: from = 0x01ffc000, len = 8
nand_write_oob: to = 0x01ffc000, len = 8
BUG: unable to handle kernel paging request at d0c19280
IP: [<c023114f>] 0xc023114f
*pde = 00000000
Oops: 0002 [#1]
last sysfs file: /sys/kernel/uevent_seqnum
Modules linked in: vfat fat snd_cs5530 snd_sb16_dsp snd_sb_common 
squashfs snd_pcm snd_timer scsi_wait_scan snd soundcore 
snd_page_alloc 8139cp 8139too

Pid: 29, comm: nftld Not tainted (2.6.29.1-tinycoreMTD #16)
EIP: 0060:[<c023114f>] EFLAGS: 00010282 CPU: 0
EAX: 00000004 EBX: ccf25f80 ECX: 00000004 EDX: 00000010
ESI: ccf25f80 EDI: d0c19280 EBP: ccf150d0 ESP: ccf25ea8
  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
Process nftld (pid: 29, ti=ccf24000 task=ccec3cc0 task.ti=ccf24000)
Stack:
  ccf150d0 00000200 00000000 cd999000 ccf150d0 c023162a 00000200 ccf15000
  0000ffe0 ffffffff ccf25f80 0000ffe0 cd999000 00000000 00000000 0000001f
  0000ffff 01ffc000 00000000 ccf25f50 ccf15000 c023172d ccf25f50 c022f159
Call Trace:
  [<c023162a>] 0xc023162a
  [<c023172d>] 0xc023172d
  [<c022f159>] 0xc022f159
  [<c022f243>] 0xc022f243
  [<c022e28a>] 0xc022e28a
  [<c022e16d>] 0xc022e16d
  [<c0121754>] 0xc0121754
  [<c012171d>] 0xc012171d
  [<c01030b7>] 0xc01030b7
Code: 89 c5 8b 01 89 d3 83 f8 01 8b 51 0c 74 2c 72 09 83 f8 02 0f 85 
94 00 00 00 89 d0 8b bd 84 00 00 00 c1 e8 02 03 79 14 89 de 89 c1 
<f3> a5 89 d1 83 e1 03 74 02 f3 a4 01 d3 eb 77 8b 85 ac 00 00 00
EIP: [<c023114f>]  SS:ESP 0068:ccf25ea8
---[ end trace dfc1d6a2b4c7b2c5 ]---
.....

So after a visit to the MTD website (today) from whence I got the 
current image of MTD-2.6 I built a new kernel 2.6.32

Now, without the NFTL module things are as before in that the DOC is 
found and can be listed using hexdump -C /dev/mtd0.  If I include 
NFTL in the kernel build it now dies at the end of the scan of the device:

The last few messages I see on the system console are:
nand_do_read_oob: from 0x01fffc00, len = 16
nand_do_read_oob: from 0x01fffc00, len = 16
nand_do_write_oob: to = 0x01ffc200, len = 8

Any pointers or suggestions as to where I should go next?

Regards

David




More information about the linux-mtd mailing list