Cómo configurar el kernel uClinux2.6 para admitir el sistema de archivos en formato jffs2
http://www.aleph1.co.uk/yaffs/index.html. Durante las pruebas, el rendimiento de estabilidad fue mucho más estable que el del sistema de archivos JFFS2 y el tiempo para montar la partición fue mucho más corto que el del sistema de archivos JFFS2. Montar un sistema de archivos de 2 m utilizando JFFS2 lleva aproximadamente 1 segundo. A continuación se presentará el uso de los sistemas de archivos JFFS2 y YAFFS en uclinux.
1.JFFS2
Visite http://www.linux-mtd.infradead.org para descargar los últimos paquetes de compresión MTD y JFFS2. Este paquete también contiene parches para el kernel y algunas herramientas relacionadas con MTD. El parche principal es ilookup-2.4.23.patch, ya que el controlador MTD más reciente utiliza la función ilookup(). Después de parchear y actualizar el controlador MTD y el sistema de archivos JFFS2, es hora de escribir su propio controlador flash nand. Si no desea utilizar JFFS2 como sistema de archivos raíz, también debe modificar MTD_BLOCK_MAJOR. Puede consultar los ejemplos en el controlador, más simplemente spia.c.
El trabajo principal al escribir el controlador es definir la estructura de la partición de la memoria flash, definir la dirección de lectura/escritura de la memoria flash y escribir la función **_hwcontrol() para controlar la memoria flash. La operación específica depende de la información del chip de la memoria flash nand utilizada. El controlador es mucho más simple en comparación con el flash NOR.
Después de cambiar, configure
Dispositivos de tecnología de memoria (MTD)
CONFIG_MTD=Y
CONFIG_MTD_DEBUG=Y
CONFIG_MTD_DEBUG_VERBOSE=3<
CONFIG_MTD_PARTITIONS=Y
CONFIG_MTD_CHAR=Y
CONFIG_MTD_BLOCK=Y
En configuración NAND3.4
En Herramientas Flash
CONFIG_USER_MTDUTILS=Y
CONFIG_USER_MTDUTILS_ERASE=Y
CONFIG _USER_MTDUTILS_ERASEALL=Y
CONFIG_USER_MTDUTILS_MKFSJFFS2= Y
Finalmente viene el arduo trabajo de depuración. Después de depurar el controlador MTD, puede montar el sistema de archivos JFFS2. Ver partición flash: cat /proc/mtd, borrar partición: eraseall /dev/mtd*.
Por ejemplo, para montar la primera partición en el directorio /mnt:
Primero: eraseall /dev/mtd0
Luego: mount -t jffs2 /dev/mtdblock0 /mnt p >
2.YAFFS
YAFFS significa "otro sistema de archivos flash" y también es un sistema de archivos de código abierto. YAFFS es hasta ahora el único archivo diseñado específicamente para el sistema de memoria flash NAND, es muy portátil. y se puede descargar en Linux, uclinux y wince
http://www.aleph1.co.uk/yaffs/index.html Este paquete también contiene YAFFS. La documentación fuente del sistema de archivos YAFFS incluye devextras.h, yaffs_ecc.c, yaffs_ecc.h, yaffs_guts.h, yaffs_mtdif.h, yaffs_mtdif.c y yportenv.h.
Además, también necesita configurar las macros CONFIG_YAFFS_FS y CONFIG_YAFFS_MTD_ENABLED, que se utilizan para montar YAFFS en mtd.
Cree un directorio yaffs en el directorio fs y agregue los archivos anteriores en él y cree un nuevo archivo MAKE: <. /p>
O_TARGET := yaffs.o
obj-y := yaffs_fs.o yaffs_guts.o yaffs_mtdif.o yaffs_ ecc.o
obj-m := $ (O_TARGET)
incluye $(TOPDIR)/Rules.make
Lo siguiente que debe hacer es cambiar el directorio fs config.in y makefile, y vincular YAFFS durante la configuración. /p>
Si ha ajustado el controlador NAND MTD como antes, agregar YAFFS es fácil porque YAFFS realizará la verificación ECC por sí solo, así que elimine ECC en el controlador MTD. Simplemente cámbielo a: >eccmode = NAND_ECC_NONE.
Además, YAFFS usa mkyaffs para borrar la memoria flash, así que agregue mkyaffs.c. Vaya a mtd-utils y compílelo.
Luego estará compilado, jejeje. Habrá algunas advertencias en el medio, diciendo que puede escribir algunas variables y funciones inútiles, pero el código YAFFS no está muy bien escrito. Eso sí, no hablemos de su rendimiento. Si estás interesado, puedes probarlo.