[Yaffs] Problem with Yaffs on Routerboard RB112 and kernel 2…

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: David Goodenough
Date:  
To: yaffs
Subject: [Yaffs] Problem with Yaffs on Routerboard RB112 and kernel 2.6.19
I am currently trying to get a 2.6.19 kernel working on a Routerboard
RB112 (and the rest of the 100 series).

The RB112 (like the RB532) has a boot loader which loads an ELF file
which comes from one of two places, it can be downloaded from a TFTP
server (I have this working) or from the onboard NAND chip, the first
4MB of which are assumed to be a Yaffs partition containing a single
file called kernel.

The netbooted kernel has NAND support for the chip, based on the code
that Microtik produced for 2.4 kernels, and updated to the 2.6.19
MTD layers, which seems to work. I can use hexdump to look at /dev/mtd0
and it looks as I would expect, I can use mtd erase and it clears
apparently correctly. The problem comes when I try to mount the partition.

If I use the same options that I used to use on the RB532 on a 2.6.16
kernel (which included the option for Yaffs to do the ECC) then every
block if marked as bad during the mount. If I turn off the Yaffs ECC
option then it mounts OK, but if I then write the new kernel (and I
can reboot and the kernel yaffs code will mount the partition again and
the kernel is intact) and tell the RB112 boot loader to load from the
NAND partition then the boot loader complains that it can not find
a kernel file to load.

Reading around on Google I came across some suggestions that the
problem was due to changes in the MTD layer taking over from the
Yaffs layer things like ECC and control of the OOB blocks.

My problem is that I need to use whatever NAND format the boot loader
is going to use - I can not change that, I can change what the kernel
does.

I also noticed that I was using a version of Yaffs which was not quite
up to date, so downloaded the latest version and in there I saw that
there were two versions of one file which looked relevant. The file
in question is yaffs_mtdif2.c, one copy is in the mail fs/yaffs2 directory
and the other is in a patch directory. Also in the patch directory is
a README which contains the following enigmatic paragraph:-

"Right now there is only one patched file, yaffs_mtdif2.c. This has been
patched with a tweaked version of "Sergey's patch" and typically makes a
stock mtd work properly."

Having now real history with Yaffs I do not know what Sergey's patch is,
and whether this version is what I need. Can anyone suggest whether this
is relevant to my situation? If not, can anyone suggest what I should
do in order to achieve my aim of having something that the boot layer can
recognise.

David