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.
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.
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")
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.
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
niemand eine Idee? Bin immer noch ratlos... bin um jede Hilfe dankbar. MFG Fabio
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.
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
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.
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?
Klar, schon gemacht, sogar über Funk, aber darf ich natürlich nicht rausrücken.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.