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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.