[U-Boot-Users] Re: Reading or writing jffs2 - how?

Martin Egholm Nielsen martin at egholm-nielsen.dk
Thu Dec 16 16:17:27 CET 2004


Hi Detlev,

>> I have tried to create a jffs2-image of the linux-filesystem I wish
>> to use, and then write it to my flash using "nand write.jffs2
>> 100000 0 $(filesize)". But with no luck... Then I began to
>> investigate the fundamental "ls" and "nand erase" commands, but
>> neither there did I have any success. Below is a trace of what I've
>> tried in order to get something working.
> Are you really sure, your NAND gets accessed correctly both under 
> U-Boot and Linux?  Can you erase / write / readback some data under 
> U-Boot by hand?
I'm sure it works under Linux - there I can both write and read - boot
and use the flash-data again. No problems.

Under u-boot I've just tried the following:

=============== 8< 8< 8< 8< ===============

=> md.b 100000

00100000: 7f a3 eb 78 38 a0 00 00 4b ff fa b1 7c 7f 1b 78
...x8...K...|..x
00100010: 3d 40 c0 18 39 2a 14 60 81 69 00 08 39 6b ff ff
=@..9*.`.i..9k..
00100020: 91 69 00 08 2c 0b 00 00 40 82 00 10 80 0a 14 60
.i..,... at ......`
00100030: 2c 00 00 00 40 82 00 0c 7f e3 fb 78 4b ff fe a0
,... at ......xK...

=> nand write 100000 0 40

NAND write: device 0 offset 0, size 64 ... Warning block writes should
be at lea
st 512 bytes and start on a 512 byte boundry
  64 bytes written: OK

=> nand read 200000 0 40

NAND read: device 0 offset 0, size 64 ... Warning block writes should be
at leas
t 512 bytes and start on a 512 byte boundry
  64 bytes read: OK

=> md.b 200000

00200000: 7f a3 eb 78 38 a0 00 00 4b ff fa b1 7c 7f 1b 78
...x8...K...|..x
00200010: 3d 40 c0 18 39 2a 14 60 81 69 00 08 39 6b ff ff
=@..9*.`.i..9k..
00200020: 91 69 00 08 2c 0b 00 00 40 82 00 10 80 0a 14 60
.i..,... at ......`
00200030: 2c 00 00 00 40 82 00 0c 7f e3 fb 78 4b ff fe a0
,... at ......xK...

=>

=============== 8< 8< 8< 8< ===============

In short: the giberish-data present at memory 0x100000 is written to
flash, and reread again to memory at 0x200000. The flash does still
contain the data after reboot.

Next, I tried reading the data from my Linux:

# dd if=/dev/mtd0 of=/ftp/dump bs=8 count=8

=== /ftp/dump contains: ===

00000000: 7fa3 eb78 38a0 0000 4bff fab1 7c7f 1b78  ...x8...K...|..x
00000010: 3d40 c018 392a 1460 8169 0008 396b ffff  =@..9*.`.i..9k..
00000020: 9169 0008 2c0b 0000 4082 0010 800a 1460  .i..,... at ......`
00000030: 2c00 0000 4082 000c 7fe3 fb78 4bff fea0  ,... at ......xK...

Hence, the same data is available from Linux at the beginning at the device.

That made me wonder... Aaaaand, then I tried mounting the
flash-root-filesystem under Linux after what I thought would have
corrupted it (the above writing of giberish to the system). And the
root-filesystem still worked!
Hence, I tried dumping the entire flash to a file. And I discovered that
the filesystem-data was positioned at the "end" of the flash...
That may be the reason that "ls" in u-boot does not work with the image
in flash - or what?

Best regards,
  Martin Egholm






More information about the U-Boot mailing list