DE102005011756A1 - Watchdog - Google Patents

Watchdog Download PDF

Info

Publication number
DE102005011756A1
DE102005011756A1 DE200510011756 DE102005011756A DE102005011756A1 DE 102005011756 A1 DE102005011756 A1 DE 102005011756A1 DE 200510011756 DE200510011756 DE 200510011756 DE 102005011756 A DE102005011756 A DE 102005011756A DE 102005011756 A1 DE102005011756 A1 DE 102005011756A1
Authority
DE
Germany
Prior art keywords
watchdog
bus
server
card
display
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE200510011756
Other languages
English (en)
Inventor
Axel Dipl-Ing Urbanski
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to DE200510011756 priority Critical patent/DE102005011756A1/de
Publication of DE102005011756A1 publication Critical patent/DE102005011756A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Es ist erkennbar, dass eine durchgängige Konfiguration, Steuerung und Hardwareüberwachung von "headless" betriebenen Servern und Appliances bei Anwendung der herkömmlichen Verfahren mit erheblichem Aufwand verbunden ist oder sich aufgrund von Systemrestriktionen nicht umsetzen lässt. DOLLAR A Auf dieser Basis wurden Überlegungen für die Entwicklung einer auf systemnaher Hardware basierenden Steuereinheit, insbesondere einer Watchdog, dargestellt. Diese soll sich zeitlich steuern oder fernbedienen lassen. Die Steuereinheit soll via SMBus einen x-86 Rechner einschalten können, die Reset- und SMI-Funktionen ausführt, sowie diese Funktionen gegen versehentlichen Zugriff schützt. Mit einem Tastenfeld und einem LCD-Display sollen Betriebsdaten dargestellt, überwacht und eingestellt werden können. DOLLAR A In nächster Zeit werden voraussichtlich erste Server mit IPMI 2.0 erscheinen. Die Multimasterfähgikeit lässt den Betrieb mehrerer Controller zu. Entwürfe für IPMI und IPMB kommen aus der LM-Sensor Gruppe. Es würde ein universeller Board-Management-Controller (BMC) entstehen, der die Verwaltung eines Server-Parks aus der Ferne erlaubt und vereinfacht. Dabei würde das jetzige Modul um einen Mikrocontroller zu ergänzen sein.

Description

  • 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;
    Figure 00070001
    • Quelle: Axel Urbanski
  • 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
    Figure 00080001
    Fig. 4 Bit transfer
    • Quelle: Philips Datenblatt PCF8573
    Abbildung 3: Start- und Stop-Bedingung
    Figure 00090001
    Fig. 5 Definition of start and stop conditions.
    • Quelle: Philips Datenblatt PCF8573
  • Neben der seriellen Kommunikation besitzt der I2C Bus weitere Vorteile, darunter die testgelegte Adressierung. Für die I2C 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 I2C Bus
    Figure 00090002
    • 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
    Figure 00100001
    • 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 I2C 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
    Figure 00110001
    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
    Figure 00140001
    • 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
    Figure 00160001
    • Quelle: Axel Urbanski
  • 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)
    Figure 00170001
    • Quelle: Axel Urbanski
  • 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
    Figure 00200001
    • Quelle: Axel Urbanski
  • 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 I2C-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
    Figure 00230001
    • 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:
    Figure 00240001
  • 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
    Figure 00250001
  • 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
    Figure 00260001
    • Quelle: Axel Urbanski
  • 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
    Figure 00270001
    • Quelle: Axel Urbanski
  • 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
    Figure 00270002
    • Quelle: Axel Urbanski
  • 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.
  • Figure 00290001
  • 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
    Figure 00300001
    • 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.
  • Figure 00300002
  • 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.
  • Figure 00310001
  • 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
    Figure 00340001
  • 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

Claims (11)

  1. Watchdog zur Installation, Konfiguration und Hardwareüberwachung eines Servers, dadurch gekennzeichnet, dass die Watchdog ohne Belegung eines PCI- oder eines PCI-X- oder ISA-Steckplatzes in den Server integrierbar ist.
  2. Watchdog zur Installation, Konfiguration und Hardwareüberwachung eines Servers, dadurch gekennzeichnet, dass die Watchdog nach Anspruch 1 über dem I2C-Bus mit den Systemkomponenten Daten austauscht.
  3. Watchdog zur Installation, Konfiguration und Hardwareüberwachung eines Servers, dadurch gekennzeichnet, dass die Watchdog nach Anspruch 1 über dem SMB-Bus mit den Systemkomponenten Daten austauscht.
  4. Watchdog zur Installation, Konfiguration und Hardwareüberwachung eines Servers, dadurch gekennzeichnet, dass die Watchdog via IPMI-Protokoll über den SMBus mit dem oder anderen Server kommuniziert.
  5. Watchdog zur Installation, Konfiguration und Hardwareüberwachung eines Servers, dadurch gekennzeichnet, dass die Watchdog mit einer Standbyspannung versorgt wird
  6. Watchdog zur Installation, Konfiguration und Hardwareüberwachung eines Servers, dadurch gekennzeichnet, dass die Standbyspannung der Watchdog aus dem Anschluss „Wake On Lan" entnommen wird.
  7. Watchdog zur Installation, Konfiguration und Hardwareüberwachung eines Servers, dadurch gekennzeichnet, dass die Standbyspannung der Watchdog aus dem Anschluss „Wake On Modem" entnommen wird
  8. Watchdog zur Installation, Konfiguration und Hardwareüberwachung eines Servers, dadurch gekennzeichnet, dass die Standbyspannung der Watchdog direkt aus dem Netzteil entnommen wird.
  9. Watchdog zur Installation, Konfiguration und Hardwareüberwachung eines Servers, dadurch gekennzeichnet, dass die Watchdog über ein Tastenfeld als User-Interface ergänzt werden kann, das ein Display, zumindest aber LEDs und Taster aufweist.
  10. Watchdog zur Installation, Konfiguration und Hardwareüberwachung eines Servers, dadurch gekennzeichnet, dass das Tastenfeld der Watchdog über den SMBus angesprochen wird.
  11. Watchdog zur Installation, Konfiguration und Hardwareüberwachung eines Servers, dadurch gekennzeichnet, dass das Display der Watchdog über den SMBus angesprochen wird.
DE200510011756 2005-03-15 2005-03-15 Watchdog Ceased DE102005011756A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE200510011756 DE102005011756A1 (de) 2005-03-15 2005-03-15 Watchdog

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200510011756 DE102005011756A1 (de) 2005-03-15 2005-03-15 Watchdog

Publications (1)

Publication Number Publication Date
DE102005011756A1 true DE102005011756A1 (de) 2007-04-05

Family

ID=37852368

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200510011756 Ceased DE102005011756A1 (de) 2005-03-15 2005-03-15 Watchdog

Country Status (1)

Country Link
DE (1) DE102005011756A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011013833A1 (de) * 2011-03-14 2012-09-20 Continental Automotive Gmbh Anzeigevorrichtung

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011013833A1 (de) * 2011-03-14 2012-09-20 Continental Automotive Gmbh Anzeigevorrichtung
DE102011013833B4 (de) * 2011-03-14 2014-05-15 Continental Automotive Gmbh Anzeigevorrichtung
US9146140B2 (en) 2011-03-14 2015-09-29 Continental Automotive Gmbh Display device having a stepper motor and a watchdog timer

Similar Documents

Publication Publication Date Title
DE60109065T2 (de) Dienstprozessor und system und verfahren mit einem dienstprozessor
DE60030278T2 (de) Tastatur-/video-/mausverteiler für mehrfachnutzer
DE112013007752B3 (de) Hochleistungsverdrahtungs-Bitübertragungsschicht
DE102008062692B4 (de) Eingebettetes Mikrocontrollersystem und Verfahren zur Konfiguration eines eingebetteten Mikrocontrollersystems mit gesteuertem Schaltmodus
DE3856067T2 (de) Datenprozessor mit einer Unterbrechungsfunktion
DE112016003949T5 (de) Webbasierte programmierumgebung für eingebettete geräte
DE102007009300B4 (de) Rechnersystem und Verfahren zum Betreiben eines Rechnersystems
DE112010003136T5 (de) Verfahren und Systeme für eine Zwischenelementplatine
DE102020102783A1 (de) Verfahren und einrichtungen zum verbessern einer leistungsdatensammlung einer hochleistungsberechnungsanwendung
WO2011147580A1 (de) Mehrprozessor -computersystem mit einer mehrzahl von arbeitsprozessoren und einer mehrzahl von überwachungsprozessoren zur überwachung der arbeitsprozessoren
DE102016108666A1 (de) Zeitgeber für Peripheriefunktionswächter
DE102013113262A1 (de) Auslöser-Leitwegeinheit
DE102020134018A1 (de) Technologie zum ermöglichen sicherer und belastbarer wiederherstellung von firmware-daten
DE102018132807A1 (de) Anwendungsprozessor, elektronischer Fahrzeugprozessor und Berechnungsvorrichtung mit Anwendungsprozessor
DE112021000448T5 (de) Elektrische und logische isolierung für systeme auf einem chip
DE112011100854B4 (de) Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren
EP1537482A2 (de) Verfahren und schaltungsanordnung zur synchronisation synchron oder asynchron getakteter verarbeitungseinheiten
DE102021101458B4 (de) Master- und Slave-Prozessoren zum Konfigurieren von Subsystemen
DE3782087T2 (de) Systemverwaltungsgeraet fuer ein mehrprozessorsystem.
DE4429764C2 (de) Zeitgebereinrichtung für einen Mikrocomputer
DE102005011756A1 (de) Watchdog
DE112019000460T5 (de) Adapter für direkten speicherzugriff
DE19842879A1 (de) Mikrocomputer
DE4342220A1 (de) Rechneranordnung und Leistungsverwaltungsverfahren bei einer Rechneranordnung
DE19720806A1 (de) Systemsteuerung für ein Computersystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
OR8 Request for search as to paragraph 43 lit. 1 sentence 1 patent law
8131 Rejection
8131 Rejection