Zweefanimatie

Wat zijn linkadressen en running-adressen in embedded

Gerelateerde video's

Neem contact met ons op

WhatsApp / Telefoon

Wat zijn linkadressen en running adressen

Linkadres en running address: kunnen hetzelfde of verschillend zijn. Voor positie-gerelateerde code moet het lopende adres tijdens de uiteindelijke uitvoering en het linkadres tijdens het compileren en linken hetzelfde zijn, anders treedt er een fout op. In ons vorige bare metal programma werd -Ttext 0x0 gebruikt in de Makefile
Het linkadres is 0x0. Dit betekent dat we denken dat dit programma in de toekomst zal worden uitgevoerd op het geheugenadres 0x0.
Maar eigenlijk is het adres waarop we draaien 0xd0020010 (we gebruiken het downloadadres dat is opgegeven bij het downloaden met dnw.). Deze twee adressen zien er verschillend uit, maar zijn eigenlijk hetzelfde. Dit komt omdat de S5PV210 interne mapping heeft gedaan en het SRAM heeft toegewezen aan het 0x0 adres.

分清楚这两个概念
链接地址:链接时指定的地址( 指定方式为: Makefile中用-Ttext,或者链接脚本)N
Maak een duidelijk onderscheid tussen deze twee concepten
Koppelingsadres: het adres dat is opgegeven bij het koppelen (opgegeven door: gebruik van -Ttext in Makefile, of koppelingsscript) N

Lopend adres: Het eigenlijke lopende adres van het programma (specificatiemethode: het wordt bepaald door de locatie in het geheugen waar het tijdens de eigenlijke uitvoering wordt geladen)

Wat bepaalt het runtime-adres?

Het runtime-adres wordt bepaald door de runtime. Als S is gecompileerd en gelinkt, kan het runtime-adres niet absoluut worden bepaald.

Wat bepaalt het linkadres?

Het linkadres wordt door de programmeur doorgegeven via de Makefile-Tekst tijdens het compileren en koppelen.
xxx of gespecificeerd in het koppelingsscript. Programmeurs voorspellen van tevoren de uitvoeringsvereisten van hun programma, hebben een gewenst uitvoeringsadres en gebruiken dit adres als linkadres. Bijvoorbeeld: 1. Toepassingsprogramma's in Linux. gcc hello.c -.
Hallo, het standaard linkadres dat op dit moment wordt gebruikt is 0x0, dus de applicatie is gelinkt aan het 0-adres. Omdat de applicatie draait in een proces van het besturingssysteem, heeft de applicatie in dit proces exclusieve toegang tot de 4G virtuele adresruimte. Dus applicaties kunnen allemaal linken naar adres 0 omdat elk proces start vanaf adres 0. (Je kunt 0 gebruiken zonder het linkadres op te geven tijdens het compileren)

Gerelateerde trefwoorden:

4G DTU

    Neem contact met ons op