[] Eighteen développement de pilotes Linux embarqué, le noyau Linux est livré avec l'exploration du pilote de LED

  Votre vie ne dure que l' électro-optique, les gens de blessés tromper les .
  Chaque fois que SUCCES Wei est, tout le monde en un seul jour où une paire.
  Et les efforts dans Hardships au bercail, aller de l' avant vers l'avant.
  Minutes I avec une bonne fente avant que le produit du grain de riz dans des bacs.


A, le noyau Linux portant lecteur LED permettent

  La source de Linux dans le répertoire racine, le motif d'entrée make menuconfig interface de configuration ouverte, la LED d' entraînement élément de configuration ouverte suivant chemin: Device Drivers -> LED Support (NEW_LEDS [=y]) -> LED Support for GPIO connected LEDsAprès la configuration, comme indiqué ci - dessous:

Insérer ici l'image Description

  Linux peut choisir comment compiler le pilote de la lampe LED en fonction de la valeur de CONFIG_LEDS_GPIO, si « y » qui sera compilé dans le noyau Linux. noyau Linux configuré après avoir quitté l'interface de configuration, ouvrez le fichier .config, vous trouverez « CONFIG_LEDS_GPIO = y » cette ligne, comme le montre:

Insérer ici l'image Description

  Recompiler le noyau Linux, puis utilisez le miroir zImage nouvellement compilé le démarrage de la carte de développement. [Méthode alternative, pas ici dans la répétition]

Deux, le noyau Linux est livré avec l'analyse de pilote LED

  fichier pilote de la lampe LED pour les /drivers/leds/leds-gpio.cfichiers, ouvrez le fichier que vous voyez ci - dessous

......
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,
	},
};

  Selon le code ci-dessus, le pilote de LED peut voir la table de correspondance, le contenu compatible « GPIO-voyants », de sorte que les valeurs d'attributs de l'appareil de la lampe LED compatible de noeuds dans l'arborescence des périphériques est également « GPIO-voyants ».

  En outre, le conducteur gpio_led_probe principale fonction est une fonction d'acquisition d'informations de dispositif de la lampe à LED, puis pour initialiser le IO correspondant sur la base de l'information, à la sortie. Par conséquent, l'arbre de dispositif sans propriétés de re-multiplexage et électrique est prévu, à savoir aucun ensemble plus pinctrl.

En troisième lieu, le dispositif d'écriture nœud de l'arbre

  Document Documentation/devicetree/bindings/leds/leds-gpio.txtexplique en détail comment conduire Linux est livré avec le nœud d'arborescence des périphériques correspondant de l'écriture, lorsque nous écrivons noeud de périphérique à noter ce qui suit:

  • ①, créer un noeud représente un dispositif de lampe à DEL, telles dtsleds, s'il existe une pluralité de lampes à LED, il allume chaque carte de LED comme un noeud enfant de dtsleds.
  • ②, le nœud de valeurs d'attributs compatibles doit être aussi « GPIO-voyants ».
  • ③, définissez la propriété label, cette propriété est facultative, chaque nœud enfant a un attribut label de propriété label indique le nom de la lampe à LED générale, comme mot codé couleur est rouge, vert et autres.
  • ④, chaque nœud enfant doit définir les GPIO valeur de la propriété, cette LED indique les broches GPIO utilisées!
  • ⑤, vous pouvez définir « linux, par défaut trigger » valeur de la propriété, qui est le paramètre par défaut la fonction LED, vous pouvez consulter Documentation/devicetree/bindings/leds/common.txtle document pour voir des options telles que:
    • rétro-éclairage: lampe LED comme un rétro-éclairage.
    • default-le: sur la lumière LED
    • rythme cardiaque: voyants LED comme un battement de coeur, le système peut fonctionner comme une lampe d'avertissement.
    • ide-disque: lampe à LED en tant qu'indicateur de l'activité du disque dur.
    • Retardateur: Lampe LED clignote périodiquement, entraîné par une minuterie, la fréquence de clignotement peut être modifié
  • ⑥, peut définir la valeur d'attribut « default-état », il peut être réglé sur, au large ou à garder, est activée par défaut lorsque la lampe LED, la lampe LED est éteinte, puis désactivée par défaut, pour maintenir en maintenant le mode en cours, puis la lampe LED.

Exemple de code pour le noeud de dispositif

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

IV exécuter le programme

  Démarrez le développement du nouveau conseil d' administration et l' arborescence des fichiers de l' appareil zImage après le démarrage Vérifiez / sys/bus/platform/devices/dtsledsle répertoire existe, ls peuvent également regarder sous les LED du répertoire, comme indiqué:

Insérer ici l'image Description

  Dans un répertoire LED ont appelé sous-répertoire « rouge », le nom sous-répertoire est les valeurs d'attribut d'étiquette que nous avons mis dans l'arbre de l'appareil! Ensuite, entrez la LED de test de commande clignote:

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

  Si vous pouvez allumer et éteindre les lumières LED normales, alors cela signifie que nous le pilote de Linux qui vient avec des lumières LED fonctionnent correctement. Nous utilisons généralement une LED comme indicateur du système , le système est en cours d' exécution normal, l'indicateur LED clignote. Méthode de réglage, en ajoutant « Linux, par défaut à déclenchement » pour l'information d'attribut, la valeur d'attribut « battement de coeur » dans ce dispositif de noeud de dtsleds, le contenu du noeud dtsleds modifié après l' achèvement de ce qui suit:

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

Encore une fois recompilé arbre appareil de remplacement, marchepieds, peut voir le voyant clignote!

Publié 722 articles originaux · louange won 1207 · Vues 860000 +

Je suppose que tu aimes

Origine blog.csdn.net/ReCclay/article/details/105376106
conseillé
Classement