mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 + Execution from RAM


Autor: Bertram S. (bschall)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
Reading or writing to flash memory while it is being programmed 
or erased is prohibited. If CPU execution is required during 
the write or erase, the code to be executed must be in RAM.

(Abschnitt 5.3, "Flash Memory Operation")

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fabio S. (codehamster)
Datum:

Bewertung
0 lesenswert
nicht 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/msp4301....

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

Autor: Fabio S. (codehamster)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
niemand eine Idee?
Bin immer noch ratlos...

bin um jede Hilfe dankbar.

MFG Fabio

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: siegmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fabio S. (codehamster)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian R. (supachris)
Datum:

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

Autor: Fabio S. (codehamster)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fabio S. (codehamster)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, danke für den Input,

ich klemm mich am Wochenende nochmals dahinter.

MFG Fabio

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.