Red de conocimiento informático - Conocimiento informático - Cómo configurar el kernel uClinux2.6 para admitir el sistema de archivos en formato jffs2

Cómo configurar el kernel uClinux2.6 para admitir el sistema de archivos en formato jffs2

Actualmente, existen muchos sistemas de archivos para memoria flash y el más utilizado es el sistema de archivos JFFS2. Se puede decir que el sistema de archivos JFFS2 basado en memoria flash NOR es relativamente maduro, y también se ha lanzado JFFS2 que admite memoria flash NAND. El código fuente se puede encontrar en http://www.linux-mtd.infradead.org. Sin embargo, durante mis pruebas, el sistema de archivos JFFS2 montado en la memoria flash NAND era muy inestable y con frecuencia producía errores CRC. Especialmente para las operaciones de escritura, se producirán errores de CRC con cada reinicio, por lo que se puede decir que el sistema de archivos JFFS2 que admite memoria flash NAND aún no está maduro. El sistema de archivos YAFFS está dirigido específicamente a la memoria flash NAND y su código fuente se puede encontrar en

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

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.