-
1. Problemstellung und
Zielsetzung
-
Diese
Arbeit beschreibt eine vom Verfasser als Hard- und Software konzipierte
Steuereinheit für
einen X86-PC oder Server. Die Steuereinheit soll es ermöglichen,
den Server ein- und auszuschalten, die Reset- und SMI Funktionen
auszuführen
sowie diese Funktionen zeitlich zu steuern oder fernzubedienen.
Mit einem Tastenfeld und einem LCD-Display lassen sich so Betriebsdaten
protokollieren, überwachen
und einstellen. Ergänzt
wird die Hardware durch die hierfür erstellte Software.
-
1.1 Erstinstallation von
headless-Systemen im Netzwerk
-
Server
und Appliances werden zunehmend „headless" betrieben. Das heißt, Grafikkarten und Tastaturen
sowie Monitore sind für
ihren Produktiveinsatz nicht erforderlich. Aus diesem Grund ergibt
sich jedoch eine besonders umständliche
und aufwendige Erstinstallation und Konfiguration im Netzwerk. So
kann mit Netzwerkprogrammen nicht auf den noch „unsichtbaren" Rechner zugegriffen
werden. Als klassisches Installationsproblem gilt hier zum Beispiel
die Einstellung der ersten IP-Adresse eines zu installierenden Rechners im
Netzwerk als Grundlage für
dessen weitere Konfiguration. Der Administrator behilft sich üblicherweise
mit verschiedenen „Tricks":
-
1.2 Zugriff mittels serieller
Konsole
-
Mit
Hilfe einer seriellen Verbindung und eines Terminalprogramms erhält der Administrator
lokalen Zugriff auf den zu administrierenden Server. Diese serielle
Konsole läßt sich
analog einer lokalen Konsole aus Tastatur und Monitor bedienen.
-
Der
Admin muß den
jeweiligen Appliance aufsuchen, sich mit Hilfe eines hierfür vorgesehenen
Rechners (i.d.R. ein Laptop) ankabeln und die Einstellungen vornehmen.
Er muß mit
Hilfe eines Termialprogramms auf den Server zugreifen und die Einstellungen
für die
serielle Kommunikation richtig vornehmen.
-
1.3 Einstellung mittels
DHCP-Leases
-
Ein
DHCP-Server (Dynamic Host Configuration Protocol) liefert an den
anfragenden Rechner die Netzwerkeinstellungen. In der Datei DHCP-Leases
werden die vergebenen IP-Adressen, die Namen und die MAC Adressen
der anfragenden Rechner gespeichert.
-
1.4 Werksseitig vorgegebene
Druckeinstellungen
-
Alternativ
werden Geräte
mit einer fest vorgegebenen Druckeinstellungen incl. IP-Adresse
ausgeliefert. In diesem Fall verbindet der Administrator das zu
installierende Appliance mit einem hierfür vorgesehenen Rechner (im
folgenden Desktop) über
ein Crossover-Kabel. Er verstellt die Adresse des Desktop so, daß es zum
Appliance passt. Nun werden die Einstellungen auf dem Appliance
durchgeführt.
Nach Abschluß der
Einstellungen wird der Appliance vom Desktop getrennt. Der Desktop
Rechner wird wieder in den Ausgangszustand versetzt.
-
1.5 Bewertung bisheriger
Verfahren zur Einstellung der IP-Adresse
-
Bei
Zugriff mittels serieller Konsole muss der Admin zunächst die
korrekten Einstellungen ermitteln. Diese sollten sich im Handbuch
des Servers finden. Zum Teil sind diese jedoch unklar dokumentiert
oder sind gar nicht in der Dokumentation des Servers enthalten.
Sie sind dann online zu recherchieren oder beim Hersteller in Erfahrung
zu bringen.
-
Der
hiermit verbundene Arbeitsaufwand kann erheblich sein. Durch die
erforderliche lokale Präsenz des
Administrators am Gerät
kann bei räumlichen
verteilten Systemen zusätzlicher
Arbeitszeitbedarf entstehen.
-
Da
die DHCP-Leases Datei in großen
Netzwerken mehrere hundert Einträge
enthalten kann, ist das Durchsuchen dieser Datei aufwendig. Der
Administrator muß Zugriffsrechte
auf diese Datei haben. Es muß also
entweder der Rechnername oder die MAC Adresse dem Admin vorher bekannt
sein und notiert werden.
-
In
Netzwerken mit erhöhten
Sicherheitsanforderungen wird kein DHCP Server betrieben, da die
Gefahr besteht, dass ein Angreifer über eine zum Netzwerk gehörende Netzwerkdose,
sich Zugriff auf das lokale Netz verschaffen kann. Daher kann ein
Server mit Voreinstellung auf DHCP nicht in das Netzwerk integriert werden.
Ist ein DHCP Server vorhanden, muss der Einrichter lesenden Zugriff
auf die DHCP Leases haben.
-
Die
werksseitige Voreinstellung auf feste IP Adressen eines Servers
ist nicht unproblematisch, da in sicheren Netzen diese fremden Netzwerkpakete
(IP passt nicht) von den Switches nicht immer transportiert werden
sollen. Es ist daher ein zusätzliches
Netzwerk aufzubauen. In diesem können
die Einstellungen dann vorgenommen werden.
-
Die
drei zum Stande der Praxis gehörenden
Verfahren eigenen sich sehr wohl für die erste Inbetriebnahme
von Servern bzw. zur Zuweisung einer ersten IP-Adresse, sind jedoch
in ihrer Anwendung auch hierauf beschränkt.
-
Demgegenüber kann
eine Watchdogkarte zusätzlich
zumindest einen sicheren Restart eines produktiven Servers bei Absturz
des Betriebssystems sicherstellen.
-
1.6 Watchdogkarten
-
Watchdog-Karten
können
die Sicherheit produktiver Server erheblich erhöhen. Die Grundidee eines Watchdogs
ist ein rückwärts laufender
Zähler,
der von dem laufenden Programm immer auf den Anfangswert gesetzt
wird. Stürzt
das Programm ab, läuft
der Zähler
bis auf null zurück.
Es wird ein Hardware-Reset ausgelöst. Der Rechner startet neu.
-
Watchdogkarten
werden bisher nicht durchgängig
in Serversystemen eingesetzt. Dies, obwohl die Sicherheit eines
Servers bei einem Systemabsturz durch Watchdogkarten massiv erhöht werden
kann. Der Einsatz von Watchdogkarten wird trotz ihrer Vorteile bisher
zum Beispiel dadurch beschränkt,
daß die
Watchdogkarte einen PCI Steckplatz im Server belegt. Watchdogkarten
kommunizieren normalerweise über
den PCI-Bus mit dem System. Moderne Server werden zunehmend mit
dem 1 HE Formfaktor ausgeliefert. In diesen 1 HE „Pizzaboxen" steht insgesamt
nur ein PCI-Steckplatz zur Verfügung.
Dieser wird sehr oft bereits von einem RAID Controller oder einer
Netzwerkkarte verwendet.
-
Die
Zeit bis zum Auslesen und Zurücksetzen
des Zählers,
also bis zum Reset, lässt
sich in der Regel einstellen. Bei einem PC muß beim Hochfahren zunächst z.B.
der BIOS Tests durchgeführt
und das Betriebssystem gebootet werden. Erst während des Bootvorgangs wird
ein Treiber zur Kommunikation mit der Watchdogkarte gestartet, welcher
den Start des Watchdog-Zählers
initiiert. Es vergeht also einige Zeit, bis der Watchdog im hochfahrenden
System gestartet werden kann. Stürzt
das Betriebssystem in dieser Phase ab, ist die Watchdogkarte inaktiv.
Der Server bleibt unproduktiv.
-
1.7 IPMI
-
Hersteller
wie Sun oder Dell treiben die Entwicklung ihrer Server in Richtung
großer
bzw. sicherer Netzwerke voran. Für
diese Anforderungen sind „headless" betriebene Server
ideal geeignet, wenn sie über spezielle
Interfaces verfügen,
welche eine zentrale Verwaltung und Dokumentation von Servereinstellungen erlauben.
Eine derartige Erweiterung bilden Interfaces nach der Spezifikation
IPMI (Intelligent Platform Management Interface). In dieser Spezifkation
werden die verwendeten Protokolle und technischen Anforderungen
an headless Systeme beschrieben. IPMI regelt z.B. wie BIOS-Einstellungen über eine
der seriellen Schnittstellen vorgenommen werden.
-
Ein
wichtiger Teil dieser Spezifikation betrifft die Kommunikation innerhalb
des Motherboards. Zu diesem Zweck sind neue Chips auf dem Markt
erschienen, diese erfüllen
die Anforderungen, die sich aus der Spezifikation für IPMI 1.5.
bzw. IPMI 2.0 ergeben. Aktuelle Servermainboards erreichen den Kunden
bereits mit dem IPMI 1.5 Interface. IPMI 2.0 ist in Vorbereitung.
IPMI 2.0 ist abwärtskompatibel
ausgeführt
und erweitert IPMI 1.5 insbesondere um Sicherheitsfeatures und für den Einsatz
in Blade-Servern.
-
Die
Kommunikation zwischen den Mainboardkomponenten übernimmt der IPMB (Intelligent
Platform Management Bus), dieser teilt sich auf in einen privaten
dem Mainboard vorbehaltenen Teil und einen Teil für das Chassis.
Für den
IPMB wird der SMBUS verwendet. Neue Spezifikationen führen zwar
zu neuen Begriffen, aber eben nicht immer zu neuen Techniken. Die
Spezifikation des SMBUS ist in der aktuellen Version 2.0 z.B. um
die Multimasterfähigkeit
erweitert worden, worauf IPMB zugreift.
-
1.8 Rechnerinterne Realtime-Clock
-
Während das
zeitgesteuerte Herunterfahren und Ausschalten eines Server keine
schwierige Aufgabe ist, ist das zeitgesteuerte Einschalten etwas
aufwendiger.
-
Das
Netzteil eines Rechners liefert eine unabhängig vom Rechnerzustand nutzbare
5 Volt Standbyspannung. Um den Rechner mit der internen Realtime-Clock
zu starten, muss das Mainboard auf den IRQ8 (Interrupt Request)
reagieren können.
-
Das
BIOS muß das
Einschalten unterstützen.
Dieses erfolgt üblicherweise über das
APM (Advanced Power Management). Bei einigen Versionen ist die APM
Unterstützung
nicht sauber programmiert. Dieses Verfahren stellt daher keine verläßliche Grundlage
zum Einschalten eines X-86 Servers dar.
-
1.9 Headless-Server – Frontseite
und Tastenfeld
-
Eine
einzelne unbeabsichtigte Betätigung
der an einem Server meist frontseitig installierten Reset oder Power
Tasters stoppt einen Server sofort oder unterbricht die Funktion
für einen
gewissen Zeitraum. Eine Sicherung gegen versehentliches Betätigen ist
meist nicht vorhanden. Diese wäre
aber wünschenswert.
-
Eine
Frontklappe zielt zwar auf die Sicherung des Servers inkl. des Zugriffs
auf dessen Laufwerke. Leider sind die verwendeten Schlösser sehr
einfach ausgeführt
und erfüllen
nur selten die Anforderungen an ein Briefkastenschloss. Teilweise
sind ganze Serien von Servern mit gleichen Schlössern und Schlüsseln ausgerüstet. Hier
sollte ebenfalls die Sicherheit im Serverbetrieb durch weitere Maßnahmen
erhöht
werden.
-
1.10 Bewertung von PC-Komponenten
oder Hilfsmittel zur Steuerung eines Servers
-
Die
Verfahren zur erstmaligen Einstellung der IP-Adresse eines x-86
Servers wurden in Kapitel 1.5 angesprochen. Hier wird nun die Eignung
der weiteren Systemkomponenten diskutiert.
-
Übliche Watchdogkarten
(Kapitel 1.6) lassen sich nicht durchgängig in Appliances einsetzen,
wenn die zur Verfügung
stehenden Ressourcen, z.B. die PCI-Steckplätze für andere Zwecke erforderlich
sind. Die Funktionsfähigkeit
der Watchdogkarten setzt vorab ein hochgefahrenes Betriebsystem
voraus. Erst während
des Bootvorgangs wird ein Treiber zur Kommunikation mit der Watchdogkarte
gestartet, welcher den Start des Watchdog-Zählers initiiert. Es vergeht
also einige Zeit, bis der Watchdog im hochfahrenden System gestartet werden
kann. Stürzt
das Betriebssystem in dieser Phase ab, ist die Watchdogkarte noch
inaktiv. Der Server wird nicht erneut gestartet.
-
Die
rechnerinterne Realtime-Clock kann ein System nur unter der Bedingung
eines zuverlässig
funktionierenden APM zeitgesteuert starten. Außerdem muß als System- oder Administrationsanforderung
grundsätzlich
gewährleistet
sein, daß ein
Starten über
den IRQ8 möglich
ist. Das APM (Advanced Power Management) und der IRQ8 dürfte noch
dem Herunterfahren des Systems keinesfalls gesperrt sein. Diese
Anforderungen werden, wie in Kapitel 1.8 beschrieben, nicht von
allen BIOS-Versionen unterstützt.
-
Die
Praxis, Reset und Power Taster an der Frontseite eines Systems zu
installieren, ist für
bestimmte Anwendungsfälle
sinnvoll (z.B. Wartung sowie Hard- und Softwarewareanalyse). Für den Produktiveinsatz birgt
diese Anordnung jedoch die in Kapitel 1.9 dargestellten Risiken.
Aus diesem Grunde erscheint eine verbesserte Sicherung dieser Taster
oder eine vom Administrator beherrschte Aktivierungsfunktion wünschenswert.
-
Der
SMBUS nutzt die Technik des I2C Busses (Inter
IC Bus). Es handelt sich um einen Zweidrahtbus. Dieser wurde zuerst
im Bereich der Unterhaltungselektronik eingesetzt, wo er heute einen
Standard darstellt. Auf jedem modernen Speichermodul befindet sich
ein SPD-EEProm,
welcher die Spezifikation des Modules enthält. Es handelt sich um ein
I2C EEProm mit mindestens 128 Byte Größe. So bietet
sich eine einfach ressourcensparende Schnittstelle für die Erweiterung.
Mittels IPMI ist somit eine Steuerung bis hin zu den BIOS-Einstellungen
leistbar, die von Systemkomponenten unabhängig über den I2C-Bus
erfolgen kann.
-
2 Hardware für die Entwicklung
einer Steuereinheit
-
In
den Einsatz und in die Systemgrenzen der Verfahren zur Erstkonfiguration
und Absicherung des Betriebs von X-86 Appliances wurde in Kapitel
1 eingeführt.
Es ist erkennbar, daß eine
durch-gängige
Konfiguration, Steuerung und Hardwareüberwachung mit diesen Verfahren
mit erheblichem Aufwand verbunden ist oder sich aufgrund von Systemrestriktionen
nicht umsetzen läßt.
-
Das
zu entwickelnde Funktionsmuster kann die Steuerung eines oder mehrerer
Serversysteme ohne die benannten Nachteile leisten. Es geht über die
bekannten Lösungsansätze hinaus,
indem es zusätzliche Funktionen
bietet und softwarebasiert mit begrenztem Aufwand weiterentwickelbar
ist.
-
Das
Hardwarekonzept und der konkrete Aufbau der zu entwickelnden Hardware
folgt in Kapitel 3. Die ergänzend
zur Hardware zu entwickelnde Software wird in Kapitel 4 besprochen.
-
Nachfolgend
werden die Überlegungen
für die
Entwicklung der Hardware der Steuereinheit dargestellt. Die Steuereinheit
soll es ermöglichen,
den Server ein- und auszuschalten, die Reset- und SMI Funktionen
auszuführen
sowie diese Funktionen zeitlich zu steuern oder fernzubedienen.
Mit einem Tastenfeld und einem LCD-Dislplay sollen Betriebsdaten
dargestellt, überwacht
und eingestellt werden können.
-
2.1 LCD-Display
-
Das
Gehäuse
des exemplarisch aufzubauenden Rechners wird eine Frontplatte mit
einer Breite von 211 mm und einer Höhe von 642 mm besitzen. Im
oberen Teil dieser Frontplatte werden ein LCD-Display sowie ein
Tastenfeld eingesetzt.
-
Das
LCD-Display wird z.B. von der Firma Pollin hergestellt. Es trägt die Typ-Bezeichnung L404200J00A.
Das unbeleuchtete Display ist zweizeilig und kann pro Zeile jeweils
40 Textzeichen darstellen. Verwendet wird ASCII-Code (256 Zeichen).
-
Die
integrierten LCD-Controller entsprechen dem Industriestandard (kompatibel
zu HD44780), die Ansteuerung erfolgt über einem vier oder acht Bit
parallelen Datenbus. Es können
acht Zeichen frei programmiert werden. Die Abmessungen betragen
(in mm) B × H × T 182 × 33,5 × 11,3,
die Anzeigefläche
beträgt
(B × H) 154,4 × 15,8 und
die Zeichengröße (B × H) 3,2 × 4,85.
-
2.2 Tastenfeld
-
Eine
Watchdog und eine externe Uhr benötigen Zugriff auf die Funktion
der im Frontpanel des Servers sichtbaren Tasten: Reset, Power und
ggf. SMI. Ein solches Tastenfeld ist auch vorgesehen. Das verwendete Tastenfeld
wird neben diesen Grundfunktionen weitere Bedienmöglichkeiten
bieten.
-
Es
kann bauart- oder preisbedingt gewünscht werden, daß spezielle
Tastenfelder zum Einsatz kommen. Insbesondere bei mechanischen Tastenfeldern
schließt
oder öffnet
sich der Kontakt nicht sofort. Vielmehr kann es bis zur vollständigen Betätigung zu
einer Vielzahl kurzer Kontakte kommen. Dieser Effekt dauert je nach
Taste einige Millisekunden und wird als Prellen bezeichnet.
-
Daher
wird eine Entprellschaltung vorgesehen. Diese dient zum Entprellen
der Tasten und speichert die gedrückten Tasten zwischen. So können auch
mechanische oder elektronische Tasten anderer Hersteller in die
Steuereinheit integriert werden. Der zwischengespeicherte Wert ist
via SMBus auslesbar und kann via SMBus gelöscht werden.
-
Die
verwendeten Tasten des Tastenfeldes (B × H, 152mm × 38mm) werden von der Firma
Rafi für
den Tastatureinsatz angeboten. Es besteht aus zwei übereinanderliegenden
Tastenreihen mit 8 Tasten in der oberen Reihe und 5 Tasten in der
unteren Reihe. Die verwendeten Tasten nutzen für Signalgebung ein Halleffekt-IC.
Beim Betätigen
wird ein Miniaturmagnet an den IC vorbeigeführt und löst dort den Impuls aus.
-
Die
obere Tastenreihe aus acht Tasten kann für beliebige Funktionen programmiert
werden. Sie wird im folgenden als Funktionstastenfeld bezeichnet.
Die untere Tastenreihe bildet das Steuertastenfeld und dient dazu,
die Grundfunktionen auszuführen.
-
2.2.1 Funktionstastenfeld
-
Die
obere Tastenreihe dient als Funktionstastenfeld. Da die hinterlegten
Funktionen frei programmierbar sein sollen, soll auf eine Beschriftung
verzichtet werden. Da das Funktionstastenfeld direkt unter dem Display
angeordnet ist, dient die unteren Zeile des Displays als Anzeige
der Funktionsbelegung.
-
Da
nicht nur elektronische Tasten eingesetzt werden, sondern auch preiswerte
mechanische Tasten als Alternative verbaut werden können, müssen die
Tasten entprellt werden und der Tastendruck zwischengespeichert
werden. Der Zwischenspeicher läßt sich
via SMBus auslesen und zurücksetzen.
-
2.2.2 Steuertastenfeld
-
Die
untere Tastenreihe bildet das „Steuertastenfeld" und enthält die Grundfunktionen
des Labormusters. Die Tasten sind unterhalb der 8 Funktionstasten
angeordnet und bilden ein ebenfalls ein 8 Plätze breites Feld. Es wird folgende
Reihenfolge der Tasten vorgesehen: Leerplatz; AKTIV; Leerplatz;
AUS; RESET; SMI; EIN; Leerplatz; Die Anordnung der Tasten ergibt
sich auch aus der folgenden Abbildung.
-
Ergänzt wird
das Tastenfeld durch Leuchtdioden, die den Status der Funktionen
anzeigen, als Quittungssignal für
einen Tastendruck dienen oder den Gerätezustand anzeigen. Abbildung
1: Vorderansicht des Labormusters Display und Tastenfeld;
-
Das
Steuertastenfeld weist folgende Funktionen auf:
- aktiv:
- Entsperrt die Tasten
reset, smi und aus für
eine Sekunde, eine Leuchtdiode zeigt dies an. Die Tasten werden
für diese
Zeit aktiviert.
- aus:
- Wird, während die
LED Aktiv leuchtet, die Taste gedrückt, schaltet sich der PC aus.
- reset:
- Wird, während die
LED Aktiv leuchtet, die Taste gedrückt, führt der PC einen Hardware Reset
aus.
- smi:
- Wird, während die
LED Aktiv leuchtet, die Taste gedrückt, geht der PC in den Standby-Modus über.
- ein:
- Durch Drücken der
Taste wird der PC eingeschaltet.
-
Neben
der Power-LED, der HD-LED und der Standby-LED gibt es weitere LEDs.
Darunter eine Anzeige für
die Standbyspannung, je eine LED als Quittung für Tasten aktiv, reset, smi.
-
2.3 I2C
und SMBus
-
Ein
Vorteil des I2C Bus ist die einfach und
klar strukturierte Kommunikation zwischen dem Prozessor und dem
angesprochenen Chip. Dazu dienen die Leitungen SDA (serial data)
und SCL (serial clock). Der I2C gehört deshalb
zu den Zweidrahtbussen. Er ist grundsätzlich als Multimasterbus gedacht,
es dürfen
also mehrere Prozessoren über
den Bus mit dem Chip sprechen. Ein gutes Beispiel für die Kommunikation
ist der Uhrenbaustein PCF8573 von Philips.
-
Die
Kommunikation I2C folgt einigen Grundbedingungen:
- a) Ist der Bus frei, (SCL=HIGH, SDA=HIGH) kann
die Datenübertragung
beginnen.
- b) Startbedingung: SDA wird LOW, während SCL noch HIGH ist.
- c) Stoppbedingung: SDA wird HIGH, während SCL, schon HIGH ist.
- d) Eine Datenbitänderung
darf ausschließlich
erfolgen, wenn das Taktsignal SDA LOW ist. Ist das Taktsignal SCL
= HIGH darf sich SDA nicht ändern.
- e) Eine Begrenzung der Datenmenge zwischen Start- und Stoppbedingung
existiert nicht.
- f) Die Daten werden byteweise übertragen. Ein Quittungsbit
ACK als 9. Bit schließt
jedes Byte ab.
- g) Der Datenempfänger
erzeugt das ACK Bit synchron zum SCL Signal.
Ist das Bit R/#W
LOW ist der SMB Controller der Sender und der angesprochene Chip
der Empfänger.
Ist
das Bit R/#W High ist der angesprochene Chip der Sender und der
SMB Controller der Empfänger.
- h) Der I2C Bus Controller kann beim
Lesen die Quittung unterdrücken.
Dabei bleibt beim 9. Bit ACK das Signal SDA HIGH. Der Chip PCF8573
wird in diesem Fall Slave-Empfänger.
Abbildung
2: Bit-Transfer Fig.
4 Bit transfer - Quelle: Philips Datenblatt PCF8573
Abbildung
3: Start- und Stop-Bedingung Fig.
5 Definition of start and stop conditions. - Quelle: Philips Datenblatt PCF8573
-
Neben
der seriellen Kommunikation besitzt der I
2C
Bus weitere Vorteile, darunter die testgelegte Adressierung. Für die I
2C Bus Chips gibt es fest vorgegebene Adressen
oder Adressbereiche. Sollen mehrere Chips eines Typs eingesetzt
werden, kann die genaue Adresse über
Adressleitungen am Chip festgelegt werden. An der Uhr befinden sich
zwei Pins mit denen sich die Adressen einstellen lassen. Es lassen
sich hiermit vier Schaltkreise vom Typ PCF8573 gleichzeitig betreiben.
Die beiden Pins ergänzen
den vorgegebenen Adressbereich zur festen Adresse. Tabelle
1: Betrieb von vier PCF8573 Schaltkreisen am I
2C
Bus
- Quelle: Valvo Datenblatt PCF8573
-
Ein
einzelner Chip kommt mit einer Adresse aus. Dies genügt in der
Regel nicht, um die Funktionen eines Chips komplett zu erschließen. Daher
folgt der Adresse eine Subadresse, die dann die einzelnen Register
und Funktionen erreicht.
-
Mit
dem 8. Bit R/#W wird bestimmt, ob Daten gelesen oder geschrieben
werden. Ist R/#W = 0 bedeutet dies, daß das folgende Datenwort das
Subadresswort ist, das Steuerbefehle und/oder Zähler-Registeradressen vorgibt.
Erst daran anschließend
folgt ein Datenwort, dass die zu übertragenden Daten enthält. Ist
R/#W = 1 bedeutet dies, daß das
folgende Datenwort der zu lesende Zähler-Registerinhalt ist.
-
Für die Subadressierung
liefert der verwendete PCF8573 ein gutes Beispiel. Tabelle
2: Subadressierung mittels PCF8573
- Quelle: Valvo Datenblatt zu PCF8573
-
Der
SMBus dient zur Einstellung und Überwachung
des Mainboards. Um automatisch den Hauptspeicher im BIOS konfigurieren
zu können,
ist es nötig,
die Informationen auf dem SD-RAM-Modulen
zu speichern. Dies übernimmt
ein I2C EEprom (24C02 mit 256 Byte).
-
Für die Kommunikation
wurde der der SMBus 1.0 geschaffen. Der SMBus 1.0 ist im Gegensatz
zum I
2C Bus nicht multimasterfähig und
war ebenfalls als lokaler Bus gedacht. Der Bus diente zur raschen
Einstellung der Taktrate des Prozessors. Mit dem Chip LM75 wurde
eine Temperaturüberwachung
möglich.
Der Funktionsumfang wurde ständig
erweitert schnell. Anwendungen waren z.B. die Lüftersteuerung und oder die
Spannungskontrolle am Netzteil. Im Rahmen der IPMI Spezifikation
2.0 wurden Funktionen zur Fernüberwachung von
Aussen realisiert. Mit dem SMBus 2.0 wurde außerdem die Multimasterfähigkeiten
eingeführt.
Die Übertragungsgeschwindigkeiten
wurden von ursprünglich
64kBit auf 400kBit, später
auf 3,4MBit erhöht. Abbildung
4: System-Konfiguration
Fig.
6 System configuration.
- Quelle: Philips Datenblatt PCF8573
-
2.4 I2C
Uhr
-
Die
Verwendung der rechnerinternen Realtime-Clock, wie unter 1.8 ausgeführt, stellt
keine verläßliche Grundlage
zum Einschalten eines X-86 Servers dar. Es erscheint daher probat,
eine vorn BIOS getrennt arbeitende Uhr zu verwenden.
-
Beim
Management mehrerer Server ergibt sich daraus der Vorteil, daß das Einschalten
gezielt und zeitlich gestaffelt erfolgt und so die Netzlast besser
verteilt wird. Eine zu hohe Netzlast in der Stromversorgung bei
gleichzeitiger Inbetriebnahme mehrerer Server kann zu Ausfällen des
gesamten Stromversorgungssystems mit einem Ansprechen der Sicherungen
führen.
-
Die
Auswahl an I2C Uhrenbausteinen ist recht
groß,
wie eine Internetrecherche ergab. Firmen wie EPSON und Philips liefern
verschiedene Typen. Folgende technische Eckdaten sollte der Chip
erfüllen:
- • ausreichende
Verfügbarkeit
- • ein
Alarmausgang
- • externe
Einstellmöglichkeit
für den
Oszillator
- • ein
Taktausgang zur Versorgung der restlichen Schaltung mit einem Takt.
- • Einstellbarer
Adressbereich
- • SMD
und DIL Gehäuse
vorhanden
- • Optional
ein Sekundenausgang zum Anschluß einer
LED, welche die Funktion der Uhr anzeigt.
-
Ein
Vorteil des Schaltkreises von EPSON RTC8564 ist es, dass Linuxtreiber
für den
Chip existieren. Vorteilhaft ist der einstellbare Vorteiler für den Frequenzausgang.
Der Chip existiert nur in SMD Bauform und nicht im DIL Format. Die
Frequenz ist extern nicht justierbar. Ein getrennter Pin für die Sekunden
fehlt genau wie ein Alarmausgang. Der vorhandene INT Pin (Interrupt)
könnte
diese Aufgabe zwar übernehmen,
erfüllt aber
die Anforderungen nicht vollständig.
Der Adressbereich ist nicht einstellbar.
-
Philips
liefert die I2C Uhren-Chips PCF8593, PCF8583
und PCF8573. Der PCF8593 und der PCF8583 Schaltkreis stecken in
einem 8 Pin Gehäuse.
Somit fehlen getrennte Ausgänge
für Sekunde,
Alarm und Takt.
-
Der
Chip PCF8573 erfüllt
die Anforderungen sehr gut, die Adressen sind einstellbar und im
SMBus noch frei. Die Quarzfrequenz kann justiert werden, ein Alarmausgang
(COMP) ist vorhanden. Mit dem 128Hz Ausgang kann die restliche Schaltung
mit dem nötigen
Takt versorgt werden. Ein Pin für
die Sekunde existiert ebenfalls.
-
2.5 Watchdog
-
Die
Watchdog-Schaltung wird von wenigen Ports aus zwei PCF8574 angesprochen.
Die Ports sollten aus Sicherheitsgründen auf zwei getrennte Chips
verteilt werden. So sind die Funktionen Aktivieren und Rücksetzen
auf zwei ICs verteilt. Reduziert man die Funktionen auf das nötige Minimum,
vereinfacht sich die Watchdog-Schaltung stark. Auf die softwareseitige
Einstellung der Watchdog wurde verzichtet. Eine Einstellung via Jumper
muß daher
möglich
sein.
-
Eine
weitere Beschränkung
auf Zweierpotenzen bei der Laufzeit führt zu einer weiteren Vereinfachung und
erlaubt die Nutzung eines einfachen Zählers. Da auf diese Weise nur
feste Werte möglich
sind, genügt
ein einfacher Zähler,
der nicht mehr rückwärts zählen muß. Die Software
beschränkt
sich somit auf das Rücksetzen
und Starten des Zählers.
Vorteilhaft ist, erkennen zu können,
ob der Watchdog-Zähler
aktiviert ist.
-
Zur
Einstellung der Zeitbasis dient ein kleiner kapazitiver Trimmer.
Am IC befindet sich ein Ausgang der ein 128Hz Signal liefert, dieses
Signal dient ebenfalls der Einstellung.
-
Aufwendiger
ist die Aufgabe des Starten des Watchdog-Zählers, genauer gesagt das Nichtstarten
des Zählers.
Der Start wird durch den Treiber des Betriebssystems über einen
I/O-Port ausgelöst.
Der Zähler
der Watchdog-Schaltung darf vorher auf keinen Fall starten. Würde er beim
Einschalten gestartet werden käme
es zu einem wiederholten Reset, denn die BIOS Tests und der Start
des Betriebssystems würde
zu lange dauern und vorher würde
die Watchdog einen Reset auslösen.
-
Das
Einschalten muß erkannt
werden und das Anlaufen des Zählers
verhindern. Ein Reset muß den Watchdog-Zähler ebenfalls
stoppen, da anschließend
wie beim Einschalten wiederum ein BIOS-Test und ein Betriebsystemstart
durchgeführt
wird. Nach dem Einschalten oder einem Reset muß der Zähler stehen, dabei spielt es
keine Rolle ob der Reset mittels Steuertaste oder Watchdog ausgeführt wurde.
Eine Erkennung des Resets und eine sowie eine Erkennung des Einschaltens
ist somit nötig.
-
Wurde
der Zähler
gestartet, darf der Standby-Modus nicht mehr aktiviert werden. Die
SMI Taste wird bei aktiviertem Watchdog gesperrt.
-
Das
Rücksetzten
des laufenden Zählers übernimmt
ein freier IO-Port der I2C LCD Schaltung.
-
2.6 Stromversorgung
-
Ein
ATX-Netzteil liefert verschiedene Spannung und Ströme, darunter
eine 5V Standbyspannung und die 5V Versorgungsspannung. Die 5V Standbyspannung
liefert das Netzteil bereits, wenn das Netzteil mit dem Stromnetz
verbunden und der Netzschalter auf der Rückseite eingeschaltet ist.
Die zur Verfügung
stehende Stromstärke
der 5V Standbyspannung liegt zwischen 500 mA und bei neueren Netzteilen
2A. Da Teile des Mainboards aus dem Standby-Stromkreis versorgt
werden, wird beim Schaltungsentwurf auf die Leistungsaufnahme zu
achten sein.
-
3. Aufbau der Hardware
-
Nach
einer einführenden
Beschreibung in den Einsatz und in die Systemgrenzen der Verfahren
zur Erstkonfiguration und Absicherung des Betriebs von X-86 Appliances
in Kapitel 1 wurden in Kapitel 2 davon ausgehend die Überlegungen
für die
Entwicklung der Hardware der Steuereinheit dargestellt. Die ergänzend zur
Hardware zu entwickelnde Software wird in Kapitel 4 besprochen.
-
Der
konkrete Aufbau der zu entwickelnden Hardware wird nachfolgend beschrieben.
-
3.1. Stromversorgung
-
3.1.1 Spannungsversorgung
und deren optische Anzeige
-
Ein
ATX-Netzteil liefert u.a., wie in Kapitel 2.6 ausgeführt eine
5V Versorgungsspannung und eine 5V Standbyspannung. Mit der Standbyspannung
wird die entwickelte Schaltung versorgt. Die zur Verfügung stehende
Stromstärke
ist bei älteren
Netzteilen auf 500 mA begrenzt. Die Mainboards und die mit der Standbyspannung
versorgten Komponenten verbrauchen einen erheblichen Teil der Energie.
Daher wird für
die Zusätzliche
Hardware auf den Stromverbrauch geachtet. Es werden ICs aus der
74HCT Reihe verwendet, deren Energieverbrauch deutlich unter denen
der 74LS Familie liegt. Größere Verbraucher,
wie die Hintergrundbeleuchtung von LCD-Displays werden aus der 5V
Versorgungsspannung gespeist.
-
An
vielen PCs ist von der Vorderseite aus nicht erkennbar, ob das auf
der Rückseite
liegende Netzteil eingeschaltet ist und ob es mit Netzstrom versorgt
wird. Daher werden LEDs zur Anzeige dieser Systemzustände vorgesehen.
- – LED
1 wird aus der Standbyspannung versorgt. Sie leuchtet, wenn das
Netzteil eingeschaltet also mit Netzspannung versorgt ist.
- – LED
2 wird aus der 5V Versorgungsspannung gespeist und zeigt somit,
ob der PC eingeschaltet ist.
-
3.1.2 Standbyspannung über 'Wake on Lan' oder Netzteil
-
Die
Standbyspannung, welche die Schaltung speist, ist nicht offen zugänglich.
Eine Möglichkeit
an die Standbyspannung zu kommen ist es, sich aus dem WOL (Wake
On Lan) des Mainboards zu bedienen. Hierzu wird in der Schaltung
ein 3 poliger Anschluß vorgesehen.
Der WOL Anschluß auf
dem Mainboard kann so über ein
Kabel mit der Schaltung verbunden werden.
-
Falls
im späteren
Betrieb eine WOL-fähige
Netzwerkkarte eingesetzt werden soll, muss auch diese mit dem dreipolilgen
Anschluß auf
der Schaltung verbunden werden können.
Die Schaltung wird dazu in den Anschluß eingeschleift. Fehlt ein
WOL-Anschluß auf
dem Mainboard, ist direkt auf das Netzteil zuzugreifen. Dazu wird
die vom Netzteil abgehende graue Leitung angezapft. Abbildung
5: Stecker für
ATX-Netzteil: Stecker, Pinbelegung, Buchse
- Quelle: http://www.elektronik-kompendium.de/
-
3.1.3 Versorgungsspannung
via Floppy-Stromadapter oder SMBus
-
Größere Stromverbraucher,
wie die Hintergrundbeleuchtung des LCD-Displays sind aus dem 5V Stromkreis
für die
Versorgungsspannung zu versorgen.
- – Es kann
ein modifizierter Floppy-Stromadapter benutzt werden. Die +5V liegen
dabei an der roten Leitung an, Masse liegt an der schwarzen Leitung.
- – Befindet
sich auf dem Mainboard ein SMBus-Anschluß, kann die Stromversorgung
auch hieraus erfolgen, dies ist z.B. beim verwendeten Test-Mainboard
der Fall (ABit BP6).
-
3.2 I2C
Uhr
-
Der
Philips Chip PCF8573 enthält
eine justierbare Realtime-Clock. Angelehnt an eine Musterapplikation
aus dem zugehörigen
Datenblatt (Anlage) wird die benötigte
Schaltung für
die Kommunikation mit dem SMBus entwickelt.
-
In
der Musterschaltung des Datenblattes ist ein 1,2V NC-Akku als Standby-Stromversorgung
vorgesehen, dieser wird durch die preiswertere 3V Lithiumzelle (DR2323)
ersetzt.
-
Pin
10 SEC stellt den Sekunden-Ausgang dar. Daran wird eine LED mit
Vorwiderstand geschaltet. Diese LED befindet sich auf der Platine
und dient zur Kontrolle. Sie zeigt das Laufen der Uhr durch ein
Blinken im Sekundentakt an.
-
Ein
kapazitiver Trimmer mit einer Kapazität von 22 pF wird verwendet,
um die Frequenz des 32,768 kHz Quarzes abzugleichen. Pin 11 FSET
(tuning output) liefert dann eine Frequenz von 128 Hz (TP1), diese Frequenz
wird herunter geteilt und versorgt die weitere Schaltung mit einem
8 Hz Takt.
-
Pin
6 EXTPF (enable power fail flag input) und Pin 7 PFIN (power fail
flag input) liegen auf Masse, denn eine externe Überwachung der Uhren-Standbyspannung
entfällen,
da eine 3V Lithiumzelle eingeaut ist. Der Pin 12 TEST (test input)
muß im
normalen Betrieb ebenfalls auf Masse liegen.
-
Pin
3 COMP (comparator output) ist der Alarmausgang und kann den PC
mit Hilfe der Schaltung für die
Steuertasten einschalten.
-
Die
Pins 4 SDA (serial data line) und Pin 5 SCL (serial clock line)
sind für
die Kommunikation mit dem SMBus vorgesehen. Mit den Eingängen Pin
1 A0 (address input) und A1 an Pin 2 läßt sich die Adresse des Chips
einstellen.
-
3.3 Funktionstastenfeld
-
Das
Tastenfeld wird über
den SMBus angesprochen. Hierzu wird ein PCF8574, ein 8 Port IO/Chip
von Philips verwendet. Der PCF8574 liefert beim Lesen nur den momentan
Wert zurück.
Zwar verfügt
der PCF8574 über
einen Interrupt-Pin, der beim Verändern der Eingangswerte auf
Null schaltet, der SMBus-Controller verfügt jedoch nicht über eine
entsprechende Leitung.
-
Aus
diesem Grund muß die
Tastatureingabe zwischengespeichert werden. Ein 8 fach D-Flip-Flop mit gemeinsamen
Clear und Clock Signalen vom Typ 74HCT273 übernimmt diese Aufgabe. Das
NAND Gatter 74HCT30 erzeugt das Clock-Signal. Bei Einsatz mechanischer
Tasten wird das Clock-Signal um einige Millisekunden verzögert. Diese
Verzögerung
dient dem Entprellen.
-
Zusätzlich wurde
die Möglichkeit
geschaffen, den Zwischenspeicher im 74HCT273 zu löschen. Ein freier
Port des PCF8574 aus der Watchdog-Schaltung wird dazu mit dem Clear-Pin des 74HCT273
verbunden. Abbildung
6: Schaltung zur Zwischenspeicherung der Tastatureingabe
-
3.4 Steuertasten
-
Die
Schaltung für
das Steuertastenfeld befindet sich komplett auf der zweiten Seite
des Schaltplans in der Anlage (Schaltplan2.pdf).
-
Das
Steuertastenfeld besteht aus fünf
Tasten, a.d.w.: aktiv, Reset, SMI, aus und ein. Die Tasten SMI Reset
und aus werden durch die Taste aktiv entriegelt. Durch Auslösen der
Taste wird ein digitales Monoflop geschaltet, welches die oben genannten
Tasten für
eine Sekunde entriegelt. Um die Bedienung der Tasten zu überwachen,
existiert für
jede Taste ein Quittungs-Signal in Form einer Leuchtdiode. Das Monoflop
besteht aus einem Zähler
2 NOR Gattern und einem Inverter. Abbildung
7: Ausschnitt aus Schaltplan2 (vergrößert im Anhang)
-
aktiv
-
Geht
man davon aus, dass die Schaltung bereits mit Strom versorgt wird,
also die Standbyspannung anliegt, arbeitet das digitale Monoflop
wie nachstehend dargestellt.
-
Im
passiven Zustand liefert der Ausgang des Zählers (Qd) ein HIGH Signal.
Dieses Signal schaltet mit Hilfe des NOR-Gatters am Clock-Eingang
des Zählers
den 8 Hz Takt für
den Zähler
ab und wird invertiert an das zweite NOR Gatter am Clear Eingang
des Zählers
geleitet. Dort ist so das NOR-Gatter Signal aus der elektronischen
Taste freigegeben.
-
Wird
die Taste gedrückt,
gibt sie einen 20ms langen Impuls aus, der die Leitung auf LOW zieht
und das NOR-Gatter am Clear Eingang des Zählers wird HIGH. Daher wird
der Zähler
zurückgesetzt
und der Ausgang des Zählers
Qd wechselt auf LOW. Als Folge wird der Takt am Zähler freigegeben
und die Impulse der Taste gesperrt.
-
Der
Zähler
läuft nun
solange, bis der Ausgang Qd wieder ein HIGH Signal liefert. Bei
8 Hz Takt dauert dieser Vorgang eine Sekunde. Gleichzeitig wird
die LED Aktiv eingeschaltet. Die LED hängt an einem Inverter, der
wieder am Inverter des Zählerausgangs
Qd angeschlossen ist. Der Zählerstand
ist nach dem Einschalten 0 und der Zählerausgang Qd liefert ein
LOW Signal. Wird diese Schaltung eingeschaltet, liegt also Standbyspannung
an, läuft
der Zähler
einmal ab und die LED leuchtet eine Sekunde, dies bleibt folgenlos.
-
SMI
-
Die
Arbeitsweise der SMI-Schaltung ähnelt
stark der Schaltung der Taste aktiv. Zwischen dem nun mit drei Eingängen versehenen
NOR-Gatter am Clear-Eingang des Zähler ist eine Logik geschaltet,
die zwei Funktionen erfüllt.
Zum einen muß das
Auslösen
des SMI Zählers
bei aktivierter Watchdog unterdrückt
werden, zum anderen kann unabhängig
von der SMI Taste der SMI Zähler
ausgelöst
werden.
-
Das
Signal zum Unterdrücken
der SMI Funktion (SMI_AUS) entstammt der Watchdogschaltung und wird
von dem RS Flip-Flop entnommen, das die Watchdogschaltung aktiviert.
-
Der
zweite Teil der Schaltung erlaubt es, die SMI Schaltung zu aktivieren,
ohne das die Taste SMI und aktiv genutzt werden müssen, dies
ist allerdings nur möglich,
wenn die Watchdog deaktiviert ist. Der SMI Zähler wird bei diesem Vorgang
von einem freien IO-Port aus dem PCF8574 der Watchdog-Schaltung
gestartet. Da es diesem Fall möglich
ist, daß der
IO-Port dauernd LOW bleibt, wird hinter den Port ein Monoflop aus
zwei Gattern geschaltet.
-
Der
dritte Eingang des NOR-Gatters führt
in die Schaltung der Taste aktiv und sperrt oder entsperrt die Taste
SMI. Es handelt sich um den Qd Ausgang des Zählers der Aktiv-Schaltung. Das Signal
ist aktiv LOW.
-
In
der SMI Schaltung wird der Ausgang Qc des Zählers genutzt, also läuft der
Zähler
0,5 s lang. An dem Ausgang des Inverters, der an Qc angeschlossen
ist, wird über
zwei parallel geschaltete Inverter das Quittungssignal für die LED
abgenommen. An dem zweiten Inverter wird ein Optokoppler angeschlossen,
der auf dem Mainboard den Anschluß der SMI-Taste bedient.
-
Reset
-
Die
Reset-Schaltung ist aus der SMI-Schaltung abgeleitet und unterscheidet
sich nur in dem Bereich zwischen dem Clear-Eingang des Zählers und
dem Ausgang des NOR-Gatters mit den drei Eingängen. Diese Schaltung übernimmt
zwei Funktionen. Sie nimmt das Signal aus dem Watchdog-Zähler (WD-RST)
auf und löst
im Falle eines HIGH-Level in jedem Fall einen Reset-Impuls aus.
Der zweige Teil der Schaltung speist sich aus einem freien IO-Port
des PCF8574 der Watchdog-Schaltung und löst ebenfalls bei LOW einen
Reset-Impuls aus. Es besteht die Gefahr, daß die Software den Port nicht
wieder auf HIGH stellen kann. Da ein Reset ausgeführt wird,
ist ist hinter den Port ein Monoflop aus zwei Gattern geschaltet.
-
aus/ein
-
Zwei
JK Flip-Flops in dem Baustein 74HCT73 bilden die Basis der Schaltung.
Ein Flip-Flop dient zum Einschalten, das andere dient zum Abschalten.
Beide sind durch eine Schaltung verkoppelt, die das Einschalten
des Rechners erkennt. Diese Schaltung wird auch von der Watchdog-Schaltung
verwendet.
-
Eine
kleine Schaltung aus drei Widerständen, einem BC548 Transistor
und einem 100μF
Elko übernimmt
diese Aufgabe. Ein 39kOhm Widerstand lädt nach dem Einschalten einen
100μF Kondensator
auf. Es bildet sich ein RC Verzögerungsglied.
Der 39kOhm Widerstand liegt an der +5V Versorgungsspannung an. Ein 1kOhm
Widerstand in der Basis des BC548 schützt den Transistor, der als
Open Kollektorschaltung betrieben wird und mit einem 2,2 kOhm Widerstand
gegen die 5V Standbyspannung gezogen wird. Die Schaltung liefert ein
HIGH Signal wenn der Rechner ausgeschaltet ist und somit die +5Volt
Versorgungspannung fehlt.
-
Wird
der Rechner eingeschaltet, schaltet der Transistor verzögert durch
das RC Glied durch und zieht dann das Signal #RST auf LOW. Ist der
Rechner ausgeschaltet (Standbyspannung liegt an), ist das Signal #RST
HIGH und das JK Flip-Flop zum Einschalten wird über den Pin C1 aktiviert. Zu
diesem Zeitpunkt ist der Ausgang Q LOW. Der Eingang K liegt auf
Masse (LOW) und J ist mit einem Pullup-Widerstand (HIGH) versehen.
-
So
beschaltet, wechselt der Ausgang Q durch eine fallende Flanke am
Clock Eingang (CLK) auf HIGH. Der Ausgang Q liegt an einem NOR Gatter
an, dessen Ausgang einen Optokoppler treibt, der auf dem Mainboard
den Power-Kontakt schließt.
Der Rechner wird so eingeschaltet und das Signal #RST wechselt auf
LOW. Das JK-Flip-Flop zum Einschalten wird deaktiviert und der Ausgang
Q wird dauerhaft LOW. Der Optokoppler öffnet nun den Kontakt Power
wieder.
-
Zusätzlich zu
der Taste ein kann der Rechner mit dem Alarmausgang der I2C Uhr oder mittels eines freien IO Port
des PCF 8574 der Watchdog-Schaltung eingeschaltet werden. Hierzu
ist der Ausgang des aus einigen Gattern gebildeten AND Gatters mit
dem Clock-Signal des Einschalt-Flip-Flops verbunden.
-
Liegt
am NOR-Gatter an einem Eingang ein HIGH an, geht der Ausgang auf
LOW und schaltet die LED des Optokopplers ein. An einem der Eingänge dieses
NOR Gatters hängt
der Ausgang Q des Ausschalt JK Flip-Flops. Der CLR Eingang (Clear)
ist über
einen Inverter an das Signal #RST angeschlossen. Der Ausgang dieses
Inverters ergibt das Signal RST. Ist der Rechner ausgeschaltet,
ist das Signal RST LOW und das Ausschalt Flip-Flop inaktiv (LOW).
Der Ausgang Q des Flip-Flops ist dann LOW. Nach dem Einschalten
(siehe oben) wird das RST Signal High und das JK-Flip-Flop aktiviert,
da der CLR Eingang HIGH ist.
-
Der
Eingang J hängt
invertiert am Eingang K dieses Flip-Flops. Eine fallende Flanke
am Clock-Pin übernimmt
die Werte von J an den Ausgang Q. Ist der J Eingang also HIGH, wird
auch der Ausgang Q des Flip-Flops HIGH und der Rechner wird ausgeschaltet,
dann wechselt das RST Signal nach LOW und deaktiviert das Ausschalt
Flip-Flop wieder.
-
Der
Wert von J ist nicht in jedem Fall HIGH. Wurde die Taste aktiv nicht
gedrückt,
ist dieser Wert LOW und der Rechner schaltet sich nicht aus. Wird
die Taste aktiv gedrückt
und anschließend
die Taste aus, schaltet der Rechner sich ab. Dazu muß am Clock-Eingang
eine fallende Flanke auftreten. Hierfür sorgt die Taste aus, wenn
sie gedrückt
wurde.
-
3.5 I2C
LCD
-
Die
Schaltung für
die Ansteuerung des LCD-Displays nutzt einen PCF8574 Chip. Das Display
wird im 4 Bit Datenmodus betrieben. Somit genügen 7 der 8 Ports des Chips.
Der 8 Port gehört
zur Watchdog-Schaltung.
-
Alle
Industriestandard LCD-Displays, die zum LCD-Kontroller-Chip HD44780
kompatibel sind, unterstützen
den 4 Bit Datenbusmodus, dazu werden die vier Datenleitungen DB4,
DB5, DB6 und DB7 und die Anschlüsse
RS, RW und E des Displays benötigt.
Die Datenleitungen DB0 bis DB3 liegen auf Masse. Der Display-Controller
muß in
den 4 Bit Modus geschaltet werden.
-
Die
Leitung RS unterscheidet zwischen Daten (RS=HIGH) und Befehlen (RS=LOW).
RW steht für Read/Write.
Ist RW LOW werden Daten aus dem Display gelesen, ist RW HIGH wird
in das Display geschrieben. E steht für Enable und das Display ist
aktiv wenn die Leitung auf LOW liegt.
-
Zusätzlich wird
ein Widerstandstrimmer verwendet, der zur Kontrasteinstellung dient.
-
Wenn
RW auf Lesen eingestellt wird und RS auf Befehl, kann das Busy-Flag
ausgelesen werden, das anzeigt ob das LCD den vorhergehenden Befehl
fertig verarbeitetet hat.
-
3.6 Watchdog
-
Wie
in Kapitel 2.5. ausgeführt
wurde, wird der Start des Watchdog-Zählers durch einen IO-Port ausgelöst. Vorher
darf der Zähler
in keinem Fall anlaufen. Ein Reset muß den Zähler stoppen. Nach dem Einschalten
muß der
Zähler
ebenfalls stehen. Eine Erkennung des Resets und eine sowie eine
Erkennung des Einschaltens ist nötig.
-
Kern
der hier verwendeten Schaltung ist der Zählerbaustein von 74HCT4020.
Als Clock-Signal
dient direkt das 8 Hz Signal, dass aus der Ruhe abgeleitet ist.
Die Zähler
Ausgänge
Q7 bis Q14 sind an einem Jumper-Feld angeschlossen. Mit dem Jumper
Feld lässt
sich die Zeit für
den Watchdog-Zähler
einstellen. Abbildung
8: Jumperstellung und Watchdog-Zeit
-
Eine
Seite des Jumper-Feldes ist durchverbunden. Das Signal aus dem Watchdog-Zähler wird
in die Reset-Schaltung des Steuertastenfeldes eingespeist. Wenn
das Signal WD_RST aktiv HIGH ist, zählt der Zähler aufwärts. Wechselt der mit dem Jumper
gewählte
Ausgang Q7 bis Q14 von LOW auf HIGH, wird über die WD-RST Leitung ein
Reset ausgelöst.
Dieser Reset deaktiviert dann den Watchdog-Zähler, indem der Clear-Pin (MR)
am 74HCT4020 auf HIGH gelegt wird. Der Zähler läuft nur, wenn an dem Reset-Pin
ein LOW anliegt.
-
Im
folgenden wird das Aktivieren und Deaktivieren des Watchdog-Zählers beschrieben.
Zwei NAND-Gatter bilden ein RS Flip-Flop. Dieses Flip-Flop schaltet
den Watchdog-Zähler
scharf. Das Einschalten erfolgt über
einen IO Port eines weiteren PCF8574. Hierzu muß der Pin kurzzeitig auf LOW
gesetzt werden. Der PCF8574 wurde für die Watchdog-Schaltung eingefügt. Der
Zustand des Flip-Flops wird auf einen weiteren IO Port des gleichen
PCF8574 zurückgeführt. An
dem Zustand des Flip-Flops ist erkennbar, ob der Watchdog scharf
geschaltet wurde. In scharfem Zustand wird aus dem IO Port ein LOW
ausgelesen. Ist der IO Port HIGH wurde ein Reset ausgeführt oder
der Rechner wurde frisch eingeschaltet.
-
Aus
der Steuertastenschaltung wird das Reset-Signal RST_OUT zurückgeleitet.
Dort befindet sich eine Schaltung, die ein Signal RST erzeugt. Dieses
zeigt an, ob der Rechner eingeschaltet wurde. Beide Signale sind
mit einem NAND verknüpft
und werden durch ein als Inverter geschaltetes NAND an das Flip-Flop geleitet,
so daß der
Watchdog-Zähler
abgeschaltet wird.
-
Über den
IO Port aus der LCD-Schaltung lässt
sich ein Impuls ausgeben. Dieser gelangt über ein NAND Gatter an den
Reset Pin des 74HCT4020. An dieses NAND Gatter wird das oben genannte
RS Flip-Flop geschaltet. Das Flip-Flop schaltet über das Gatter den Zähler aus
oder frei.
-
3.7 Keylock-Erweiterung
-
Auf
Anregung einiger Administratoren soll die Möglichkeit geschaffen werden,
die lokale PS2 Tastatur und Maus aus der Ferne abzuschalten. Dazu
wird ein freier IO Port aus der Schaltung genutzt.
-
Es
sind zu diesem Zweck drei Inverter nötig. Der erste Inverter wird
an den ein IO-Port gekoppelt. An dem Ausgang dieses Inverters werden
parallel die beiden anderen Inverter angeschlossen. Der zweite Inverter versorgt
eine Leuchtdiode, die den Keylock Zustand anzeigt. Der dritte Inverter
bedient den Optokoppler. Die Diode am Ausgang der Optokoppler schützt diese
gegen ein Verpolen der Anschlüsse.
-
Auf
den Inverter hinter dem IO-Port kann nicht verzichtet werden, denn
nach dem Einschalten des Rechners liefern die Ausgänge des
PCF 8574 den Wert HIGH. Fehlt dieser, wären Tastatur und Maus beim Einschalten
gesperrt.
-
4 Software
-
Die
Entwicklung der Software wurde in dieser Arbeit beschränkt auf
die für
ein Standalone-System
notwendigen Funktionen. Dies ist ausreichend, da für eine umfassende
Einbindung in Netzwerken als Voraussetzung IPMI 2.0 serverseitig
unterstützt
werden muß (Multimasterfähigkeit,
s. Kapitel 1.7).
-
Erste
Implementationen in Serversysteme werden nach Veröffentlichung
der Spezifikation IPMI 2.0 im Oktober 2004 für das folgende Jahr erwartet.
Erfreulicherweise existieren für
Teile der genutzten Komponenten bereits Treiber bzw. Software.
-
Das
Paket LM-Sensors schließt
ein Kernelmodul für
den PCF8574 ein und zwar für
die Kernelversionen 2.6.x und 2.4.x. Die Entwickler von LM-Sensors
arbeiten sowohl an den Treiber für
Controller, wie auch an Treibern für die I2C
Chips. Die Ergebnisse ihrer Arbeit fließen seit langem in die Linux
Kernel ein. Das Modul wird in der Software verwendet (Kapitel 4.1).
-
In
Kapitel 4.2 wird der pseudo-bidirektionale I2C
IO-Baustein PCF5874 beschrieben.
-
Die
Watchdog wird durch Software gesteuert und überwacht. Die Steuerung erfolgt
analog zum LCD-Display über
einen PCF8574. Das Zurücksetzen
des Watchdog-Zählers
geschieht mit Hilfe eines Ports der LCD-Schaltung. Aufgabe ist es,
die Möglichkeiten
der Nutzung aufzuzeigen und Lösungsansätze zu verfolgen
(Kapitel 4.3).
-
Für LCD-Displays
am Parallelport oder an der seriellen Schnittstelle existieren schon
seit geraumer Zeit Programmpakete. Hier gilt es, eine Software-Lösung zu
finden, die es erlaubt, ein LCD-Display am PCF8574 im 4 Bit-Modus
zu betreiben (s. Kapitel 4.4).
-
Das
Funktionstastenfeld wird in Kapitel 4.5 beschrieben.
-
Für die I2C Uhr ist ein Modul für den Linux-Kernel 2.6.x zu
entwickeln (s. Kapitel 4.6).
-
Die
Fernsteuerung bestimmter Funktionen wie Keylock wird exemplarisch
gezeigt (Kapitel 4.7).
-
4.1 Einbindung des Programmpaketes
LM-Sensors
-
Die
kleine Entwicklergruppe, die sich um das Programmpaket LM Sensors
bemüht,
hat ein beachtliches Programmpaket geschaffen. Es teilt sich in
zwei Pakete auf. Der I2C Teil enthält den Core-Treiber
und die Module für
die Controller-Chips, das zweite Paket mit Namen LM-Sensors kümmert sich
um die angeschlossenen Slave-Chips.
-
Ursprüngliches
Ziel der Gruppe um Frodo Looijaard, Philip Edelbrock und Mark Studebaker
war es, die auf dem Mainboard befindlichen Sensoren für den Server-Betrieb
zu nutzen. So zielte die Arbeit auf die Lüftersteuerung, die Temperaturmesseinrichtungen
sowie die EEProms auf den Speichermodulen. Durch das Erscheinen
neuer Mainboards und neuer Chipsätze
erweitern sich die damit verbundenen Aufgaben ständig.
-
Die
Ergebnisse dieser Arbeit gehen ständig in die Kernel-Quellen
ein. So wird das neueste I2C-2.9.0.tar.gz
für den
Linux Kernel 2.6.10 nicht mehr zusätzlich benötigt, da es Bestandteil der
Kernel-Quellen geworden ist. Das lm_sensors-2.9.0.tar.gz Paket enthält nicht
nur die Quellen für
die Kernel-Module sondern zusätzlich
einige praktische Tools, z.B. das sensors-detect, das im System
nach Controllern und I2C Chips sucht.
-
Die
folgende Abbildung zeigt das Zusammenspiel zwischen der Hardware,
den Kernel-Modulen
und den Applikationen. In der Mitte befindet sich der Core-Treiber,
der die Kommunikation zwischen den Hardware-Modulen für die SMBus-Controller
ermöglicht.
Das I
2C-Core Modul stellt dazu eine einheitliche
Schnittstelle zur Verfügung.
Bei der Entwicklung von Controller-Treibern ist dies zu berücksichtigen. Abbildung
9: Zusammenspiel von Hardware, Kernel-Modulen und Applikationen
- Quelle: http://secure.netroedge.com/~lm78/
-
Auf
dem Core Treiber setzt ein weiterer Treiber auf, der eine Charakter-Device
Schnittstelle (i2c-dev) bildet. Die Treiber für die einzelnen Chips setzen
auf diesen auf. Darunter ist das Modul für den PCF8574. Ein weiterer
Treiber in der Zwischenebene vereinheitlicht die Schnittstelle zu
den verschiedenen Sensormodulen (i2c sensor).
-
4.1.1 I2C
Module
-
Das
Paket i2c-2.9.0 ist bereits Bestandteil des aktuellen Linux Kernels.
Neben dem I2-C-Core Treiber liefert das
Paket die Hardware-Treiber für
die I2C-Controller. Es beschränkt sich
nicht auf die Module für
Mainbords. Die Unterstützung
umfasst z.B. I2C Controller auf Grafikkarten
oder TV-Karten.
-
Eine
Reihe externer I2C-Controller werden ebenfalls
unterstützt,
darunter ein einfaches Interface aus einem TTL7406, der den Parallelport
nutzt. Eine weitere interessante Controller-Schaltung verwendet den PCF 8584 von
Philips. Dieser kann auch von embedded Linux Rechnern genutzt werden.
-
Das
Test-Mainboard (Abit-BP6) verwendet den BX-'Chipsatz von Intel und greift auf das
Modul i2c_piix4 zurück.
Dies ist auch an dem von i2c_core verwendeten Modul i2c_piix4 zu
sehen.
-
4.1.2 Im sensors
-
Das
gesamte Projekt trägt
diesen Namen und dieses Paket ebenfalls. Es besteht aus Modulen
z.B. für die
Sensoren und einigen Tools, sowie Daemonen, die im folgenden Abschnitt
besprochen werden. Darunter die folgenden Module für das Abit
BP6, die durch sensors-detect
gefunden wurden und mit modprobe geladen wurden:
-
Der
Zusammenhang zwischen den Modulen ist so gut erkennbar. Der obige
Auszug ist typisch für
ein Mainboard. Es ist zu erkennen, dass das Ziel erreicht wurde,
einen Zugang zu den für
die Überwachung
des PCs zuständigen
I2C Chips zu schaffen. Die Temperatur der
CPU wird mit dem lm75 gemessen. Mit dem w83781d werden die Lüfter gesteuert
und die Versorgungsspannungen überwacht.
Mit dem eeprom Modul wird das SPD-EEPROM ausgelesen.
-
Die
Module beschränken
sich nicht auf den PC-Bereich, einige Bausteine aus dem Unterhaltungselektronikmarkt
werden ebenso unterstützt.
Ein Beispiel ist der BT 869, ein TV Encoder oder der SAA 1064, ein
4 Zeichen-Displaycontroller.
-
Einige
Module sind speziell für
SMBus 2.0 gedacht, wie z.B. smbus-arp. In diesem Zusammenhang sind
die Module für
IPMI und IPMB eine interessante Erweiterung. Leider ist das Modul
i2c-ipmi noch ein Dummy. Es zeigt aber schon die Struktur für einen
BMC (Board Managment Controller) und dessen Client. Das i2c-ipmb
hat ebenfalls bisher nur Entwurfsstatus.
-
4.1.3 Tools und Daemons
-
Das
lm-sensors Paket liefert ein Bündel
von Tools und Daemons. Der healthd Deamon überwacht im 15 s Rhythmus die
Alarmmeldung von sensors aus und verschickt im Alarmfall eine Email.
Der sensord Deamon protokolliert den Zustand des Systems, so die
Lüfterbewegung,
die Temperatur und die Spannungen des Netzteils. Die Funktionalität entspricht
der von sensors, das ebenfalls zur Überwachung dient.
-
Die
Drehzahl der Lüfter
steuert fancontrol, so können
die Lüfter
abhängig
von den mit sensors gemessenen Temperaturen geregelt werden. Das
Script tellerstats.sh wertet die Messwerte grafisch aus. Zwei Programme
können
den Systemstatus auf einem HP Maxilife LCD Display oder einem Matrixorbit
I2C Display ausgeben. Beide LCD-Displays
entsprechen nicht dem in dieser Arbeit verwendeten Standard-Display.
-
Der
Administrator geht ebenfalls nicht leer aus. Mit sensors-detect
findet er sowohl I2C Controller wie auch
der auf dem Mainboard verbauten I2C Chips
und erhält
noch einen Hinweis zur Installation im System. Nicht jeder Chip
wird identifiziert für
einige wird nur die Adresse ausgegeben. Eine Liste auf der Homepage des
Produktes gibt darüber
Auskunft. Dort findet sich eine Liste zu den unterstützten I2C Chips und Controllern.
-
Für den Entwickler
gibt es i2cdump, es handelt sich dabei um ein User-Space Programm,
also ein Programm, das nicht im geschützten Speicher ausgeführt wird.
Es kann die Werte der I2C-Register ausgeben. i2cset
ist ebenfalls ein Programm für
den User-Space, es schreibt in die I2C Register.
Beide Programme können
längere
Listen von Werten ausgeben oder einlesen um eine Sequenz zu erzeugen
oder zu speichern.
-
4.1.4 Das Modul PCF8574
-
Mit
modprobe PCF8574 lädt
das Modul. sensors-detect findet heraus, dass die Adresse belegt
ist identifiziert den Chip aber nicht. Der Treiber wird daher nicht
automatisch gefunden und geladen. Ein erfolgreich geladenes Modul
legt im Verzeichnis „/sys/bus/i2c/drivers/PCF
8574/0-0023/..." eine
Struktur an. Der Abschnitt 0-0023 beinhaltet die eingestellte Adresse
des PCF8574. Befinden sich mehrere PCF8574 Bausteine im System,
wiederholt sich die Struktur mit den entsprechenden Adressen. Der
Adressbereich von 0x20 bis 0x27 ist für den PCF8574 reserviert. Der
PDF8574 ist vollständig
elektrisch- und pinkompatibel zum PDF 8574A, nur der Adressbereich
unterscheidet sich. Der Adressbereich umfasst 0x38 bis 0x3f.
-
Das
Verzeichnis /sys/.... wurde mit dem Kernel 2.6.x eingeführt. Das
alte /proc/... Verzeichnis existiert zwar noch, ist aber obsolet.
Alle Programme und Treiber sind für diesen Kernel (2.6.x) gedacht.
Eine Unterstützung
für vorhergehende
Kernelversionen fehlt.
-
Das
Modul erstellt folgende Struktur dynamisch:
/sys/bus/i2c/drivers/PCF
8574/0-002x/detach_state
/sys/bus/i2c/drivers/PCF 8574/0-002x/name
/sys/bus/i2c/drivers/PCF
8574/0-002x/read
/sys/bus/i2c/drivers/PCF 8574/0-002x/write
/sys/bus/i2c/drivers/PCF
8574/0-002x/power/state
-
Hierzu
ein Ausschnitt aus LDC.c
-
Die
Prozedur out_byte schreibt ein Byte an den PCF8754 mit der I2C-Adresse 0x23. Der Quellcode der Prozedur
beschreibt die gestellte Aufgabe exemplarisch. Der Prozedur wird
ein Byte übergeben.
Die Variable fp ist der Filepointer mit dem wird das PCF8574 Device geöffnet wird.
Das Byte wird in einzelne Ziffern umgewandelt, Diese werden anschließend einzeln
mit snprint() in das Device geschrieben. Am Ende wird das Device
geschlossen. Erst nach dem Schließen erscheint das Byte an den
Ports des PCF8574.
-
Der
PCF8574 kann auch direkt aus einem Script oder von der Konsole gelesen
werden, entsprechende Beispiele finden sich in dem Watchdog-Script.
-
4.2 Verwendung des IO-Bausteins
PCF8574
-
Der
PCF8574 von Philips ist ein 8 Bit IO-Baustein. Der Baustein ist
pseudo-bidirektional, dies bedeutet, daß ein Byte ausgegeben und gelesen
werden kann. Wird er zur Ausgabe benutzt, kann der ausgegebene Wert
wieder eingelesen werden. Wird er zur Eingabe benutzt, kann nur
der momentane Wert eingelesen werden, eine Übernahme oder Speicherung eines
Impulses ist nicht möglich.
-
Es
ist nicht nötig
oder möglich,
den Baustein zwischen Ein- und Ausgabe umzuschalten. Folge ist, dass
der Status des äußeren Pins
eingelesen wird. Hierbei spielt es keine Rolle, ob das LOW-Signal
von außen angelegt
wurde oder durch das Ausgaberegister erzeugt wurde. Nach dem Einschalten
liegt an allen 8 IO-Ports ein HIGH Signal an. Liest man den Wert
ein, erhält
man 256 (0xff).
-
Eine
häufig
gestellte Aufgabe ist es, an einem einzelnen IO-Port ein HIGH Signal
oder ein LOW Signal zu erzeugen ohne die anderen IO-Ports zu beeinflussen.
Als Beispiel kann hier der IO-Port 7 des LCD-Displays dienen, dieser
setzt den Watchdog-Zähler
zurück.
-
Im
ersten Beispiel wird der Pin auf LOW gesetzt. Im ersten Schritt
wird der Wert aus dem Baustein gelesen, dann mit der AND-Funktion
maskiert und anschließend
wieder in dem Baustein geschrieben. Abbildung
10: Auslesen, Maskieren (mit AND) und Einlesen eines Signals im
PCF8574
-
Das
Beispiel zeigt, wie das Bit 7 gezielt auf LOW=0 gesetzt werden kann.
Dies, durch die Maskierung und das Verknüpfen der Bits mit der logischen
AND-Funktion – vorn
für den
konkreten Wert 0xFF und hinten für
beliebige Werte. Der Wert x steht für einen beliebigen Zustand,
also kann er HIGH=1 oder LOW sein.
-
Im
nächsten
Beispiel wird der Pin auf HIGH gesetzt. Wieder wird der Baustein
gelesen, diesmal aber mit einer OR-Funktion maskiert und anschließend wieder
in dem Baustein geschrieben. Abbildung
11: Auslesen, Maskieren (mit OR) und Einlesen eines Signals im PCF8574
-
Das
Beispiel zeigt, wie das Bit 7 gezielt auf HIGH gesetzt werden kann.
Dies erfolgt durch die Maskierung und das Verknüpfen der Bits mit der logischen
OR-Funktion – vorn
für den
konkreten Wert 0x00 und hinten für
beliebige Werte. Der Wert x kann sowohl HIGH oder LOW sein.
-
Im
dritten Beispiel soll ein LOW-Impuls ausgegeben werden. Hier wechselt
der IO-Port einmal vom HIGH auf den LOW Wert und wieder zurück zum HIGH.
Der Vorgang soll unterbrechungsfähig
sein. Daher ist eine einfache Lösung
nicht möglich.
Der Baustein muß wiederholt
eingelesen werden. Im ersten Schritt wird aus dem Baustein gelesen,
dann wird mit einer AND-Funktion maskiert und der Wert sofort wieder
zurückgeschrieben.
Anschließend
wird der Baustein wiederum gelesen, mit einer OR-Funktion maskiert,
der Baustein wird wieder beschrieben. Abbildung
12: Low-Impuls durch wiederholtes Einlesen in den PCF8574 ausgeben
-
Es
wird also gelesen, mit 0x7F AND-maskiert, geschrieben, wieder gelesen
und dann mit 0x80 OR maskiert und wieder geschrieben. Der IO-Port
7 erzeugt somit einen LOW Impuls.
-
4.3 Realisierung einer
Watchdog-Lösung
-
Vier
Verfahren bieten sich für
die Programmierung der Watchdog an:
- – Ein eigenständiges Programm,
das in regelmäßigen Abstand
den Watchdog-Zähler
zurücksetzt
und einmal beim ersten Starten des Programms die Watchdog aktiviert.
- – Beim
Start des Linux-Systems kann ein AT Befehl ausgeführt werden,
der die Watchdog aktiviert. In dir crontab des Cron-Daemon wird
ein Programm eingetragen, das in regelmäßigen Abstand die Watchdog
zurücksetzt.
- – Ein
Patch des Sensor-Daemon ist ebenfalls geeignet, um die Watchdog
zurückzusetzen,
um mit einem AT-Befehl beim Start des Betriebssystem die Watchdog
zu aktivieren.
- – Ein
Treiber für
die Watchdogfunktion bietet erhöhte
Sicherheit.
-
Gemeinsam
ist den Verfahren der Umgang mit den PCF8574 Baustein. Mit dem IO-Port
7 des für
das LCD-Display zuständigen
Bausteins wird der Watchdog-Zähler
zurückgesetzt.
Mit dem IO-Port 4 des für
den Watchdog zuständigen
Bausteins lässt
sich die Watchdog aktivieren. Ob die Watchdog aktiv ist, lässt sich
am IO-Port 0 des gleichen Bausteins ermitteln.
-
Der
IO-Port 7 des LCD-PCF8574 muß einen
LOW Impuls ausgeben, um die Watchdog zurückzusetzen. Dazu wird erst
gelesen, dann mit 0x7F und der AND-Funktion maskiert, dann geschrieben,
anschließend wieder
gelesen, mit 0x80 und der OR-Funktion maskiert und dann wieder geschrieben.
Das Senden des Impulses wird in regelmäßigem Zeitabständen wiederholt.
-
Zum
Aktivieren der Watchdog muss ein LOW Impuls am IO-Port 4 des Watchdog-PCF8574
ausgegeben werden. Es wird dazu erst gelesen, dann mit 0xf7 und
der AND-Funktion maskiert, dann geschrieben, anschließend wieder
gelesen, mit 0x08 und der OR-Funktion maskiert und wieder geschrieben.
Der Impuls wird nur einmal zum Aktivieren ausgegeben. Der Vorgang
wird beim Einschalten und nach einem Reset nötig.
-
Der
AT Befehl wird einmalig beim Start eines Linux-Systems ausgeführt. Dies
ist ein günstiger
Zeitpunkt, um die Watchdog mit ein LOW Impuls an IO-Port 4 zu starten.
Die kürzeste
einstellbare Zeit für
das regelmäßige Ausführen eines
Programms mittels Cron-Demon
ist 1 min. Wird also der Jumper auf 128s Watchdog-Time eingestellt,
erhält
man eine funktionstüchtige Überwachung
des Systems. Das von Cron ausgeführte Programm
muss hierzu nur ein LOW Impuls aus dem Port 7 des Bausteins der
LCD-Schaltung schicken.
-
Eine
Lösung
via Cron ist verhältnismäßig langsam.
Mit kürzeren
Watchdog-Zeiten kann ein selbst erstelltes Programm arbeiten. Wie
oben wird die Watchdog über
einen AT Befehl gestartet. Das Programm sorgt über den LOW Impuls an den Port
7 der LCD-Schaltung für
das Zurücksetzen
des Watchdogs in regelmäßigen Abständen.
-
Sollen
in einem System ohnehin Temperatur, Lüfter und Netzteilspannungen überwacht
werden, bietet sich der Sensor-Daemon an. In diesem muss als Patch
das Zurücksetzen
des Watchdogs integriert werden. Den Start der Watchdog übernimmt
wieder ein AT Befehl.
-
Alternativ
zu einem AT-Befehl kann der Startvorgang der Watchdog auch aus einem
Script erfolgen, dass als rc-Script beim Starten und Stoppen des
Systems eingefügt
wird.
-
Bei
den drei oben beschriebenen Lösungen
besteht die Gefahr, daß einer
der Prozesse abstürzt,
so daß die
Watchdog trotz eines noch teilweise laufendem Betriebssystem einen
Reset auslöst.
Eine sichere Lösung,
die ebenfalls kurze Watchdog Zeiten zulässt, ist ein Treiber. Optimal
wird dieser Treiber direkt dem Kernel zugeordnet, so daß er nicht
als Modul hinzu geladen werden muß. Der Treiber übernimmt
sowohl den Start wie auch das Zurücksetzen des Watchdogs.
-
Die
erstellte Lösung
arbeitet mit dem Cron-Daemon. Der Script heißt watchdog. Er wird als rc-Script eingebunden.
Der Script wird in die crontab eingebunden und dies mit der kürzesten
Zeit von einer Minute.
Eintragung in die crontab: * * * * *
/etc/init.d/watchdog trigger
-
Der
Jumper muß in
diesem Fall auf 128 s eingestellt werden.
-
Folgende
Links sind zu erstellen:
ln -s/etc/init.d/watchdog /etc/rc.d/rc5.d/S99watchdog
ln
-s/etc/init.d/watchdog /etc/rc.d/rc3.d/S99watchdog
ln -s/etc/init.d/watchdog
/etc/rc.d/rc3.d/K01watchdog
ln -s/etc/init.d/watchdog /etc/rc.d/rc5.d/K01watchdog
ln
-s/etc/init.d/watchdog /etc/rc.d/rc6.d/K01watchdog
ln -s/etc/init.d/watchdog
/sbin/rcwatchdog
-
Das
Stoppen ist nur der Vollständigkeit
halber integriert. Auf die S99 watchdog-Scripte kann verzichtet werden.
-
Auf
der Konsole kann die Watchdog wie folgt gestartet werden:
/etc/init.d/watchdog
start
-
In
den folgenden Zeilen werden die Adressen der PCF8574 angegeben:
DEVICE1
= /sys/bus/i2c/drivers/PCF 8574/0-0027/write # WD_START
DEVICE2
=/sys/bus/i2c/drivers/PCF 8574/0-0023/write # WD_RESET
-
Die
Vorgehensweise innerhalb eines Skriptes, um die IO-Ports an einem
PCF8574 nutzen zu können, kann
an dem Auszug aus watchdog ersehen werden.
-
-
4.4 Ansteuerung des LCD-Displays
-
Die
Schaltung für
das LCD-Display nutzt für
die Ansteuerung des Displays, bis auf die Hintergrundbeleuchtung,
einen eigenen PCF8574. Die Hintergrundbeleuchtung verwendet den
IO-Port 3 der Watchdog Schaltung. Abbildung
13: Portbelegung des PCF8574
- Quelle: Datenblatt PCF8574
-
Wie
zu erkennen ist, wird das Display im 4 Bit-Modus betrieben. Das
entwickelte exemplarische C-Programm (LCD.c) zeigt deutlich die
Vorgehensweise. Es handelt sich um einen Sequenzer, der die Ports
des IO-Bausteins entsprechende Ansteuerung eines LCD-Displays schaltet.
Da der IO-Port 7 dieser Schaltung die Watchdog zurücksetzt
bleibt der Port auf HIGH während
das Display mit Daten beschickt wird. Eine Beschreibung der Kommandos
befindet sich im Anhang 1.
-
Das
Programm gibt auf dem Display "Hello
World" aus, einmal
in einzelnen Buchstaben dann im Block als String und anschließend werden
die Eingaben auf der lokalen Konsole buchstabenweise ausgegeben.
Das Programm kann mit Control C abgebrochen werden. Die I/O Adresse
des PCF8574 wurde im Quellcode auf 0x23 festgelegt.
-
Der
Programmcode von LCD.c ist weitgehend selbsterklärend. Die ersten #define Makros
beziehen sich auf die Anschlußbelegung
des LCD-Displays, die folgenden Makros geben Befehle, Funktionen
sowie Unterfunktionen des Display-Controllers HD 44780 wieder.
-
Die
Funktion out_byte schreibt auf den I2C Baustein
PCF8574. Die Adresse ist festgelegt auf 0x23. Es wird dazu das Device „/sys/bus/i2c/drivers/PCF
8574/0-0023" geöffnet, die
Daten werden auf den Beustein geschrieben und das Device wird wieder
geschlossen.
-
-
Die
Prozedur reset zeigt deutlich, wie eine Sequenz ausgegeben wird.
Die Sequenz löst
einen Reset des LCD-Controllers aus und versetzt ihn in den 4 Bit
Modus. Hierzu wechselt dreimal die Polarität von enable. Dazwischen liegen
Wartezeiten, um dem LCD-Controller Zeit zur Ausführung des internen Reset-Befehls
zu geben. Anschließend
befindet sich das Display im 8 Bit-Modus.
-
Nun
wird das Display in den 4 Bit Modus versetzt. Der Vorgang ist etwas überraschend,
denn der Befehl wird erst im 8 Bit-Modus gesendet und anschließend im
4 Bit-Modus wiederholt.
-
-
Am
Programmcode ist sehr gut erkennbar welche Leitung gerade HIGH ist.
Diese Ports sind jeweils im Parameter von out_byte direkt benannt.
Der Parameter ein Byte wird durch das binäre Oder zusammengebaut Die
Variablen ln und hn stehen für
das low-Nibbel (ln) und high-Nibbel (hn). Ein Nibbel ist ein 4 Bit
Block aus einem Byte und entspricht einer hexadezimalen Ziffer.
Das high-Nibbel enthält
die oberen 4 Bit; das low-Nibbel die unteren 4 Bit.
-
Folgende
Anweisungen trennen die Nibbel:
control = FUNCTION_SET|BITS4|NUMLINES2|SMALLFONT;
hn
= control >> 4;
ln = control&0x0f;
-
Hierbei
werden die oberen 4 Bit nach viermal rechts geschoben, die unteren
mit dem logischen AND und dem Wert 0x0f maskiert. Es wird immer
erst das high-Nibbel und anschließend das low-Nibbel an das
Display ausgegeben.
-
Die
Prozedur clear löscht
den Inhalt des Displays, home setzt den Cursor an den Anfang. print
gibt ein Zeichen auf dem Display aus, print_string eine Zeichenkette
und moveto verschiebt den Ausgabeort auf dem Display. Die Befehle
lassen sich mit control übertragen.
-
4.5 Funktionstastenfeld
-
Der
SMBus unterstützt
keinen Interrupt. Es kommt daher nur Polling in Frage, um Eingaben
auf den Tasten fest zu stellen. Es wird also der PCF8573 Port in
regelmäßigen Abständen abgefragt.
Die Eingaben sind zwischengespeichert. Die Tasten lassen sich nach
einer Eingabe wieder löschen
in dem IO-Port 2 des PCF8574 für
die Watchdog kurzzeitig auf LOW gelegt wird.
-
4.6 I2C
Uhr, Modul PCF 8573
-
Für den in
Kapitel 2.3 beispielhaft besprochenen Baustein PCF 8573 wird exemplarisch
ein Kernel-Modul für
die Kernelversion 2.6.x entwickelt. Grundlage der Entwicklung ist
das Kernel-Modul für
den PCF 8574 ebenfalls in der Version für den Kernel 2.6.x. Das PCF8573.tar
Paket enthält
die nötigen
Dateien, den C-Code, ein Makefile, eine Kernelkonfigurationsdatei
und eine geänderte
I2C-Identifikationsdatei.
-
Im
ersten Schritt wird die Schnittstelle für das sysfs geplant.
• readtime | Lesen
der Uhrenregister für
die Zeit |
• settime | Einstellen
der Uhrenregister für
die Zeit |
• readalarm | Lesen
der Uhrenregister für
die Alarmzeit |
• setalarm | Einstellen
der Uhrenregister für
die Alarmzeit |
• readstatus | Liest
das Statusregister |
• setalarmnodate | Stellt
das NODA Bit im Statusregister ein |
• resetalarm | Löscht das
Alarmbit im Statusregister |
-
Die
Kommunikation wird im ASCII-Format durchgeführt. Der Baustein besitzt keinen
lesbaren Sekundenzähler,
dies wird im Zeitformat berücksichtigt.
Das Zeitformat wird von readtime, settime, readalarm und setalarm
genutzt. Das Zeitformat ist wie folgt aufgebaut: 'MM DD hh mm 00\0'. Die beiden Nullstellen
stehen für
die beiden fehlenden Sekundenstellen. Sie wurden eingeplant, um
den Quellcode für
andere Module, also für
I2C Uhren mit Sekundenzähler weiterverwenden zu können. Beim
readalarm Zeitformat wurde das Zeitformat ergänzt, um erkennen zu können, ob
die Alarmfunktion aktiviert ist. Es wird bei aktivierter Alarmfunktion ein 'A' ausgegeben. Ist Funktion deaktiviert
wird ein ''ausgegeben.
-
Wie
bei vielen Uhren, kann an dieser Uhr die Alarmzeit so eingestellt
werden, daß der
Alarm einmalig oder täglich
ausgelöst
wird. Zu diesem Zweck dient setalarmnodate, Es beeinflußt in der
Uhr das Bit NODA (no Date) im Statusregister. Setalarmnodate akzeptiert
eine '0' oder jedes andere
Zeichen. Ist der übergebene Wert
nicht '0', wird NODA so gesetzt,
das der Alarm einmal täglich
ausgeführt
wird.
-
Wird
in setalarm ein beliebiges Zeichen geschrieben, hat dies zur Folge,
daß das
Statusbit COMP gelöscht
wird. Der Alarmausgang ist dann wieder HIGH. Nach dem Lesen von
readstatus erhält
man ein Byte in binären
Format und nicht – wie
sonst üblich – eine ASCII Zeichenkette.
-
Die
PCF 8573 Kommandos 'time
adjust' und 'reset prescaler' werden nicht implementiert,
die Kommandos beeinflussen den Vorteiler durch Vor- oder Rücksetzen.
-
4.7 Realisierung einer
Keylock-Funktion
-
Befindet
sich auf dem Mainboard ein Keylock-Anschluß kann der Administrator aus
der Ferne die lokale PS2 Tastatur und Maus abschalten. Dies geschieht,
indem der IO-Port 5 des zum Watchdog gehörenden PCF 8574 auf LOW gelegt
wird.
-
4.8 Ergebnis der Entwicklung
der Software
-
Die
Entwicklung der Software wird beschränkt auf die für ein Standalone-System
notwendigen Funktionen.
-
Das
lm-sensors Paket liefert ein Bündel
von Kernelmodulen, Tools und Daemons für die Linux-Versionen 2.6.x
und Vorgänger.
Die entwickelte Steuereinheit profitiert davon, dass der PCF 8574
ein Standardbauteil für
den I2C-Bus ist und von einem bereits vorhandenen
Kernelmodul angesprochen werden kann.
-
Das
PCF 8574 Modul ist die Basis der verfolgten Softwarelösungen.
Es wird beschrieben, wie auf dieser Basis eine Tastatureingabe aus
dem Tastenfeld eingelesen werden kann. Mit der exemplarischen Software für das I2C LCD-Display lassen sich Zeichen und Zeichenketten
ausgeben.
-
Beschreiben
wird ebenso die softwaremäßige Einbindung
der I2C-Uhr mit einem PCF 8573. Ein entsprechendes
Kernel-Modul (PCF8573) für
die Version 2.6.x wurde erstellt. Der PC lässt sich damit durch die Alarmfunktion
der Uhr starten.
-
Die
konzipierte auf dem SMBus basierende Watchdog, kann mit geringem
Software-Aufwand eingebunden werden. Es entsteht damit eine äußerst leistungsfähige Lösung für den Serverbetrieb.
-
Die
lokale PS2 Tastatur die und Maus können über die Keylock-Funktion aus
der Ferne ein- oder
ausgeschaltet werden.
-
Die
softwareseitige Umsetzung z.B. eines User-Interfaces für die Zuweisung
der Netzwerkeinstellungen, darunter die IP-Adresse, hat noch zu
erfolgen, würde
aber den Rahmen dieser Arbeit sprengen.
-
Auf
Grundlage der dargestellten Verfahren und Programmteile können alle
wesentlichen Funktionen einer Steuereinheit softwaremäßig mit
angemessenem Aufwand programmiert werden. Verzeichnis
der Abbildungen und Tabellen
-
Literatur- und Firmenverzeichnis
-
Literatur:
-
- Linux-Treiber entwickeln
eine systematische Einführung in
Gerätetreiber
für den
Kernel 2.6
Jürgen
Quade. Eva Katharina Kunst
1. Auflage 2001
dPunkt.verlag
GmbH
ISBN 3-89864-238-0
- Die Programmiersprache C
Ein Nachschlagewerk
10. veränderte Auflage
Mai
1998
RRZN Uni Hannover
RRZN-Klassifizierungsschlüssel: SPR.C1
- Integrierte Digitalschaltungen für die Unterhaltungselektronik
1982
Datenbuch
Valvo, Unternehmensbereich Bauelemente
der
Philips GmbH
Verlag Boysen + Maasch
ISBN 3-87095-1
- Integrierte Logikschaltungen High Speed CMOS PC74HC/HCT
Datenbuch
Januar
1986
Valvo, Unternehmensbereich Bauelemente der Philips GmbH
Dr.
Alfred Hühtig
Verlag GmbH
ISBN 3-7785-1331-1
- The TTL Data Book Volumel 1985
Texas instruments 1985
Eighth
European Edition
ISBN 3-88078-053-6
- LCD-Module und Zubehör
Katalog
2002
Electronic Assembly GmbH
82166 Gräfelfing
- PCF8573 Clock/calendar with Power Fail Detector
Product
specification
Supersedes data of May 1989
1997 Mar 28
Philips
Semiconductors
- PCF8574 Remote 8-bit I/O expander for I2C-bus
Product specification
Supersedes
data of September 1994
1997 Apr 02
Philips Semiconductors
- Assigned I2C-bus addresses General
1997 Mar 03
Philips
Semiconductors
-
Firmen:
-
- Pollin Electronic
Max-Pollin-Str. 1
85104 Pförring
Tel.
08403/920-920
Fax 08403/920-123
http://www.pollin.de
- Rafi GmbH & Co.
KG
Elektrotechnische Spezialfabrik
Postfach 20 60
D-88190
Ravensburg
Tel. (0751) 89-0
Fax (0751) 89-13 00
http://www.rafi.de
- Philips Semiconductors
Hauptstr. 139–145,
65760 Eschborn,
Frankfurt,
Tel: +49 6196 49 70
Fax: +49 6196 497 390
-
Exemplarische Schaltpläne und weitere
Quellen