2017-09-25 5 views
0

J'ai une carte Intel Galileo avec LED connectée à l'une des broches GPIO. Lorsque je branche l'alimentation à Galileo, la LED s'allume pendant une seconde puis s'éteint de nouveau. Une fois l'application démarrée, je suis capable de manipuler les LED. Mais maintenant je veux que ma LED s'allume pendant tout le processus de démarrage et une fois que mon application démarre, elle devrait alors manipuler la LED. Je suppose que pour y parvenir, je dois changer le code du noyau et le reconstruire complètement.Réglage de l'état du GPIO pendant le processus de démarrage

S'il vous plaît laissez-moi si quelqu'un a déjà essayé ça. Merci d'avance

+0

Il y a un projet * méta-acpi * sur Github où vous pouvez trouver des exemples de manipulation des lignes GPIO via ACPI. Notez que l'un des moyens mentionnés ne résoudra pas complètement votre problème, sinon vous devrez écrire et exécuter une application UEFI, ou pirater un chargeur de démarrage (dans UEFI, btw Linux peut également être chargé en tant qu'application UEFI) – 0andriy

Répondre

1

Si possible, vous pouvez définir l'état par défaut du GPIO haut/bas dans le chargeur d'amorçage. Ou Reportez-vous aux modifications suivantes dans le noyau Linux et l'arborescence des périphériques.

: arc/xxx/boot/dts/xxxx.dts

[email protected] { 
label = "evmsk:green:heartbeat"; 
gpios = <&gpio1 7 0>; 
linux,default-trigger = "heartbeat"; 
default-state = "off"; 
}; 

: drivers/LED/LED-gpio.c

state = of_get_property(child, "default-state", NULL); 
if (state) { 
if (!strcmp(state, "keep")) 
led.default_state = LEDS_GPIO_DEFSTATE_KEEP; 
else if (!strcmp(state, "on")) 
led.default_state = LEDS_GPIO_DEFSTATE_ON; 
else 
led.default_state = LEDS_GPIO_DEFSTATE_OFF; 
} 

ret = gpio_direction_output(led_dat->gpio, led_dat->active_low^state); 
+0

Merci pour votre réponse. Je suppose que Intel galileo utilise l'architecture x86. Mais quand je suis allé au chemin: arch/xxx/boot/dts/pour l'architecture x86, il n'y a pas de fichier avec l'extension .dts. J'ai donc besoin de changer seulement leds-gpio.c. – cgoma