[] Dieciocho Embedded desarrollo de controladores Linux, kernel de Linux viene con la exploración del conductor del LED

  Su vida sólo dura como electro-óptico, engañando personas heridas.
  Siempre que se enseña Zhiwei, un día cuando todo el mundo solo par.
  Las dificultades y esfuerzo en el redil, se mueven hacia el frente.
  Utilice bueno cada ranura minutos, antes de producto de arroz de grano en contenedores.


A, núcleo de Linux que lleva la unidad LED permiten

  fuente Linux kernel en el directorio raíz, el patrón de entrada maquillaje interfaz de configuración abierta menuconfig, el LED de conducción elemento de configuración abierta ruta siguiente: Device Drivers -> LED Support (NEW_LEDS [=y]) -> LED Support for GPIO connected LEDsDespués de la configuración, como se muestra a continuación:

Aquí Insertar imagen Descripción

  Linux puede elegir la forma de compilar el controlador de la lámpara LED de acuerdo con el valor de CONFIG_LEDS_GPIO, si 'y' que será compilado en el kernel de Linux. kernel de Linux configurado después de salir de la interfaz de configuración, abra el archivo .config, encontrará "CONFIG_LEDS_GPIO = y" esta línea, como se muestra:

Aquí Insertar imagen Descripción

  Recompilar el kernel de Linux, y luego usar el espejo zImage recién compilado el arranque de la placa de desarrollo. [Método alternativo, no aquí en la repetición]

Dos, el núcleo de Linux viene con análisis de conductor del LED

  archivo de controlador de la lámpara LED para los /drivers/leds/leds-gpio.carchivos, abra el archivo que aparece a continuación

......
static const struct of_device_id of_gpio_leds_match[] = {
	{ .compatible = "gpio-leds", },
	{},
};
......
static struct platform_driver gpio_led_driver = {
	.probe		= gpio_led_probe,
	.shutdown	= gpio_led_shutdown,
	.driver		= {
		.name	= "leds-gpio",
		.of_match_table = of_gpio_leds_match,
	},
};

  De acuerdo con el código anterior, el controlador de LED puede ver la tabla de coincidencias, contenidos compatibles "GPIO-leds", para que el dispositivo de la lámpara LED valores de atributo compatibles de nodos en el árbol de dispositivos es también "GPIO-leds".

  Además, la función principal gpio_led_probe conductor es una función de adquisición de información del dispositivo de la lámpara de LED y, a continuación, para inicializar el IO correspondiente en base a la información, a la salida. Por lo tanto, se proporciona el árbol de dispositivos sin re-multiplexación y propiedades eléctricas, es decir, ningún conjunto pinctrl más tiempo.

, El nodo de árbol de dispositivos tercer escritura

  El documento Documentation/devicetree/bindings/leds/leds-gpio.txtexplica en detalle cómo conducir Linux viene con el nodo de árbol de dispositivos correspondientes de la escritura, cuando escribimos nodo de dispositivo señalar lo siguiente:

  • ①, crear un nodo representa un dispositivo de lámpara de LED, tales dtsleds, si hay una pluralidad de lámparas LED se ilumina cada LED en la placa como un nodo hijo de dtsleds.
  • ②, valores de atributos compatibles dtsleds nodo debe ser como "GPIO-leds".
  • ③, establecer la propiedad etiqueta, esta propiedad es opcional, cada nodo hijo tiene un atributo de etiqueta etiqueta de propiedad indica el nombre de la lámpara LED general, como palabra código de color es de color rojo, verde y similares.
  • ④, cada nodo hijo debe establecer los GPIO valor de la propiedad, este LED indica los pines GPIO utilizan!
  • ⑤, se puede establecer "Linux, por defecto-trigger" valor de la propiedad, que es la configuración por defecto la función de luz LED, puede revisar Documentation/devicetree/bindings/leds/common.txtel documento para ver opciones, tales como:
    • retroiluminación: lámpara como una luz de fondo LED.
    • default-on: LED de luz
    • latido del corazón: Lámpara de LED como indicador de latido del corazón, el sistema puede funcionar como una lámpara de aviso.
    • ide-disco: Lámpara de LED como indicador de la actividad del disco duro.
    • temporizador: Lámpara LED parpadea periódicamente, impulsado por un contador de tiempo, frecuencia de parpadeo puede ser modificado
  • ⑥, puede fijar el valor del atributo "-estado por defecto", que se puede configurar para encendido, apagado, o mantener, es de forma predeterminada cuando la lámpara LED, la lámpara de LED está apagado, entonces desactivado de forma predeterminada, para mantener sosteniendo el modo actual, entonces la lámpara LED.

código de ejemplo para el nodo de dispositivo

dtsleds {
	compatible = "gpio-leds";
	
	led0 {
		label = "red";
		gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
		default-state = "off";
	};
};

En cuarto lugar, ejecute el programa

  Comenzar con la nueva placa de desarrollo y zImage árbol de archivos dispositivo después / inicio Compruebe sys/bus/platform/devices/dtsledsque el directorio existe, pero también puede mirar debajo de los LED de directorio ls, como se muestra:

Aquí Insertar imagen Descripción

  En leds tienen un directorio llamado "rojo" subdirectorio, el nombre del subdirectorio es los valores de los atributos de etiqueta que nos fijamos en el árbol de dispositivos! A continuación, introduzca el LED parpadeante de comandos de prueba:

echo 1 > /sys/class/leds/red/brightness //打开 LED0
echo 0 > /sys/class/leds/red/brightness //关闭 LED0

  Si se puede encender y apagar las luces LED normal, entonces eso significa que los drivers para Linux kernel que viene con luces LED funcionan correctamente. Generalmente usamos un LED como un indicador del sistema , el sistema está en funcionamiento normal, entonces el indicador LED estará parpadeando. Método de ajuste, mediante la adición de "Linux, default-trigger" a la información de atributo, el valor del atributo de "latido" en este dispositivo de nodo dtsleds, el contenido de nodo dtsleds modificado después de la finalización de la siguiente:

dtsleds {
	compatible = "gpio-leds";
	
	led0 {
		label = "red";
		gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
		linux,default-trigger = "heartbeat";
		default-state = "on";
	};
};

Una vez más vuelve a compilar árbol de dispositivos de sustitución, estribo, se puede ver el LED parpadea!

Publicados 722 artículos originales · ganado elogios 1207 · Vistas de 860.000 +

Supongo que te gusta

Origin blog.csdn.net/ReCclay/article/details/105376106
Recomendado
Clasificación