Red de conocimiento informático - Material del sitio web - Cómo crear y utilizar el sistema de archivos Jffs2

Cómo crear y utilizar el sistema de archivos Jffs2

Aplicación integrada: Cómo crear y usar el sistema de archivos Jffs2 (zhuan) Este artículo presenta principalmente cómo crear y usar el sistema de archivos jffs2 en la placa AT91SAM9261EK, usando el kernel linux-2.6.21.

Primero configure MTD

$ make menuconfig

Ingrese a los dispositivos de tecnología de memoria (MTD) --->

<*>Tecnología de memoria Soporte de dispositivo (MTD)

[*] Depuración

[*] Soporte de partición MTD

[*] Análisis de tabla de particiones de línea de comando

[*] Acceso directo del dispositivo de caracteres a dispositivos MTD

[*] Acceso del dispositivo de bloqueo de caché a dispositivos MTD

Controladores de chip RAM/ROM/Flash ----->

<*> Detección de chips flash no compatibles con AMD/JEDEC

<*> Compatibilidad con chips flash AMD/Fujitsu

Asignación de controladores para acceso al chip -- ->

[*] Admite asignaciones no lineales de chips flash

Controladores de dispositivos MTD autónomos --->

[*] Compatibilidad con AT45 ... DataFlash

Controladores de dispositivos flash NAND ---->

[*] Compatibilidad con dispositivos NAND

[*] Compatibilidad con NAND Flash /SmartMedia en AT91

Sistemas de archivos ---->

<*> Segundo soporte fs extendido

[*] Soporte de notificación de cambio de archivo Inotify

[*] Soporte de Inotify para espacio de usuario

<*> Sistema de archivos en soporte de espacio de usuario

Sistemas de archivos varios

<*> Journalling Flash File System v2 (JFFS2) soporte

[*] Soporte de almacenamiento en búfer de escritura JFFS2

<*> Co

Compatibilidad con el sistema de archivos ROM comprimido (cramfs)

No seleccione nada que no esté incluido en la configuración anterior; su configuración es solo como referencia, puede configurarla según sus propias necesidades.

$ make all

En segundo lugar, cree la herramienta mtd-util

Descargue zlib-1.2.3.tar.gz de Internet y descomprima $ cd zlib- 1.2.3

$ ./configure –prefix=/usr/local/arm/3.4.1/arm-linux --shared

Modifique el Makefile de la siguiente manera:

CC=arm-linux-gcc

LDSHARED=arm-linux-ld -shared

$ hacer todo

$ hacer instalación

Nota: Esto se instala en el directorio /usr/local/arm/3.4.1/arm-linux

Dado que el archivo zlib.h es necesario al realizar una compilación cruzada de la herramienta mtd, el El archivo de biblioteca zlib debe instalarse antes de la compilación.

Descarga mtd-snapshot-20050519.tar.bz2 de Internet y descomprime $ cd mtd/util

Modifica el Makefile en este directorio:

CROSS= arm -linux-

$ make all

Luego coloque las herramientas flash_erase, flash_eraseall, mkfs.jffs2 generadas en este directorio en el sistema de archivos ramdisk (las puse en el directorio /bin aquí), además, asegúrese de que haya dispositivos mtd0~mtd9, mtdblock0~mtdblock9 en el directorio dev del sistema de archivos ramdisk. De lo contrario, consulte la producción del sistema de archivos ramdisk o cópielo del mismo directorio en el. PC y agregue atributos de archivo.

Además, debe copiar los archivos libz.so, libz.so.1, libz.so.1.2.3 en el directorio /arm-linux/lib al directorio /lib del disco ram. sistema de archivos; de lo contrario, no se puede utilizar la herramienta mkfs.jffs2.

Finalmente, descargue los archivos uImage y ramdisk recién generados en la placa, inicie el sistema y use el comando cat /proc/mtd para ver

dev: size erasesize name

dev: size erasesize name

p>

mtd0: 00040000 00020000 "Partición 1"

mtd1: 0ffc0000 00020000 "Partición 2"

mtd2: 00420000 00000210 "spi0.0-AT45DB321x"

Aquí mtd0, mtd1 son particiones en nandflash; mtd2 es la partición en dataflsh. Esta partición contiene u-boot, uImage.img, ramdisk.img, por lo que aquí podemos usar dos particiones en nandflash vacío.

Antes de usarlo, primero debe usar la herramienta flash_erase o flash_eraseall para borrar nandflash. Los pasos específicos son los siguientes:

# flash_erase /dev/mtd1

Crear imagen jffs2

.

# cd /var/tmp

# mkdir jffs2 (el directorio bajo jffs2 se puede crear arbitrariamente)

# mkfs.jffs2 –d jffs2/ -o jffs2.img

# cp /var/tmp/jffs2/jffs2.img /dev/mtdblock1

Finalmente # mount -t jffs2 /dev/mtdblock1 /mnt/mtd. $ umount /mnt/ mtd Uninstall.

Si solo usa dataflash o nandflash como jffs2 normal, no necesita crear una imagen jffs2. Solo necesita el último paso, # mount -t jffs2 /. dev/mtdblock1 /mnt/mtd.

AT91sam9263EK usa el sistema de archivos raíz JFFS2

Después de configurar exitosamente el sistema de archivos raíz NFS en AT91sam9263EK, luego quise trasplantar JFFS2 a AT91sam9263EK. Simplemente hazlo.

1. Jaja, en realidad es muy simple. El kernel Linux-2.6.20 que uso ya tiene soporte para el sistema de archivos jffs2, solo seleccione jffs2

Sistemas de archivos --->

Sistemas de archivos varios - - ->

<*> Compatibilidad con Journalling Flash File System v2 (JFFS2)

(0) Detalle de depuración de JFFS2 (0 = silencioso, 2 = ruidoso)

[*] Compatibilidad con buffer de escritura JFFS2

[*] Compatibilidad con resumen JFFS2 (EXPERIMENTAL)

[*] Compatibilidad con JFFS2 XATTR (EXPERIMENTAL)

[* ] Listas de control de acceso JFFS2 POSIX

[*] Etiquetas de seguridad JFFS2

[*] Opciones de compresión avanzadas para JFFS2

[*] Compatibilidad con compresión JFFS2 ZLIB

[*] Compatibilidad con compresión JFFS2 RTIME

[ ] Compatibilidad con compresión JFFS2 RUBIN

Modo de compresión predeterminado JFFS2 (prioridad)

Seleccione compatibilidad con MTD

p>

Controladores de dispositivos --->

Dispositivos de tecnología de memoria (MTD) --->

<*> Compatibilidad con dispositivos de tecnología de memoria (MTD)

[ ] Depuración

<*> Soporte de concatenación MTD

[*] Soporte de partición MTD

< > Análisis de tabla de particiones RedBoot

[*] Análisis de la tabla de particiones de la línea de comandos

<*> Análisis de particiones de ARM Firmware Suite

--- Módulos de usuario y capas de traducción

<* > Directo acceso de dispositivo char a dispositivos MTD

<*> Acceso de dispositivo de bloqueo de caché a dispositivos MTD

<*> Compatibilidad con FTL (capa de traducción Flash)

< *> Compatibilidad con NFTL (NAND Flash Translation Layer)

[ ] Compatibilidad con escritura para NFTL

2. Descargue mtd-utils-1.0.0.tar.gz desde ttp://www.linux-mtd.infradead.org/

a la máquina host.

Descomprima

tar xvzf mtd-utils-1.0.0.tar.gz

Ingrese al directorio mtd-utils-1.0.0 para modificar el Makefile para compilación.

Compile mkfs.jffs2, nandwrite y otras herramientas

3. Cree un sistema de archivos raíz jffs2:

En primer lugar, debe haber otro tipo de sistema de archivos raíz. Para saber cómo crearlo y obtenerlo, consulte <>

Por ejemplo:

mount -t cramfs rootfs_lnxdemo.cramfs tmp/ -o loop

rootfs_lnxdemo.cramfs lo proporciona atmel. Por supuesto, puedes crearlo tú mismo. Utilice atmel directamente aquí para evitar problemas de producción.

tar czvf target.tar.gz tmp/

Generar imagen del sistema de archivos raíz jffs2:

mkfs.jffs2 –l –s 0x400 –e 0x20000 –d tmp/ -o target.jffs2

4. Grabe la imagen del sistema de archivos raíz jffs2 en nand flash.

Debería haber muchos métodos de programación, hay 2 de uso común (jaja, eso creo):

Programar el archivo de imagen en el chip flash nand a través de la nand. programador y luego soldarlo Vaya a pcb.

b. Monte el sistema de archivos nfs y use la herramienta nandwrite para escribir el archivo de imagen

en el dispositivo mtd.

El primer método es adecuado para la producción y el segundo método es más adecuado para nuestras pruebas.

Montar el sistema de archivos nfs:

nandwrite –o /dev/mtd1 target.jffs2

O bajo el sistema de archivos raíz nfs:

montar –t jffs2 /dev/mtdblock1 /mnt

cd /mnt

tar xvzf ../target.tar.gz

umount /mnt

5. Configure los parámetros de inicio del kernel de la siguiente manera:

setenv bootargs mem=64M console=ttyS0 115200 root=/dev/mtdblock1 rootfstype=jffs2 rw

6. Reinicie, el kernel utiliza el sistema de archivos jffs2 para montar automáticamente el sistema de archivos raíz en el dispositivo mtdblock1.

Lo pruebo

vi test

Hola, esto es para probar el sistema de archivos jffs2.

Guardar y salir.

Sincronizar

Reiniciar

vi prueba

El contenido sigue siendo el mismo.

Ok, el sistema de archivos raíz jffs2 se inició correctamente.

Colección Linux Alliance, indique el enlace original al volver a publicar