Forum: Compiler & IDEs MSP430 Startup


von Frank (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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....

von Frank (Gast)


Lesenswert?

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.

von Sebastian (Gast)


Lesenswert?

Externer RAM am MSP430? Welcher MSP430 hat denn Daten- und Adressbus 
herausgeführt?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Keiner, das geht nur mit I2C- oder SPI-RAM, auf das nur mit 
entsprechenden Funktionen zugegriffen werden kann.

von Christian R. (supachris)


Lesenswert?

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