Hallo, ich möchte eine Kopie der Vectortabelle im Ram haben. Kann mir jemand einen Tipp geben, wie ich dem Linker das klar machen kann? Benutzt werden soll weiterhin die normale Tabelle, ich will nur eine Kopie! Gruss Simon
Zum Topic: die mir bekannten Linker können nichts kopieren, sie vergeben im Grunde nur Adressen. Falls man wirklich nur eine Kopie benötigt, kann man z.B. dem Linker mitteilen, dass zu Beginn des RAMs ein paar Bytes frei bleiben sollen (evtl. einfach nur RAM-Start-Adresse erhöhen) und dann im Startup-Code den Vector-Table von Beginn des Flash-Speichers an der Start des RAMs kopieren. Den Code dafür kann man sich aus der Kopierroutine für DATA kopieren und in der Kopie dann Adressen und Anzahl zu kopierender Bytes anpassen. Details sind toolchainabhängig.
OK. Ich hab mich durch "initialize by copy" im Linker Script File auf eine falsche Fährte führen lassen. Ich dachte ich kann den Linker damit anweißen dass er genau das was du vorgeschlagen hast, selbstständig im Startup Code verankert. Danke
Simon schrieb: > Ich dachte ich kann den Linker damit anweißen dass er genau das was du > vorgeschlagen hast, selbstständig im Startup Code verankert. Das ist üblicherweise auch der Fall. Ich kenne allerdings die Interna des IAR Linkers nicht und kann Dir das für dieses Produkt nicht erklären. Da IAR allerdings weise genug war, die Vektortabelle als C-Struktur anzulegen, sollte man doch mit etwas ähnlichem wie
1 | memcpy(p, &__vector_table, sizeof __vector_table) |
(ungetestet) zurechtkommen. Ist in diesem Fall meiner Meinung nach die einfachere Methode. Denk dran, das die Vektortabelle (wenn sie als solche verwendet wird) nicht an beliebigen Adressen liegen darf, sondern bestimmte Alignmentregeln eingehalten werden müssen. Viel Erfolg Marcus
hallo simon, es gibt zu deiner frage seitens iar zwei technical notes, die sollten alle fragen benatworten: http://supp.iar.com/Support/?note=27158&from=search+result http://supp.iar.com/Support/?note=11578&from=search+result gruss gerhard
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.