2013-08-22 14 views
5

Sto usando il filesystem Debian wheezy con l'ultimo kernel di Robert Nelson. Voglio disattivare il led heartbeat usando una sovrapposizione dell'albero del dispositivo.Cambio hearbeat led su beaglebone nero con overlay albero dispositivo

Capisco che ci sono modi più semplici per farlo, ma mi interessano solo le risposte che usano gli overlay per disabilitare il led del battito cardiaco.

Un modo per raggiungere questo obiettivo è quello di cambiare le GPIO-led, foglia LED0 in AM335x-boneblack.dts da: linux, default-trigger = "battito cardiaco"; a linux, default-trigger = "none";

quindi compilare la struttura del dispositivo e riavviare.

Tuttavia, se provo a implementare la stessa cosa utilizzando il seguente overlay, il led del battito cardiaco continua a lampeggiare dopo aver applicato correttamente la sovrapposizione con echo> $ SLOT.
Cosa sto sbagliando?

/dts-v1/; 
/plugin/; 
/
{ 
    compatible = "ti,beaglebone", "ti,beaglebone-black"; 
part-number = "pru"; 
version = "00A0"; 
[email protected] 
{ 
    target = <&ocp>; 
    __overlay__ 
    { 
     gpio-leds 
     { 
      compatible = "gpio-leds"; 
      pinctrl-names = "default"; 
      pinctrl-0 = <0x3>; 
      led0 
      { 
       label = "beaglebone:green:usr0"; 
       gpios = <0x5 0x15 0x0>; 
       linux,default-trigger = "none"; 
       default-state = "off"; 
      }; 
     }; 
    }; 
}; 
}; 

risposta

0

C'è un servizio di systemd, leds.service, che sostituisce le impostazioni albero dei dispositivi per questo uno led (chissà perché).

per visualizzare lo stato del servizio, gestito

[email protected]:~# systemctl status leds.service 

che dà l'uscita

leds.service - Angstrom LED config 
      Loaded: loaded (/lib/systemd/system/leds.service; enabled) 
      Active: active (exited) since Sat 2000-01-01 18:33:24 UTC; 13 years 7 months ago 
      Process: 125 ExecStart=/usr/bin/led-config start (code=exited, status=0/SUCCESS) 
      CGroup: name=systemd:/system/leds.service 

Osservando il campo "caricato" si può vedere che lo script di servizio si trova in/lib/systemd/system/leds.service, e il campo "Process" dice che questo servizio esegue il comando "/ usr/bin/led-config start".

Guardando a questo file "/ usr/bin/led-config" vedrai che si tratta di uno script di shell che carica le impostazioni predefinite dal file "/ etc/default/led":

#file format: name trigger 
beaglebone::usr0 heartbeat 

Così , è possibile lasciare il file di albero dei dispositivi da solo e impostare i valori predefiniti qui, o disattivare questo servizio con

systemctl disable leds.service 
+0

Grazie per le informazioni. Tuttavia il demone leds.service non è in esecuzione su debian. In secondo luogo sto cercando di capire perché disabilitare il led funziona quando ricompongo la struttura del dispositivo e riavvio, ma non funziona quando uso il codice identico in un overlay dell'albero del dispositivo. – Ray

0

Per disattivare il battito cardiaco con una sovrapposizione è molto inefficiente a mio parere! Che ne dici invece di provare a digitare il comando bash: "echo none> /sys/devices/ocp.3/gpio-leds.8/beaglebone\:green\:usr0/trigger" e poi riattivarli su "echo" heartbeat "> trigger" (controlla prima il percorso del file) - testato su Debian Wheezy A5A