Hallo, vieleicht kann mir jemand von Euch hier im Forum weiterhelfen. Ich habe mir einen Sensor gebaut, in dem ein MSP430 arbeitet. Da der Sensor draußen angebracht weden soll, will ich ihn vergießen, jedoch später trotzdem noch die Möglichkeit haben, die Firmware zu ändern. Über den im MSP430 standardmäßig integrierten Bootstrap-loader sollte das eigentlich funktionieren. Mein Problem ist jetzt nur, dass ich an dem Sensorstecker nur noch max. 1 Leitung frei habe, alle BSL-Adapter, die ich bislang gefunden habe, jedoch mindestens 2 Leitungen (zusätzlich zur RS232 Schnittstelle) benötigen. Gibt es auch eine andere Möglichkeit, den BSL zu aktivieren oder kann man die Standardschaltung so umstricken, dass man mit einer nach außen geführten Leitung auskommt?
Also ich nehme mal an, dass Du mit "RS232 Schnittstelle" die beiden BSL_TX und BSL_RX Signale meinst?! Wenn ja, dann brauchst Du keine weiteren Pins mehr, denn Du kannst den BSL per Software starten. Schau Dir die SLAA089.pdf von TI an. Die Frage ist dann nur, wie Du dem µC sagst, er soll jetzt die Software-BSL-Start-Routine starten?
Hmm...genau an dem Punkt bin ich auch hängen geblieben. Ich möchte auch den BSL aus der Software heraus starten, hab´s aber nicht geschafft, mit der in der SLAA089 geschriebenen Befehlsfolge landet der MSP im Nirvana. Komisch. Ansonsten wäre Spy-Bi-Wire vielleicht eine Alternative.
Was heißt bei Dir, er landet im Nirvana? Nach Ausführung der Befehlsfolge befindet sich der µC im BSL-Modus, sprich er reagiert nur noch auf Befehle, die über den BSL_RX-Pin reinkommen. Die "normale" Applikation wird nicht mehr ausgeführt! Oder was meinst Du?
Schön, wenn es so wäre. Nachdem ich an Adresse 0x0C00 gesprungen bin, reagiert er nicht auf BSL-Kommandos, und macht nach einer Weile meistens einen Neustart, manchmal döst er bei irgendwelchen Adressen ganz unten rum. Irgenwas scheint da noch nicht zu stimmen. Ich versuche so in den BSL zu kommen:
1 | void EnterBootloader(void) |
2 | {
|
3 | BCSCTL2 = 0x00; |
4 | WRITE_SR(0); |
5 | asm("mov #3072, R15"); |
6 | asm("br R15"); |
7 | |
8 | }
|
Du darfst ja auch nicht nach 0x0C00 springen, sondern an die Adresse, die in 0x0C00 steht! daher ja auch: br &0x0C00
Achja, stimmt, das hatte ich falsch verstanden. Irgendwie rödelt er jetzt zumindest schon mal weiter. Mal sehn, ob ich Kontakt zum Bootloader bekomme.
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.