Benutzer-Werkzeuge

Webseiten-Werkzeuge


softwarebausteine:bidib-interface

BiDiB-Interface

Das BiDiB-Inferface besteht aus zwei Teilen: der Lowlevel-Zugang zum Bus mit der Kontrolle des Bustreibers und den Ein-Ausgangsfifos sowie dem Protokollteil mit der Nachrichtenauswertung und -erstellung.

Lowlevel-Interface

Das lowlevel-Interface (also die Input und Outputroutinen) ist in bidib_client.c realisiert, in bidib_client_hardware.h wird festgelegt, welche Ports benutzt werden. Das Interface ist komplett interruptbasiert und vom Hauptprogramm über Fifos entkoppelt. Den Kontakt mit dem entsprechenden Busmaster hält das Interface allein, erst wenn Nachrichten eintreffen, werden diese an den Protokollteil übergeben. BiDiB stellt strenge Anforderungen an die Reaktionszeit eines Knotens, der Interrupt-Level des Interfaces darf nicht länger als 8µs blockiert sein.

Das Interface kann entweder 'Schmalspur' sein (es werden kleine Buffer verwendet, BIDIB_TX_BUF_USE_AHEAD = 0) oder über eine größere Fifostruktur am Ausgang verfügen (BIDIB_TX_BUF_USE_AHEAD = 1). Größere Fifo entkoppeln die Prozesse stärker und der Datendurchsatz steigt, aber auch der Speicherverbrauch ist größer. Große Fifos sind nützlich z.B. bei Knoten mit hohem Datenaufkommen wie z.B. ein Hub oder bei Belegtmeldern.

Protokollteil

In bidib_client_parser.c, werden die Nachrichten ausgewertet (process_bidib_message) und abgesendet (alle bidib_send_XXX routinen).

softwarebausteine/bidib-interface.txt · Zuletzt geändert: 2014/09/01 12:34 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki