Hallo, ich suche die Einstellungen zu den Parametern des Startup vom MSP430 im gcc. Der Hintergrund ist folgender: ich möchte einen Bootloader schreiben, der den Code zuerst im internen Flash ablegt, dann an die erforderliche Stell im Flash kopiert. Der Grund ist der, dass im Flash-Schreiben kein INT kommen darf und die Datenübertragung per Funk zum MSP erfolgen muss. Ih habe bereits einen Bootloader für den M16C erfolgreich im Einsatz ud will das Prinzip jetzt auf den MSP übertragen. Frank
Ich hab sowas gemacht. Allerdings habe ich externen RAM am MSP430 dran, somit kann ich bequem zunächst die neue Firmware in den RAM übertragen und danach in den Flash. Dazu hab ich mit im Linker-Script einen Bereich für die Programmteile reserviert, die die neue Firmware aus dem RAM in den Flash bringen. Dieser Flash-Bereich wird beim Löschen vor dem neu Flashen dann ausgelassen. Wenn du keinen externen RAM hast, wirds schwierig, da musst du tricksen und das irgendwie häppchenweise übertragen....
Das ist klar, aber wie geht das genau beim MSP430 ? Dazu die Fragen : Kann man die INT-Vektortabelle verbiegen ? wo und wie ist das mit dem Linker-Script zu machen ? Ich könnte mir vorstellen einen UR-Lader generell zu verankern. Das eigentliche Programm steht in einem separaten Flash-Bereich. Die Aktualisierung erfolgt nur für das Programm (erst einmal). Dazu sind aber Startadresse (Reset-Vektor) und INT-Vektortabelle zu kennen und dem Prozessor bekannt zu machen. Beim M16C konnte man über ein Register die Position der INT-Tabelle eintragen.Im Reset-Vektor stand auch die Adresse der MAIN-Funktion.
Keiner, das geht nur mit I2C- oder SPI-RAM, auf das nur mit entsprechenden Funktionen zugegriffen werden kann.
Die Int-Vektoren sind erst mal fest und lassen sich nur schwer umbiegen. Es geht mit viel Gefrickel, da gibts von TI diese Appnote mit dem Flash Monitor ( http://focus.ti.com/general/docs/litabsmultiplefilelist.tsp?literatureNumber=slaa341 ). Im Linker-Skript kannst du das selber machen, ist quasi selbst erklärend. Die Linker-Scripte sind im GCC Ordner, nennen sich *.x Da schaust du rein, wie die Sektionen deklariert sind und kannst dir eine eigene erstellen. Bei der Funktionsdeklaration im GCC dann zum Beispiel: void FirmwareUpdate(void)__attribute__((section(".selfloader"))); Wenn die neue Section "selfloader" heißt. Ext. RAM kann man nicht nativ anschließen. Ich hatte aber genug IOs frei, um einen parallelen Low Power SRAM anzuschließen. Das hat den Vorteil, dass ich das neue Firmware File auch bequem per Funk übertragen, nochmal gegechecken kann usw. damit auch nix schief geht.
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.