Dos MTD estructura del modelo de controlador de dispositivo y análisis de la estructura de datos de Linux MTD columna de descripción de subsistema

      En este artículo se explican principalmente, comenzamos con la arquitectura y la correspondiente estructura de datos del dispositivo mtd modelo de controlador de una estructura de datos que pueden comprender mejor la arquitectura del modelo de controlador de dispositivo mtd, para que podamos entender mejor módulo de controlador de dispositivo MTD.

 

En este capítulo se muestran las siguientes partes:

A, dispositivo mtd modelo de controlador de descripción de la arquitectura

 

Dos, de controlador de dispositivo mtd estructuras de datos asociadas descrito

 

 

A, dispositivo mtd modelo de controlador de descripción de la arquitectura

       A fin de facilitar nuestro modelo de controlador de dispositivo mtd comprensión, en los que primero explicamos dispositivo mtd modelo de arquitectura de controlador (es decir, el enlace entre el modelo de controlador de dispositivo mtd con módulos externos, incluyendo una asociación entre las interfaces, estructuras de datos), en nuestra unidad a equipos mtd modelo de base de la arquitectura tiene un conocimiento perceptivo, que volvieron a analizar las estructuras de datos relacionados modelo de controlador de dispositivo MTD.

 

     Nos MTD conducción modelo abstracto de la capa superior e inferior de la abstracción, se describen en detalle uno por uno, de la siguiente arquitectura modelo de controlador de dispositivo mtd para los fines de modelo de controlador de dispositivo mtd, incluye dos partes asociadas interfaces de capa de abstracción, estructuras de datos. Respectivamente, se describirá a continuación.

 

Interfaz de capa de abstracción

  1. Una interfaz para la capa de abstracción, la capa superior que incluye mtd_read, mtd_write, get_mtd_device, las interfaces mtd_erase. Estas interfaces son una abstracción de la capa superior, principalmente para dispositivos de caracteres mtd, los dispositivos de bloque MTD y del sistema de archivos flash correspondiente llamadas;
  2. Tipo de Mtd para hacer la abstracción, con el fin de ser compatible Flash NOR, una unidad flash nandflash, etc., también hecho mtd correspondiente resumen, estas interfaces se definen struct mtd_info estructura del cuerpo principal, incluyendo _erase, _read, _write, _block_isbad , otras interfaces _block_markbad; estas interfaces por un tipo particular de memoria flash asociado de accionamiento para alcanzar, tal como para la conducción nandflash, estas interfaces es el nand_erase, nand_read, nand_write, nand_block_isbad, nand_block_markbad; y para ni flash (estándar Norflash CFI), la interfaz cfi_amdstd_erase_varsize, cfi_amdstd_write_words, cfi_amdstd_read, cfi_amdstd_sync, cfi_amdstd_suspend, cfi_amdstd_resume y así sucesivamente.

estructura de datos asociada

Mtd para la capa de controlador de dispositivo, principalmente mtd_partition struct relacionada, mtd_part struct, struct mtd_info varias de las principales estructuras de datos.

  1. struct mtd_partition definición de partición de chips de memoria flash, árbol de dispositivos para el núcleo no soporta, la definición general de la estructura se define en la variable del tipo de platos desarrollo archivo de placa correspondiente para explicar la partición del presente chips, el apoyo a kernel árbol de dispositivos, información de la partición generalmente definida en el árbol de archivo de dispositivo, y luego analizar el archivo de definición de partición correspondiente conducción de chip;
  2. mtd_part struct, información de partición utilizado principalmente por el modelo interno controlador de dispositivo mtd, el cuerpo estructural incluye la subregión correspondiente a una variable de tipo mtd_info struct y un puntero que apunta a mtd_info maestro. Todas las variables del sistema struct mtd_part registrados están vinculados a los mtd_partitions lista. interfaz de usuario General de chips de memoria flash (por ejemplo mtd_info -> _ borrado / _read / _write, etc.), están definidos en el mtd_info maestro. En la interfaz de mtd_erase, mtd_read, mtd_write similares de la capa superior, de acuerdo con el tipo de transmisión struct mtd_info mtd_part struct variables obtenido las correspondientes variables de tipo, para invocar a los correspondientes maestro mtd_info _erase, _read, interfaces _write.
  3. mtd_info struct, la estructura es una estructura principal del dispositivo mtd modelo de controlador de datos, la estructura de datos por la asociación del acabado con el mtd capa de interfaz; asociado con la realización del tipo particular de controlador de chip de memoria flash (por ejemplo, controlador para el controlador flash NAND , a través de mtd_info-> priv = nand_chip, asociado con la finalización de controlador de la controladora nandflash; para ni flash, por el mismo mtd_info-> priv = map_info completar la asociación, y para otros tipos de patatas fritas, el mismo es por mtd_info-> priv de asociación), a través de un puntero de función en la estructura _erase, _read, _write similares, para el controlador de dispositivo subyacente para completar la interfaz de operación abstracta, el modelo abstracto para completar el establecimiento de las interfaces de controlador de dispositivo subyacentes.

 

 

Dos, de controlador de dispositivo mtd estructuras de datos asociadas descrito

mtd_partition struct

      Se ha dicho anteriormente, la estructura se utiliza principalmente para definir el tamaño de la estructura de partición, la posición de desplazamiento, si la función de sólo lectura, definido como sigue. Recuerde que define la estructura de datos de la variable de tipo general a nivel del consejo o mediante el uso de una partición mtd_info registro de archivos en los archivos de los controladores de dispositivos flash. Perteneciente estructura externa mtd datos del modelo de controlador de dispositivo.

 

 

struct mtd_part

该结构体用于mtd设备驱动模型内部进行mtd设备分区所用,该数据结构类型变量不对外部开放。系统中所有已注册的mtd分区设备,均链接至全局链表mtd_partitions上。

 

 

struct mtd_info

 

该数据结构为mtd设备驱动模型的关键,其定义的变量也比较多,下面我们从几个方面进行说明,并联合其他数据结构,说明其中的关联;

  1. 定义mtd设备类型、总大小、写单位、擦除单位、index等等信息;
  2. 抽象的闪存芯片的操作接口(读写擦除等接口)
  3. 提供priv指针,指向该mtd设备的私有信息,若mtd设备需要特殊的处理相关的变量,则可以将该priv指向对应的内存,如针对nandflash controller驱动而言,则通过该priv指针实现nand_chip与mtd_info的关联;
  4. 定义struct device类型的变量,将该mtd_info设备与linux设备驱动模型关联,该结构体实现如下几个功能:
    1. 可通过该变量实现mtd设备与mtd class的关联;
    2. 当调用device_register等接口将该变量注册至linux设备驱动模型中时,则通过netlink向应用层发送device add的uevent,而应用层的udev/mdev则在接收到该事件后,则进行该mtd_info设备对应的mtd字符设备与块设备文件的创建(通过mknod,而mtd设备字符设备与块设备相关的初始化接口已在系统初始化时完成主设备的注册)

 

 

 

        以上即为mtd设备驱动模型相关的说明。针对mtd设备驱动模型而言,其完成了对上层xxxfs、mtd字符设备、块设备的接口抽象;对下完成了针对闪存芯片的操作接口的抽象,并且借助struct device完成与linux设备驱动模型模块的关联,并以此完成mtd设备对应的字符设备、块设备的创建。基于此我们也知道mtd设备注册大概完成哪些功能:

 

  1. 首先进行闪存芯片驱动的初始化,完成该闪存芯片对应master mtd_info的初始化与赋值(包括芯片对应的参数、接口的赋值等);
  2. 在闪存芯片驱动的probe接口中,完成针对各分区对应的mtd_part、mtd_Info的初始化与注册操作,主要包括对mtd_info类型的变量进行赋值与初始化操作,包括write_size、erase_size、size等赋值、对闪存芯片操作接口的赋值(_read、_write、_erase等接口);
  3. 并完成mtd_info对应的strcut device类型变量的注册,并借助注册完成mtd_info对应字符设备、块设备文件节点的创建;
  4. 将该mtd_info对应的分区变量注册到链表mtd_partitions中。

 

 

      以上即为本次内容的主要内容,主要说明mtd设备驱动模型对应的架构抽象以及数据结构的说明。同时说明了mtd设备的注册流程。下一章主要介绍mtd设备驱动模型中上下层接口间的关联。

发布了145 篇原创文章 · 获赞 30 · 访问量 46万+

Supongo que te gusta

Origin blog.csdn.net/lickylin/article/details/104718561
Recomendado
Clasificación