14.01.2015 Aufrufe

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

4 Basisschicht e<strong>in</strong>es Verwalters<br />

Architektur .text .rodata .data .bss Total<br />

Atmel AVR ATmega 566 0 20 0 586 Byte<br />

Renesas H8/300 248 20 0 0 268 Byte<br />

Intel x86 316 20 0 0 336 Byte<br />

Tabelle 4.6: Größe e<strong>in</strong>es m<strong>in</strong>imalen Fernwartungsmoduls (RCM) <strong>in</strong> Byte<br />

In dieser Tabelle ist die Größe e<strong>in</strong>es m<strong>in</strong>imalen Fernwartungsmoduls dargestellt. Auch hier ist die Version für AVR-<br />

Mikrocontroller deutlich größer, da zusätzliche Funktionen zum Beschreiben des Flashspeichers notwendig s<strong>in</strong>d. Das<br />

Zwischenspeichern e<strong>in</strong>er Flashseite wird <strong>in</strong> dieser Implementierung auf dem Stack durchgeführt, sodass der Speicher<br />

hierfür nicht <strong>in</strong> dieser Tabelle auftaucht.<br />

Im Rahmen e<strong>in</strong>er Studienarbeit [Oec07] wurde außerdem e<strong>in</strong> RCM für das Betriebssystem T<strong>in</strong>yOS<br />

entwickelt. Dieses ist vom Funktionsumfang mit dem komfortablen Fernwartungsmodul aus der ersten<br />

Tabelle vergleichbar. Es wurden jedoch ke<strong>in</strong>e Optimierungen zur Größenreduktion durchgeführt und<br />

kann somit nicht direkt verglichen werden. Es belegt 2789 Byte Speicher.<br />

4.5.8 Schnittstellenbeschreibung und Typ<strong>in</strong>formationen<br />

Zur Durchführung von Fernaufrufen und zum Anpassen von Datenstrukturen beim Aktualisieren<br />

und Ersetzen von Modulen müssen Typ<strong>in</strong>formationen vorliegen, um b<strong>in</strong>ären Daten e<strong>in</strong>e Struktur<br />

zuzuordnen. Diese Informationen können zum großen Teil aus Debug<strong>in</strong>formationen gewonnen werden<br />

(siehe Abschnitt 4.2.6). In der vorliegenden Arbeit werden DWARF-Debug<strong>in</strong>formationen ausgewertet,<br />

da dieses Format das Standarddebugformat für ELF-Objektdateien darstellt.<br />

4.5.8.1 Verarbeiten von DWARF-Debug<strong>in</strong>formationen<br />

Das Auswerten der DWARF-Debug<strong>in</strong>formationen aus den ELF-Dateien wird durch e<strong>in</strong> Objekt vom<br />

Typ DwarfLoader übernommen. Beim E<strong>in</strong>lesen der Objektdatei werden unbekannte Sektionen an<br />

dieses Objekt übergeben, welches prüft, ob es sich um Debug<strong>in</strong>formationen handelt. Für das Auswerten<br />

der DWARF-Informationen wird zunächst die Sektion mit dem Namen .debug_abbrevbenötigt.<br />

Sie enthält Informationen über den genauen Aufbau der Sektion .debug_<strong>in</strong>fo. Dort wiederum<br />

s<strong>in</strong>d die Informationen zu den e<strong>in</strong>zelnen Programmelementen abgespeichert. Der genaue Aufbau der<br />

DWARF-Informationen ist für die weitere Arbeit nicht relevant, daher wird an dieser Stelle nicht weiter<br />

darauf e<strong>in</strong>gegangen.<br />

Das DwarfLoader-Objekt wird mit dem ELFFile-Objekt verknüpft, da sich die Debug<strong>in</strong>formationen<br />

auf den Inhalt e<strong>in</strong>er Objektdatei beziehen. So stehen die Informationen bei der Modulerzeugung<br />

zur Verfügung. Der ELFSectionExtractor, der Module aus e<strong>in</strong>er Objektdatei<br />

erzeugt, greift auf das DwarfLoader-Objekt zurück, um jedem erzeugten Modul Typ<strong>in</strong>formationen<br />

zuzuordnen. Für jedes Funktionsmodul wird e<strong>in</strong> Objekt von Typ Subprogramm erstellt, welches<br />

die Schnittstellenbeschreibung der Funktion <strong>in</strong> e<strong>in</strong>em DWARF-unabhängigen Format speichert. Für<br />

Datenmodule wird e<strong>in</strong> Objekt vom Typ DataType erstellt und zugeordnet (siehe Abbildung 4.22).<br />

Im Rahmen dieser Zuordnung werden auch zusätzliche Debug<strong>in</strong>formationen ausgewertet. Besonders<br />

hilfreich ist beispielsweise die Information, ob e<strong>in</strong>e Funktion <strong>in</strong> e<strong>in</strong>e andere Funktion <strong>in</strong>tegriert wurde<br />

(<strong>in</strong>l<strong>in</strong>ed). In diesem Fall wird e<strong>in</strong>e spezielle Abhängigkeit vermerkt, da die <strong>in</strong>tegrierte Funktion nicht<br />

ohne Weiteres ausgetauscht werden kann, ohne die umgebende Funktion neu zu erstellen.<br />

Die Schnittstellenbeschreibung <strong>in</strong> Form des Subprogramm-Objekts liefert den Datentyp des<br />

Rückgabewerts und e<strong>in</strong>e Liste mit Informationen über die Parameter als Feld von DataComponent-<br />

Objekten. Diese Objekte enthalten wiederum den Namen, den Datentyp und e<strong>in</strong>e Ortsangabe zu e<strong>in</strong>em<br />

88

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!