Ich bin ein Semi-Linux-Neuling und habe eine Frage:
Ich muss einige GPIO-Pins auf diese Weise setzen: (Pin 18 out, Pin 17 in) (eigentlich mache ich das über WiringPi (pyton) über diese Befehle)
gpio export 18 out
gpio export 17 in
Alles funktioniert gut, wenn ich diese Befehle über das Terminal ausführe. Allerdings habe ich diese Befehle in gesetzt
/etc/rc.local
Vor exit 0
um es beim Booten auszuführen, aber nach einigen Versuchen wird es nicht funktionieren. Es könnte ein Pfadproblem sein? Jede Hilfe wird geschätzt, danke mboy.
Antworten:
Ich habe es behoben! Alles was ich brauchte ist, den vollen Pfad festzulegen. In meinem Fall,
/usr/local/bin/gpio export 18 out
weil gpio ein Befehl eines Drittanbieters ist.quelle
Eine weitere gute Idee ist es, ein eigenes Skript zu erstellen, wie:
#! /bin/bash gpio mode 18 out gpio mode 17 in exit 0
Speichern Sie es in einer Datei, z
gpio_init.sh
Führen Sie es aus
chmod a+x simple_bash.sh
, um es ausführbar zu machenKopieren nach
init.d
mit:sudo cp /path_to_script/script.sh /etc/init.d/
Zur Startsequenz hinzufügen:
sudo update-rc.d script.sh defaults
quelle
Als Ergänzung zu Andrey Volkovs Antwort hat das neue Debian-System ein festgelegtes Format für das Init-Skript. Bitte beziehen Sie sich hier
Damit habe ich ein Skript erstellt, das auf Ihrem System funktionieren soll.
Nennen Sie das folgende Skript gpio_init und chown to root.root und chmod to 755. Kopieren Sie es nach /etc/init.d/
Dieses Skript ruft ein anderes Skript unter / usr / local / bin / auf.
gpio-init (Entschuldigung für die Benennung hier ...
Ein paar Dinge hier. Zuerst verwende ich echo GPIO_PIN> / sys / class / gpio / export zum Exportieren des Pins, ähnlich zum Einrichten der IN / OUT 1/0 INTERRUPT-Flanke. Sie können es nach Ihren Wünschen anpassen.
Ich
sleep infinity
lasse es für immer laufenIch nehme alle Interrupt-Signale auf und führe eine Bereinigungsfunktion durch, bei der ich die GPIO-PINS nicht exportiert habe.
Wiederum wurde dieses Skript (aus Sicherheitsgründen) nur für root beschreibbar und unter / usr / loca / bin abgelegt
Test mit
sudo /etc/init.d/gpio_init start
undsudo /etc/init.d/gpio_init stop
Und sobald Sie fertig sind
sudo update-rc.d gpio-init defaults
, können Sie das Skript beim Start ausführenquelle