Forum: Compiler & IDEs Segmente in AVR GCC


von Thorsten (Gast)


Lesenswert?

Hallo,

ich habe ein Design mit externen RAM und einem Memory mapped Device.
µC ist ein mega2561.

Also habe ich internes RAM von 0x200 bis 0x21ff. Mein externes RAM
ist von 0x2200 bis 0x7fff erreichbar. Mein Memory mapped Device ab 
0x8000.

Den Stack initialisiere nun ich auf 0x10ff im internen RAM. Ab 0x1100
definiere ich die .data Section. Die .bss Section beginnt dann 
automatisch am Ende der .data Section.

So weit kein Problem; es läuft so wie ich wünsche.

Nun möchte ich aber, dass für den Linker der Bereich ab 0x8000 tabu ist. 
Am allerliebsten wäre mir eine Fehlermeldung wie "section .bss not large 
enough" oder so. Ich habe testweise ab 0x8000 eine eigene Section 
definiert, dies hindert den Linker aber nicht daran, die .bss Sektion 
darüber hinaus wachsen zu lassen.

Kann man soweis vernünftig lösen oder muss ich selber im Listfile 
kontrollieren, ob meine .bss Sektion in den Bereich des memory mapped 
device läuft?


Gruß
Thorsten

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Du müsstest ein angepasstes Linkerscript schreiben, da das
standardmäßige maximal 64 KiB RAM annimmt.

Da das Ganze aber ohnehin einen Programmierfehler bedeutet,
kannst du stattdessen auch nach dem Compilieren den Resourcen-
Verbrauch mit avr-size überwachen und das ggf. mit einem Script
zu einem Abbruch führen lassen.

von Thorsten (Gast)


Lesenswert?

Nagut, die Kontrolle mit avr-size gestaltet sich recht einfach.

Vielen Dank für die Idee!

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.