CLEANMARKER node found at 0x007a4000 has totlen 0xc != normal 0x0

Ricard Wanderlof ricard.wanderlof at axis.com
Tue Jun 12 02:08:48 EDT 2007


On Mon, 11 Jun 2007, Kevin Morfitt wrote:

> I'm using mtd-utils-1.0.0 on a KB9202B with a 32M NAND flash. /dev/mtd0 
> is mapped as one partition:
>
> [root at KB9202B:~] cat /proc/mtd
> dev:    size   erasesize  name
> mtd0: 02000000 00004000 "nand_fs"

From this we can see that the [erase]block size is 0x4000, as one would 
expect for a NAND flash of this size.

> I create my jffs image using:
>
> mkfs.jffs2 --pad=0x4000 --eraseblock=0x4000 -l --root=kb9202_nfsroot/target_fs
> -o full_fs.bin

--pad should suffice, it should pad the image up to a multiple of the 
block size.

> To program the NAND, when I'm mounted via NFS, I do:
>
> [root at KB9202B:~] flash_eraseall -j /dev/mtd0
> Erasing 16 Kibyte @ 1ffc000 -- 99 % complete. Cleanmarker written at
> 1ffc000.
> [root at KB9202B:~] nandwrite -f /dev/mtd0 /full_fs.bin

Since you are writting a preformatted image, and not just erasing the 
flash to get an empty jffs2 partition, I would suggest not using -j to 
flash_eraseall, in order to get a clean flash.

(Side note: Even if you did want to create an empty jffs2 partition, you 
could skip the -j . The JFFS2 driver automatically erases and writes 
cleanmarkers to blocks that lack them. It does take a bit of time on first 
boot though, but as a kernel thread that runs in the background, so you 
may not even notice it.)

> When I re-boot from MTD I always get lots of messages like "CLEANMARKER node
> found at 0x007a4000 has totlen 0xc != normal 0x0". The board still boots but
> after a few re-boots I end up getting other messages like:

AFAIR this is what happens when you have cleanmarkers in the image and you 
are using nand flash. The solution as you suggest is to specify -n (or 
--no-cleanmarkers) to mkfs.jffs2.

> I've seen the other threads on this subjects and tried using '-n' in my
> mkfs.jffs2 command but if I do that nandwrite fails with:
>
> [root at KB9202B:~] Input file is not page aligned
> [root at KB9202B:~] Data did not fit into device, due to bad blocks

I think this could be because you are erasing the flash with -j. The flash 
isn't empty, and writing with nandwrite clashes with the data already 
there. The 'not page aligned' bit is confusing though.

You can also specify -p (or --pad) to nandwrite to get it to pad the 
image.

> I've read somewhere else that the "wrong data CRC" message might mean my
> erase size is wrong but I don't know what the erase size should be anyway.

You can see the erase[block] size in /proc/mtd, or in the data sheet of 
the device (called 'block size' there).

So to sum up:

- Use -n and --pad to mkfs.jffs2 (or skip --pad here and specify it to
   nandwrite instead).
- Avoid -j with flash_eraseall

/Ricard
--
Ricard Wolf Wanderlöf                           ricardw(at)axis.com
Axis Communications AB, Lund, Sweden            www.axis.com
Phone +46 46 272 2016                           Fax +46 46 13 61 30



More information about the linux-mtd mailing list