Am 10.06.2010 um 11:23 schrieb Dr. H. Nikolaus Schaller:


Am 09.06.2010 um 22:51 schrieb Dr. H. Nikolaus Schaller:

Hi Ruben,

Am 09.06.2010 um 18:57 schrieb Ruben Viets:

Hi Nikolaus,

Looks like broken yaffs2 when newer ingenic patches are used.

Ah, I see.

I found that my kernel appears to have the 20080530 patch. At least my README-JZ file says: (Updated: 2008-05-20)

Nevertheless, I have some problems with yaffs2. I get segfaults when trying to remove files. Reading files and listing the directory works fine.

dmesg says:
Unable to handle kernel paging request
...
epc: yaffs_VerifyDirectory+0x24/0xcc

But it simply may be that the yaffs I find on these NAND partions is from the 2.4 kernel - and is only partially compatible.

an interesting observation - gcc gives a warning for yaffs:

  CC      fs/yaffs2/yaffs_ecc.o - due to target missing
  CC      fs/yaffs2/yaffs_fs.o - due to target missing
fs/yaffs2/yaffs_fs.c: In function `yaffs_commit_write':
fs/yaffs2/yaffs_fs.c:717: Warning: »addr« could be uninitialized in this function
  CC      fs/yaffs2/yaffs_guts.o - due to target missing
  CC      fs/yaffs2/yaffs_checkptrw.o - due to target missing
  CC      fs/yaffs2/yaffs_packedtags1.o - due to target missing
  CC      fs/yaffs2/yaffs_packedtags2.o - due to target missing
  CC      fs/yaffs2/yaffs_nand.o - due to target missing
  CC      fs/yaffs2/yaffs_qsort.o - due to target missing
  CC      fs/yaffs2/yaffs_tagscompat.o - due to target missing
  CC      fs/yaffs2/yaffs_tagsvalidity.o - due to target missing
  CC      fs/yaffs2/yaffs_mtdif.o - due to target missing
  CC      fs/yaffs2/yaffs_mtdif1.o - due to target missing
  CC      fs/yaffs2/yaffs_mtdif2.o - due to target missing
  LD      fs/yaffs2/yaffs.o - due to target missing




May be issue related to v33 patch compatibility issue, as the v33 patch orginates from linux-2.6.24.3-jz-20080530.patch

So this opens up a different strategy: find out what has changed between the two patches and did break yaffs2.

Now, I have compared the patches side-by side. There are 2630 differences, but many of them are just a new date in the "diff" or "$Id:" line.

Main changes I have identified:
* MTD tools support larger block size
* YAFFS utils support larger block size
* YAFFS got more ECC options: YAFFS_ECC_RS, YAFFS_ECC_HAMMING
* block number was changed 32 -> 64 bit
* major changes in yaffs_fs.c::yaffs_internalread_super()
* other changes in: yaffs_ecc.c, yaffs_mtd.c, yaffs_packedtags2.c
* not YAFFS related: README-JZ, mach-jz4750/

important README-JZ diffs:
+ And the MTD subsystem was modified by Ingenic to support the NAND larger than 2GB.

To create a YAFFS2 image, mkyaffs2image command is used On PC host:
+
+    usage: mkyaffs2image layout# dir image_file [convert]
+
+       layout#     NAND OOB layout:
+                    0 - nand_oob_raw, no used,
+                    1 - nand_oob_64, for 2KB pagesize,
+ 2 - nand_oob_128, for 2KB pagesize using multiple planes or 4KB pagesize, + 3 - nand_oob_256, for 4KB pagesize using multiple planes
+       dir         the directory tree to be converted
+       image_file  the output file to hold the image
+
+  e.g., for 2KB page size NAND not using multi-plane:
+
+  $ mkyaffs2image 1 /nfsroot/root26 root26.yaffs2
+
+To burn the yaffs2 image to the NAND, use next command (On target board):
+
+  # nandwrite -a -o /dev/mtd2 root26.yaffs2
+
+To format and mount YAFFS2 (On target board):
+
+  # flash_eraseall /dev/mtd2
+  # mount -t yaffs2 /dev/mtdblock2 /mnt/mtdblock2
+

+The linux kernel from ingenic provides MLC NAND support through Hardware +ECC algorithm. Jz4740 supports Reed-Solomon (RS) ECC algorithm, which can +detect and correct 4-bit errors per 512 bytes at least. Jz4750 supports +4-bit and 8-bit BCH ECC algorithm, 4-bit BCH ECC can detect and correct
+4 bits for up to 1010 bytes and 8-bit BCH ECC can detect and correct
+8 bits errors for up to 1016 bytes.
+
+To include MLC NAND support, you are required to configure the kernel
+and select the configuration CONFIG_MTD_HW_RS_ECC for Jz4740, and
+CONFIG_MTD_HW_BCH_ECC for Jz4750, which can be found at:
+
+ [Memory Technology Devices (MTD)] --> [NAND Device Support]
+
+  --> [ECC Type] --> [Select hardware RS ECC]
+                     [Select hardware BCH ECC]




To do this completely: can you explain the specific symptoms of broken yaffs2?

BTW: I think we should develop a new minifs and install as yaffs2 (the Skytone minifs is IMHO a jffs2). For that I have started to work on a branch of the lenny-400 rootfs.

Hm - we have to squeeze that into 5 MByte...


best regards,
Nikolaus


Grt Ruben.

From: h...@computer.org
To: r_vi...@hotmail.com; mipsbook-devel@linuxtogo.org
Subject: Re: [Mipsbook-devel] yaffs2
Date: Wed, 9 Jun 2010 12:20:29 +0200

Hi Ruben,

I think I have applied linux-2.6.24.3-jz-20100304.patch to my initial kernel. At least according to the commit log [1]. So my kernel should already include the most recent yaffs2 - or has someone broken yaffs2 since linux-2.6.24.3-jz-20080530.patch ?

_______________________________________________
Mipsbook-devel mailing list
Mipsbook-devel@linuxtogo.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/mipsbook-devel

_______________________________________________
Mipsbook-devel mailing list
Mipsbook-devel@linuxtogo.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/mipsbook-devel

Reply via email to