Cómo escribir un controlador flash Nand para Linux
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 p>
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> 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.