Hallo, ich habe die Linker Scripts für WinARM bzw GNU-ARM noch nicht so ganz verstanden: Wenn ich z.B. für den ARM uC ein C-Programm schreiben will, dass Software von einer MMC/SD Karte in einen RAM ließt, und dann im RAM die Adresse x aufrufen soll, wie muss das entsprechende Script dann grob aussehen? Wenn ich jetzt ein C-Programm für die MMC/SD Karte schreibe, was vom uC kopiert und dann ausgeführt wird, wie muss dafür das Linker Script grob aussehen? Ist die Methode, die Programme getrennt zu schrieben (2x main(), 2x kompilieren), oder sie "als ganzes" zu schreiben (1x main(), 1x kompilieren) eurer Meinung nach besser? MfG Jan Haan
Im Linker Skript "grob": RAM-Startadresse einstellen, alle Sections in die "RAM-section". Startadresse so einstellen, dass fuer "Bootloader/Applikationslader" benoetigtes RAM nicht ueberschrieben wird und evtl. noch Platz fuer Exceptions-Vectoren/Sprungadressen im RAm (remap) lassen. Startup-Script des nachgeladenen Anwendung muss auch angepasst werden. Interrupts dann am besten nur ueber SWIs und die noetigen "Betriebssystemroutinen" im "Anwendungslader"-Code integrieren. Ansonsten Exceptions-Vector im RAM beim Starutp der nachgeladenen Anwendung ueberschreiben, ist aber weniger elegant und auch fehleranfaellig. Bootloader und Anwendungen getrennt compilieren/linken sollte die bessere Methode sein - wenn die andere ueberhaupt funktioniert. Sprung zu Anwendung im einfachsten Fall ueber PC-"umbiegen". Auf die verschiedenen Stacks achten. Martin Thomas
Kennnt jemand ne gute Quelle, wo steht, was der Compiler/Linker standartmäßig für Sektionen (.text, .data, etc) wofür verwendet?
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.