Hallo,
ich bin dabei über das BSLDemo2 von TI ein Firmwareupdate über die UART
zu machen. Soweit funktioniert auch alles, nur das nach einem BSL Update
auch die Kalibrierungsdaten im Infomemory gelöscht sind. Kann man dies
irgend wie verhindern?
Die Firmware selber läuft nach dem Update, nur stimmen halt die
Geschwinddigkeiten nicht mehr.
Danke für eure Hilfe...
Sven schrieb:> Schau Mal hier: http://www.livediesel.de/?p=615
ok, ich könnte damit zumindest neu kalibrieren.
Bedeutet dies aber, dass bei einem BSL Update immer die
Kalibrierungsdaten gelöscht werden?
Frank B. schrieb:> Bedeutet dies aber, dass bei einem BSL Update immer die> Kalibrierungsdaten gelöscht werden?
Das sollte nicht der Fall sein, da ist irgendwas kaputt. Die
Info-Segmente im Flash, in denen die Kalibrierdaten stehen, sollten
normalerweise nicht beschrieben werden -- das ist schließlich ihr Sinn.
Wenn aber Dein Programm auch Daten für den Adressbereich im Info-Segment
enthält, dann werden auch die Info-Segmente überschrieben.
Du solltest Dir mal die Datei näher ansehen, die Du dem BSL vorwirfst.
Rufus Τ. F. schrieb:> Frank B. schrieb:>> Bedeutet dies aber, dass bei einem BSL Update immer die>> Kalibrierungsdaten gelöscht werden?>> Das sollte nicht der Fall sein, da ist irgendwas kaputt. Die> Info-Segmente im Flash, in denen die Kalibrierdaten stehen, sollten> normalerweise nicht beschrieben werden -- das ist schließlich ihr Sinn.>> Wenn aber Dein Programm auch Daten für den Adressbereich im Info-Segment> enthält, dann werden auch die Info-Segmente überschrieben.>> Du solltest Dir mal die Datei näher ansehen, die Du dem BSL vorwirfst.
Mein Programm toggelt zum Testen einfach nur ein Pin. Ansonsten steht da
nichts weiter drin. Die Datei, die ich dem BSL übergebe sieht meiner
Meinung nach auch ok aus:
@2100
31 40 00 21 B0 12 66 21 B0 12 90 21 B2 40 80 5A
20 01 C2 43 56 00 D2 42 FF 10 57 00 D2 42 FE 10
56 00 32 D2 F2 D0 20 00 53 00 B2 40 42 A5 2A 01
F2 43 22 00 F2 43 21 00 D2 D3 1A 00 D2 D3 19 00
F2 40 30 00 1B 00 F2 D0 80 00 61 00 F2 40 34 00
62 00 C2 43 63 00 E2 42 64 00 D2 C3 61 00 D2 D3
01 00 32 D2 30 41 B2 40 A0 5A 20 01 B0 12 0C 21
F2 D0 80 00 22 00 F2 E0 80 00 21 00 3F 40 3E 0D
3E 40 03 00 3F 53 3E 63 FD 2F F5 3F 30 40 94 21
30 40 8C 21 FF 3F 00 13
@FFE4
96 21
@FFFE
00 21
q
Hi,
ich bin mir nicht sicher wie der BSL Flasher das macht, ich glaube man
konnte beeinflussen was er überschreibt.
Da ich mir da auch immer nicht sicher war und ich nix kaputt machen
wollte bei einem Update habe ich mir die Daten einfach in eine "rom.c"
geschrieben und mit im Projekt abgelegt.
Sven F. schrieb:> Hi,> ich bin mir nicht sicher wie der BSL Flasher das macht, ich glaube man> konnte beeinflussen was er überschreibt.>
bei dem BSLDemo von TI habe ich jedenfalls noch nicht herausfinden
können, wie man dies einstellen kann...
> Da ich mir da auch immer nicht sicher war und ich nix kaputt machen> wollte bei einem Update habe ich mir die Daten einfach in eine "rom.c"> geschrieben und mit im Projekt abgelegt.>
Das Problem hierbei ist aber, das in jedem Prozessor ja andere
Kalibrierungsdaten stehen können. Ich habe hier z.B. mehrere MSP430G2955
und in jedem steht was anderes (was ja bei den Kalibrierungsdaten auch
logisch ist). Ich kann diese Daten also nicht einfach in mein Projekt
mit einbinden.
Frank B. schrieb:> @2100
Das ist die unterste Adresse des Flash; das Info-Memory liegt zwischen
0x1000 und 0x10ff.
...
Hmm. Eine Suche nach bsldemo2 und "Information Memory" bringt das hier:
1
When i use the BSLDEMO2.exe to do the FW upgrade the MSP430, all the data in INFO memory are erased to 0XFF,
2
3
below is my command:
4
5
BSLDEMO2.exe -cCOM38 -m1 +aepvrw MSP430G2744.txt
6
7
How to modify the command to avoid erasing the data in INFO memory?
Da scheint also jemand exakt das gleiche Problem zu haben.
1
As mentioned in SLAU319 (http://www.ti.com/lit/pdf/slau319) Section 2.4.4.4,
2
a Mass Erase erases the entire flash memory including info memory.
3
4
When programming a blank device (i.e. during production), you shouldn't mass
5
erase the device (or you can unlock it with a blank password).
6
7
When re-programming a device, you should provide the correct password.
Rufus Τ. F. schrieb:>> Das Problem scheint also das "mass erase" zu sein, das Du vermutlich> durchführst.>> Lies Dir mal den Rest hiervon durch, vielleicht hilft das ja weiter:>> http://e2e.ti.com/support/microcontrollers/msp430/f/166/p/461847/1669611
Das mit dem "mass erase" habe ich probiert. Auch ohne den Aufruf von
"mass erase" und nur beim Übertragen der Firmware sind die Daten weg...
Spricht was dagegen, die Daten vorher aus INFOA auszulesen und dann
wieder zurückzuschreiben?
Alternativ kannst du auch z.B. auf Python zurückgreifen, siehe hier:
http://pythonhosted.org/python-msp430-tools/target.html#msp430-bsl-target.
Oder dir deine Routinen gleich selbst schreiben, so furchtbar
kompliziert ist das Protokoll ja nicht, und verfusen kann man den MSP430
ja auch nicht ;)
Max G. schrieb:> Spricht was dagegen, die Daten vorher aus INFOA auszulesen und dann> wieder zurückzuschreiben?
OK, hier habe ich vergessen zu erwähnen, dass ich den FT231X von FTDI
verwende um das Update über eine USB Schittstelle durchführen zu können.
Der Chip bietet mir eine USB to RS232 Schnittstelle an. Über diese kann
ich die Kalibrierdaten auf den PC übertragen und das Firmwareupdate
durchführen. Da dann aber die Kalibrierdaten gelöscht sind, kann ich die
UART Verbindung zum PC nicht mehr herstellen, da ich ja keine definierte
Geschwindigkeit mehr auf dem MSP430 habe.
Hmm.
Um welches Anwendungsszenario geht es Dir eigentlich? Willst Du mehrere
Controller irgendwo "im Feld" mit einfachen Mittel mit neuer Software
ausstatten, oder machst Du das an Deinem
Arbeitsplatz/Entwicklungsrechner?
Rufus Τ. F. schrieb:> Hmm.>> Um welches Anwendungsszenario geht es Dir eigentlich? Willst Du mehrere> Controller irgendwo "im Feld" mit einfachen Mittel mit neuer Software> ausstatten, oder machst Du das an Deinem> Arbeitsplatz/Entwicklungsrechner?
Ich möchte "im Feld" die Möglichkeit haben, über eine USB Schnittstelle
ein Firmwareupdate anbieten zu können.
Dann wirst du doch vermutlich eine eigene PC-Software dafür haben. Und
kannst die Routinen darin selbst schreiben. Das von mir erwähnte
Python-Skript kannst du ja als Vorlage nehmen.
Mass Erase und Schreiben sind zwei verschiedene Befehle im BSL. Wenn
beides in einem passiert, wird das PC-seitig veranlasst. Lies dir doch
einfach mal http://www.ti.com/lit/ug/slau319p/slau319p.pdf durch. Wie
bringst du den MSP430 denn in den BSL-Mode?
Max G. schrieb:> Dann wirst du doch vermutlich eine eigene PC-Software dafür haben. Und> kannst die Routinen darin selbst schreiben. Das von mir erwähnte> Python-Skript kannst du ja als Vorlage nehmen.> Mass Erase und Schreiben sind zwei verschiedene Befehle im BSL. Wenn> beides in einem passiert, wird das PC-seitig veranlasst. Lies dir doch> einfach mal http://www.ti.com/lit/ug/slau319p/slau319p.pdf durch. Wie> bringst du den MSP430 denn in den BSL-Mode?
Ich habe mir den Quellcode von BSLDemo als Vorlage genommen und mir mal
ein eigenes PC Programm geschrieben. Den Befehl für Mass Erase (0x18)
schicke ich nicht.
Alles andere funktioniert, der MSP geht in den BSL Mode, die Firmware
wird übertragen. Wird der BSL Mode beendet läuft die Firmware auch
richtig. Nur die Geschwindigkeit stimmt dann halt nicht mehr, da die
Kalibrierdaten weg sind.
Kann es sein dass das Device geschützt ist und durch ein
fehlendes/falsches Passwort ein automatisches Mass Erase ausgeführt wird
welches auch alle Info-Blöcke mitlöscht?
Ich denke genau das ist der Punkt.
Laut diverser Datenblätter kommt es bei Nutzung des BSL und Übergabe des
falschen Passwortes zu einem Automatischen mass erase.
USB Field Firmware Updates on MSP430™ MCUs (Rev. C):
http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=slaa452&fileType=pdf&keyMatch=SLAA452C&tisearch=Search-EN-TechDocs
Man könnte das Verhalten bei Eingabe des Falschen Passwortes aber je
nach Chip anpassen, indem man einen Wert in den Interrupt Vector
Addresses anpasst.
Siehe dazu Seite 11 im entsprechenden Datenblatt:
http://www.ti.com/general/docs/lit/getliterature.tsp?fileType=pdf&genericPartNumber=msp430g2313&keyMatch=SLAS735J&tisearch=Search-EN-TechDocs>Seite 11 - Table 5. Interrupt Sources, Flags, and Vectors - "See(7)":>>This location is used as bootstrap loader security key (BSLSKEY).>A 0xAA55 at this location disables the BSL completely.>A zero (0h) disables the erasure of the flash if an invalid password is
supplied."
Außerdem kommt es wohl noch auf den Programer an, mit mspdebug scheint
derzeit per "flash-bsl" (connection is via serial port) noch kein
flashen ohne mass erase möglich zu sein.