www.mikrocontroller.net

Forum: Projekte & Code FreeBSD System runterfahren und neustarten, C.


Autor: Igor Buchmueller (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Fuer diese Geschichte braucht man folgendes:


 o Einen Mikrokontroller der an die serielle Schnittstelle ein paar
Bytes schreiben kann. Ein Umfangreiches Beispiel findet sich auf
http://www.eblux.de/index.php?link=elektronik&subl...

 o Ein BSD System. Mit Linux habe ich es nicht ausprobiert.

Der verwendete Mikrokontroller war ein AT90S8515, wer den code fuer den
Chip braucht, kann gerne an coden@int80h.de mailen.


Beschreibung:

Das beinhaltete C Programm ist im Prinzip sehr simpel. Der Chip sendet
3 verschiedene Bytes, 0, 1 und 6. Welches Byte gesendet werden kann,
kann man z.B. ueber Taster bestimmen. Die ankommenden Bytes werden von
dem Programm gelesen, je nach dem welches Byte gelesen wird sendet das
Programm dem init Prozess ein Signal zum Herunterfahren, neustarten
oder versetzt es in den single user mode. Man kann noch logins
vermeiden oder die ttys(5) neu einlesen, das habe ich aber noch nicht
implementiert. Zusaetzlich wird der Speaker des Computers einmal beim
neustarten, zweimal beim Eintritt in den Single-User mode und drei mal
beim Neustarten getaetigt. Vier mal bei einem Fehler.

Die Zahlen 0, 1 und 6 wurden gewaehlt weil es die Runlevels von FreeBSD
sind, init(8):

  Run-level    Signal     Action
     0            SIGUSR2    Halt and turn the power off
     1            SIGTERM    Go to single-user mode
     6            SIGINT     Reboot the machine
     c            SIGTSTP    Block further logins
     q            SIGHUP     Rescan the ttys(5) file

D.h. die Zahlen die der Mikrokontroller sendet koennen andere sein, sie
muessen nur im code veraendert werden (src/halt.c)
Die Runlevel c und q sind im Moment nicht implementiert.

Das Programm liest standardmaessig das Device /dev/cuaa0, falls man es
am "COM2" angeschlossen hat, so kann man das natuerlich in
"src/avr.h" unter #define DEVICE aendern.

Zweck:

Mit diesem kleinen C Programm wollten ein Freund (www.eblux.de) und ich
simpel ausprobieren wie man ein Unixsystem ueber einen Controller
steuern kann. Computer ohne Tastaturen oder Monitore koennen somit
leicht neugestartet werden ohne sich mit ssh einlogen zu muessen oder
auf Remote Dienste angewiesen zu sein.

Es befindet sich noch in der aller ersten Version, laeuft aber recht
stabil.

Deswegen bitte ich um Feedback, falls es jemals mal benutzen sollte
:-)


Viel Spass Leute.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.