Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
software:deep:dev:crosscompiler:linker32 [2014-02-10 09:48] – graf | software:deep:dev:crosscompiler:linker32 [2014-02-10 10:35] – graf | ||
---|---|---|---|
Zeile 54: | Zeile 54: | ||
- | ===== Grösse und Offsets | + | ===== Calculate Size and Offsets ===== |
- | [{{ .: | + | [{{ .: |
- | Bevor die Memory Map fixiert werden kann, müssen noch ein paar Grössen und Offsets pro Standard-Klasse berechnet werden: | + | Before the memory map can be fixed, a couple sizes and offsets must be calculated for each class: |
- | * '' | + | * '' |
- | * '' | + | * '' |
- | ===== Systemtabelle erstellen | + | ===== Create System Table ===== |
- | Der Linker stellt für das gesamte System eine Systemtabelle zusammen. Diese muss an eine fixe Adresse geladen werden und enthält wichtige Informationen für das Laufzeitsystem. Grundsätzlich muss dabei zwischen drei Fällen unterschieden werden: | + | The linker assembles a system table for the whole system. This table must be loaded to a prefixed address in the target system and holds information for the [[..: |
- | - Das gesamte System befindet sich im Flash. | + | - The system runs from the flash |
- | - Das gesamte System befindet sich im Ram. | + | - The system runs from the RAM. |
- | - Das Basissystem befinden sich im Flash. Weitere Klassen werden nachträglich ins Ram geladen. Für diesen Fall werden zwei Systemtabellen benötigt. Im Flash befindet sich eine Systemtabelle, | + | - The base system is in the flash. Further classes are later loaded into the RAM. This case needs two system tables. The flash holds a system table which contains only classes which are present in the flash. The system table in the RAM must hold all classes. IMPORTANT |
- | \\ | + | |
- | Die Methode '' | + | |
- | Die Systemtabelle hat den folgenden Aufbau: | + | In the compiler the system table is modeled as list. as elements it uses the same blocks as for the constant block. Additionally '' |
- | [{{ .: | + | |
+ | The structure of the system table is: | ||
+ | [{{ .: | ||
Bevor die Systemtabelle zusammengestellt werden kann, muss der Klassenkonstruktor der Kernel-Klasse gefunden werden. Dazu wird der Klassennamen aus der Konfiguration geladen und anschliessend die Methode ''< | Bevor die Systemtabelle zusammengestellt werden kann, muss der Klassenkonstruktor der Kernel-Klasse gefunden werden. Dazu wird der Klassennamen aus der Konfiguration geladen und anschliessend die Methode ''< |