Hallo Ich möchte den externen Speicher der an einem Mega256 hängt für einige größere Variablen benutzen. Der Speicher der Variabelen sollen aber vom Compiler vergeben werden. Hierzu habe ich schon herrausgefunden, das man eine neue Speichersection anlegen muss, und dann die Section der Variable als Attribute übergibt. Siehe Beitrag "Variable an bestimmter Stelle im Ram" allerdings funktioniert der Link nicht mehr wie man die Section anlegen muss. Kann mir da mal jemand weiterhelfen? Danke Steffen
Hi Danke für deine Antwort. Mittlerweile habe ich mich schon selbst durch die Thematik gewühlt. für alle die selbiges Problem haben hier mal die Kurzversion unter Benutztung von WinAVR. 1. neues Dateiatribute definieren
1 | #define XRAM __attribute__((section (".xram")))
|
2. Variable anlegen
1 | unsigned char Test XRAM; |
3. eigenes Linkerscript erstellen, unter WinAVR liegen die Scripte in ????\WinAVR\avr\lib\ldscripts\ ???? ist das Installationsverzeichnis von WinAVR. Hier das entsprechende Script kopieren (für den Mega256 ist das avr6.x), z.B. nach MeinScript.x 4. Einträge ins Script in den Bereich MEMORY den folgenden Eintrag hinzufügen xram (rw!x) : ORIGIN = 0x808000, LENGTH = 32K bei meiner Hardware bieginnt der 32k SRAM bei Abresse 0x8000 und geht bis zum Ende, sprich 0xFFFF in den Bereich SECTIONS den folgenden Eintrag hinzufügen /* eigene Section im externen RAM. */ .xram (NOLOAD) : { *(.xram*) } > xram NOLOAD muss hier rein, da AVR-DUDE auf den ext. RAM nicht zugreifen kann und somit eine Fehlermeldung ausgeben würde 5. dann dem Linker mitteilen, das er das erstellte Script benutzen soll entweder dem Linker direkt übergeben mit -T ????/WinAVR/avr/lib/ldscripts/MeinScript.x oder per Übergabe vom Compiler -Wl,-T ????/WinAVR/avr/lib/ldscripts/MeinScript.x bei mir funktioniert das bestens, sollten allerdings hier Fehler enthalten sein, berichtigt mich bitte Gruß Steffen
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.