Forum: Mikrocontroller und Digitale Elektronik MSP430 + Execution from RAM


von Bertram S. (bschall)


Lesenswert?

Hallo zusammen!

Ich würde gerne einen Bootloader programmieren der sich ins RAM kopiert 
und von dort aus ausgeführt wird (und ich will einen Bootloader 
schreiben der über SPI neuen Code ins Flash ladet). Ich hab auch schon 
gedacht eine Application zu schreiben die im Info Mem sitzt und von dirt 
aus agiert.
Ich sitze jetzt schon den ganzen Tag dabei und komm nicht weiter...
Vielleicht hat ja jemand ein paar gute Ideen.
Der Bootloader sollte auch von der eigentlichen Anwendung aus gestratet 
werden können.

von Christian R. (supachris)


Lesenswert?

Der MSP430 kann kein Programm vom RAM aus ausführen. Du musst den Flash 
sektorweise löschen und neu beschreiben. Aus verschiedenen Sektoren 
lassen sich Programmteile ausführen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Natürlich kann der MSP430 Programme aus dem RAM ausführen, warum sollte 
er das denn nicht? Das ist keine Harvard-Maschine wie der AVR oder 
MCS51, sondern ein klassischer von-Neumann.

Zitat aus dem MSP430x2xx Family User's Guide:
1
Reading or writing to flash memory while it is being programmed 
2
or erased is prohibited. If CPU execution is required during 
3
the write or erase, the code to be executed must be in RAM.

(Abschnitt 5.3, "Flash Memory Operation")

von Christian R. (supachris)


Lesenswert?

Oh, dann Asche auf mein Haupt. Da hab ich das wohl durcheinander 
geworfen. Ich hatte es so im Hinterkopf. Wenn es geht, müsste es auch 
eine AppNote geben, bei TI gibts doch sonst alles. Zum Beschreiben des 
Flash oder des Infomem hab ich schon ma eine gelesen, den Infomem auch 
schon selbst beschrieben. War ziemlich einfach.

von Fabio S. (codehamster)


Lesenswert?

Hallo zusammen,

Ein Redesign einer Platine steht vor der Tür, ich habe mein Problem 
schon einmal in Thread Beitrag "BSL über USB mit MSP430F449 und FT232R" 
geschildert. Inzwischen ist diese Fragestellung wieder aufgetaucht.
Im TI e2e Forum habe ich diese Fragestellung ebenfalls gestellt und 
folgende Antwort erhalten. 
http://e2e.ti.com/support/microcontrollers/msp43016-bit_ultra-low_power_mcus/f/166/p/46611/165562.aspx#165562.

Die Lösung die ich anstreben möchte wäre die 2. Variante

Ich möchte gerne einen Bootloader im RAM ausführen. Damit ich dann mit 
hoher Datenrate und grossen Packages das Flash beschreiben kann.

Ich stehe etwas auf dem Schlauch, weiss nicht wo ich anfangen soll, und 
ein entsprechendes Application Note von TI habe ich nirgends gefunden.

Nun die Frage an dieses Forum, hat jemand von euch schon einmal einen 
Bootloader für einen MSP430 geschrieben?

Ich bin für jede Hilfe dankbar.

MFG Fabio

von Fabio S. (codehamster)


Lesenswert?

niemand eine Idee?
Bin immer noch ratlos...

bin um jede Hilfe dankbar.

MFG Fabio

von ich (Gast)


Lesenswert?

Nun ich denke den Bootloader must du in den Flash packen. Dann kanst du 
den Code ,der ausgeführt werden soll in den RAM Kopieren. Entweder vom 
Flash in den Ram oder von einem externen Speichermedium. Zum Thema 
Bootloader gibt es meiner Meinung nach eine Appnote von TI wo es auch um 
das Thema BSL geht.

von siegmar (Gast)


Lesenswert?

Hallo,

Da schaue die application notes von Ti noch mal an.
Bin sicher, dort einmal ein Grundlagenartikel dazu gefunden zu haben.
Ansonsten, empfehle ich Dir die Yahoo MSP430 Group mal zu durchforsten.
Wurde dort schon oft diskutiert.
Ich selbst hatt noch nicht die Notwendigkeit.
Die firmware der MSP430 Chronos Uhr kann jetzt auch über den RF Link 
upgedated werden. Vielleicht findest Du dort ein paar Code Fragmente.
Eben fällt mir ein, der BSL Bootloader Code wurde in einer Applikation 
einmal ausführlich dargestellt.
Du kriegst das schon hin!
Halt uns auf dem Laufeneden !
Noch einen schönen Tag an Alle

Gruß
Siegmar

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

wenn du wirklich nur einen Bootloader brauchst, beschränkt sich das auf 
ein paar Zeilen Assembler, die im ROM an der Startadresse stehen müssen: 
kopiere das Userprogramm vom ROM ins RAM und springe dorthin.

Das Userprogramm muss natürlich für diese Adresse (RAM-Start) gelinkt 
sein.

Die meisten Bootloader enthalten noch einige zusätzliche Fähigkeiten, 
z.B. einen Power On Selftest, eine Grundinitialisierung des Systems, 
einen Flashprogrammer über eine serielle Schnittstelle und 
Hardware-Test-Programme zur Inbetriebnahme, aber das muss alles nicht 
sein. Notfalls solltest du mit 10 - 20 Zeilen Assembler auskommen.

Gruss Reinhard

PS ein Flashprogrammer muss eben vom Bootloader ins RAM kopiert und dort 
ausgeführt werden. Der Code dafür kann Bestandteil des Bootloaders sein, 
aber gelinkt für die RAM-Adresse. Die Daten kann man z.B. über XModem 
erhalten, dann kann man sie mit Hyperterminal schicken.

von Fabio S. (codehamster)


Lesenswert?

Danke für eure Ratschläge und Antworten.

Für einen MSP430 irgend eines Typs oder den MSP430F449
hat das noch keiner von euch gemacht?

von Christian R. (supachris)


Lesenswert?

Klar, schon gemacht, sogar über Funk, aber darf ich natürlich nicht 
rausrücken.

von Fabio S. (codehamster)


Lesenswert?

Hallo Christian,

ist mir schon klar, dass du Originalsource nicht rausrücken darfst.
Zu hören dass es realisierbar ist, bzw schon realisiert wurde stimmt 
mich schon mal froh.

ich habe diverse ApplicationNotes von TI durchgelesen und werde immer 
verwirrter.

Wie bist du vorgegangen?
Was für Unterlagen hast du zusammengesucht?

MFG Fabio

von Christian R. (supachris)


Lesenswert?

Naja, hauptsächlich den Abschnitt zum Flash Controller im User Guide des 
MSP. Dann hab ich mir den "BootLoader" in eine eigens definierte 
Flash-Sektion (im Linker-Script definiert) geschoben, die nicht gelöscht 
wird. Da am MSP430 eh ein externer RAM dran ist in der Anwendung, 
speichere ich die komplette Firmware per Funk zunächst im RAM, 
überprüfe, ob alles korrekt übertragen wurde. Dann alle Interrupts aus, 
Funk aus und aus dem geschützten Flash-Segment heraus den Loader 
ausführen. Der löscht alle anderen Flash-Segmente und schreibt dann die 
neue Firmware aus dem ext. RAM wieder rein. Klappt wunderbar.

von Fabio S. (codehamster)


Lesenswert?

ok, danke für den Input,

ich klemm mich am Wochenende nochmals dahinter.

MFG Fabio

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.