Forum: Compiler & IDEs AppCode would overwrite boot-code


von summer (Gast)


Lesenswert?

Hallo,

ich benutze Codesourcery + Eclipse für den ARM7 (LPC2148) und habe jetzt 
erstmals folgendes Problem.

Nach dem Zusammenlegen von zwei C Quelltextteilen bekomme ich die
Meldung: "AppCode would overwrite boot-code".

Diese Meldung kommt aus  LPC2148_flash.ld (...LPC2368 from Chan with
modifications by Martin Thomas)

Genauer steht da :

LAST_USED_FLASH_ADDRESS = LOADADDR(.data) + (_data_end_ - 
_data_start_);
ASSERT(LAST_USED_FLASH_ADDRESS < USERAPP_START_ADDRESS , "AppCode would 
overwrite boot-code");
USERAPP_MAX_ADDRESS = ORIGIN(ROM) + LENGTH(ROM);

Jetzt hätte ich gerne gewusst, wie ich das aufschlüsselen kann. Bisher 
hat
alles wunderbar geklappt. Nun müsste ich aber zum Beheben des Problem 
wissen, wo man die Addressen findet auf die sich die Berechnug bezieht.

Hat jemand eine Idee dazu ?

Danke.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

> LAST_USED_FLASH_ADDRESS = LOADADDR(.data) + (_data_end_ -
> _data_start_);

Die letzte benutzte Flash-Adresse wird berechnet, unter der Annahme, 
dass die Initalwerte von Variablen zuletzt im Flash abgelegt sind. 
LOADADDR(.data) ist die erste Adresse, die .data Output-Section, zu 
dieser wird die Größe der Section addiert.

> ASSERT(LAST_USED_FLASH_ADDRESS < USERAPP_START_ADDRESS , "AppCode would
> overwrite boot-code");

Falls die in der vorherigen Zeile errechnetet Adresse >= 
USERAPP_START_ADDRESS bricht der Linker ab.

So richtig erinnern kann ich mich an der Code gerade nicht aber ich habe 
das wohl vor ein paar Jahren verbrochen für irgend einen speziellen 
Bootloader. Falls kein Bootloader zum Einsatz kommt, kann man die 
Prüfung einfach rauslöschen. Der Linker prüft bei einfachen Anwendungen 
ohnehin anhand der LENGTH-Angaben in der MEMORY-section des 
Linkerscripts, ob ausreichend Platz zur Verfügung steht.

von summer (Gast)


Lesenswert?

Ja, super , klappt!

Nein, es ist kein Bootloader im Einsatz. Hatte das Script schon
unverändert mehrere Jahren im Einsatz ohne Problem (obwohl ich es als
ganzes sowieso nicht verstehe). Das was normalerweise raus kommt
funktioniert jedoch prima. Hoffe auch weiterhin!!

Danke sehr, hat mit sehr geholfen.

Grüße

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.