Was sind Link-Adressen und laufende Adressen in eingebetteten

Was sind Link-Adressen und Laufadressen?

Link-Adresse und Laufadresse: Diese können identisch oder unterschiedlich sein. Bei positionsbezogenem Code müssen die Laufadresse während der endgültigen Ausführung und die bei der Kompilierung und Verknüpfung angegebene Link-Adresse identisch sein, andernfalls tritt ein Fehler auf. In unserem vorherigen Bare-Metal-Programm wurde im Makefile „-Ttext 0x0“ verwendet.
Als Link-Adresse wird 0x0 angegeben. Das bedeutet, dass wir davon ausgehen, dass dieses Programm künftig an der Speicheradresse 0x0 ausgeführt wird.
Tatsächlich ist die Adresse, an der wir ausführen, jedoch 0xd0020010 (wir verwenden die beim Herunterladen mit dnw angegebene Download-Adresse). Diese beiden Adressen sehen zwar unterschiedlich aus, sind aber tatsächlich identisch. Das liegt daran, dass der S5PV210 eine interne Zuordnung vorgenommen und das SRAM auf die Adresse 0x0 abgebildet hat.

Diese beiden Begriffe klar voneinander abgrenzen
Link-Adresse: Die beim Verlinken angegebene Adresse (Angabe: mit -Ttext im Makefile oder über ein Verlinkungsskript)N
Unterscheiden Sie diese beiden Begriffe klar voneinander
Link-Adresse: Die beim Verknüpfen angegebene Adresse (festgelegt durch: Verwendung von -Ttext im Makefile oder im Verknüpfungsskript) N

Laufzeitadresse: Die tatsächliche Laufzeitadresse des Programms (Angabemethode: Sie wird dadurch bestimmt, an welche Stelle im Speicher das Programm während der tatsächlichen Ausführung geladen wird)

Wovon hängt die Laufzeitadresse ab?

Die Laufzeitadresse wird von der Laufzeitumgebung festgelegt. Bei der Kompilierung und dem Linken von S lässt sich die Laufzeitadresse nicht eindeutig bestimmen.

Wovon hängt die Link-Adresse ab?

Die Link-Adresse wird vom Programmierer während des Kompilierungs- und Verknüpfungsprozesses über das Makefile-Ttext übergeben.
xxx oder im Link-Skript angegeben. Programmierer legen die Ausführungsanforderungen ihres Programms im Voraus fest, bestimmen eine gewünschte Ausführungsadresse und verwenden diese Adresse als Link-Adresse. Beispiel: 1. Anwendungsprogramme unter Linux. gcc hello.c -.
Hallo, die derzeit verwendete Standard-Link-Adresse lautet 0x0, sodass die Anwendung an die Adresse 0 gelinkt wird. Da die Anwendung in einem Prozess des Betriebssystems läuft, verfügt sie in diesem Prozess über exklusiven Zugriff auf den virtuellen 4-G-Adressraum. Daher können alle Anwendungen an die Adresse 0 verknüpft werden, da jeder Prozess bei der Adresse 0 beginnt. (Sie können beim Kompilieren 0 verwenden, ohne die Verknüpfungsadresse anzugeben.)

Verwandte Stichwörter:

4G DTU

    Über mich
    e87d0ef219292bb40d6f120e7d321bcb?s=150&d=mp&r=g
    Weitere Beiträge