Red de conocimiento informático - Conocimiento informático - Cómo escribir un controlador flash Nand para Linux

Cómo escribir un controlador flash Nand para Linux

1. Comprenda los parámetros de hardware y los principios de funcionamiento de la memoria flash nand

Para obtener más detalles, consulte la hoja de datos de la memoria flash nand, que incluye principalmente el proveedor y el modelo de la memoria flash nand.

El tamaño de página, el tamaño de ob, el tamaño de bloque y el ancho de bits de la memoria flash Nand son de 8 bits o 16 bits.

El principio de funcionamiento se ha explicado anteriormente. Si no está seguro, puede consultar la hoja de datos. Si lee más, comprenderá muchas cosas.

2. Escriba nand de acuerdo con las especificaciones de escritura del controlador de Linux.

Controlador Flash.

Puede consultar otros controladores existentes, como los que ya están en el código fuente del kernel. code

drivers/mtd/nand/s3c2410.c

es un buen ejemplo.

Puedes usar esto como plantilla para implementar un controlador nand flash para tu propia placa.

De hecho, el trabajo principal es implementar

static struct platform_driver s3c2410_nand_driver =

{

.probe =

s3c2410_nand_probe,

.remove =

s3c2410_nand_remove,

.suspend =

s3c24xx_nand_suspend,

.resume =

s3c24xx_nand_resume,

controlador = {

.name =

"s3c2410-nand",

.

.owner =

ESTE_MODULE,

},

},

};

en

Función XXX_nand_probe

Función XXX_nand_remove

Si se admite hardware ecc.

Lectura y escritura de memoria flash nand. Estas dos funciones implementan operaciones específicas en nand.

Pasos sencillos para escribir el controlador Nand Flash en Linux

Si tiene conocimientos de software y hardware, ya lo sabe, porque el marco mtd de Linux de nivel superior se ha encapsulado por completo y es muy útil para nand

La implementación de escritura de páginas flash, escritura ob y otras funciones relacionadas, el resto. Solo hace relativamente poco trabajo en las operaciones internas específicas del controlador nand

:

1 Inicialización

Primero, en la inicialización del chip nand Durante. Durante el proceso, su

XXX_nand_init_chip()

chip correspondiente debe asignarse al chip

XXX_nand_init_chip()

correspondiente.

XXX_nand_read_buf y XXX_nand_write_buf y otras funciones:

chip->cmd_ctrl =

XXX_nand_hwcontrol;

chip->dev_ready =

p>

para habilitar operaciones posteriores en chips nand.

Luego asigne las funciones de suma de verificación y corrección de errores al ecc correspondiente según el tipo de ecc:

chip->ecc.hwctl =

XXX_nand_enable_hwecc; p>

chip->ecc.calculate =

XXX_nand_write_buf;

para habilitar operaciones posteriores en el chip nand. Calculate = XXX

_ nand_calculate_ecc;

3.

Implemente las funciones correspondientes anteriores. Para saber cómo implementarlas, consulte otros controladores nand. lote.

4. Prueba del controlador. Para obtener más información, consulte las partes pertinentes de la prueba ldd3 (controlador de dispositivo Linux versión 3).

5.