Red de conocimiento informático - Conocimiento del nombre de dominio - Código fuente asincrónico de quince

Código fuente asincrónico de quince

El archivo SPI/SPI.h> contiene la documentación del kernel. Como código fuente principal, lea los capítulos relevantes de la documentación de la API del kernel en detalle. Este artículo ofrece una descripción general y una imagen detallada.

La solicitud SPI ingresa a la cola de E/S. Las solicitudes para un dispositivo SPI determinado se emiten en orden FIFO y las notificaciones asincrónicas se emiten a través del mecanismo de finalización. Igual que la sincronización simple: escribe primero, lee después.

Dos tipos de controladores SPI:

El controlador del controlador... es un conjunto de controladores SOC que desempeñan el doble papel de maestro y esclavo. Los controladores de clase se comunican directamente con los registros de la capa de hardware, incluso utilizando DMA. O juegan bitbanger y solo necesitan pines GPIO.

Río original... El controlador envía un mensaje desde el esclavo o el maestro de otro enlace SPI del controlador. El controlador del controlador de protocolo lee datos, apila códigos 0,1 y analiza datos de protocolo significativos;

En el controlador de protocolo, quiero escribir la capa central spi del sistema spi del kernel de spilinux, similar al dispositivo de control principal USBcore parte, y también hay una capa de dispositivo spi. El núcleo anterior nos ayuda a escribirlo para que el dispositivo spi pueda funcionar, y los controladores de protocolo se escriben con la ayuda del controlador spicontroller.

La estructura Struct spi_device encapsula la interfaz del lado del host entre los dos tipos de controladores.

El núcleo de la interfaz de programación SPI proporciona principalmente código de inicialización a nivel de placa para la tabla de dispositivos y le conecta el protocolo del controlador. Modelo de controlador con la ayuda del sistema de archivos sysfs. Vista SPI:

1 /sys/devices/.../CTLR...El nodo físico del controlador SPI dado

2

3 /sys /dispositivos/.../CTLR/spiB. C...spi_device en el bus "B",

4 chip selecciona C, se accede a través de CTLR.

Cinco

6 /sys/bus/spi/devices/spiB. C...Enlace Simbólico Físico

Siete.../CTLR/spiB. cDispositivos

ocho

9/System/Devices/.../CTLR/spiB. C/modalias... identificando el controlador

Este dispositivo debe usar 10 (para hotplug/coldplug)

11

12/system /bus/spi/drivers /D... Uno o más controladores spi*. *Device

13

14/sys/class/SPI_master/spiB... enlace simbólico (o nodo de dispositivo real) a

15 un nodo lógico, Se pueden guardar

16 controladores del bus de gestión "B". Todo spiB. *Los dispositivos comparten un

17 segmentos de bus SPI físicos con SCLK, MOSI y MISO.

Cabe señalar que la ubicación real del estado de la clase del controlador depende de si activa el indicador CONFIG_SYSFS_DEPRECATED. Solo el número de bus de estado de clase específico (la "B" en "spiB"), todas las entradas /sys/class solo identifican la bandera del bus.