Hallo TI-Freunde, wir haben hunderte Geräte mit MSP430F5438, jeweils mehrere Platinen in schuhkarton-großem Gehäuse, vergossen, Schaltplan/Layout/Software liegen vor. Die Geräte starten manchmal nach kurzem Spannungseinbruch nicht mehr. Anscheinend gibt es bei einem kurzen Spannungsreset noch Pegelwechsel auf der TEST-Leitung, die damit den internen Bootloader aktivieren. Der TEST-Pin läuft ohne Kontakt mit Bauteilen durch das ganze Gerät. Wir haben 0 Erfahrung mit MSPs. Und auch nur wenige, aufgepopelte HW. Der Hersteller ist nicht mehr greifbar. Daher folgende Fragen: 1) Ist meine Vermutung plausibel? Die Quartze schwingen im Fehlerfall nicht. Vermutlich koppelt ein LF- oder HF-Teil im Gerät auf die TEST-Leitung. 2) kommt der Bootloader bei erneutem, kurzem Reset (WDT-Baustein, 200ms) nicht aus dem Bootloader-Modus heraus? 3) Falls Bootloader: könnte man per Config-Bits oder Runtime-Config irgendwas tun, (Reset-Pin oder TEST-Pin) um bei echtem Spannungseinbruch die "Sensitivität" des TEST-Pins zu reduzieren? Herzliche Grüße (k)ein TIler Alles weg und neu ist leider keine Alternative :-( Die Karre ist im Dreck, zum Glück bin ich nicht Schuld :-) Warum die Leitung da durchgeht, ...????
!TIler schrieb: > Die Geräte starten manchmal nach kurzem Spannungseinbruch nicht mehr. und dann? Starten die danach, wenn Du sie für ein paar Minuten komplett stromlos gemacht hast, wieder? Oder sind sie dauerhaft kaputt und Du hast es noch nicht geschafft eines wiederzubeleben?
!TIler schrieb: > MSP430F5438 F5438 oder F5438A? > Die Quartze schwingen im Fehlerfall nicht. Der BSL initialisiert sie nicht. > Anscheinend gibt es bei einem kurzen Spannungsreset noch Pegelwechsel > auf der TEST-Leitung, die damit den internen Bootloader aktivieren. > > Ist meine Vermutung plausibel? Könnte sein. Der BSL kann entweder durch die Entry Sequence oder explizit durch Software gestart werden. Ich vermute mal, dass letzteres nicht passiert. SLAU319 sagt: > The BSL program execution starts when the TEST pin has received a minimum > of two positive transitions and if TEST is high while RST/NMI rises from > low to high (BSL entry method, see Figure 2). This level transition > triggering improves BSL start-up reliability. The first high level of the > TEST pin must be at least tSBW,En (see device-specific data sheet for > tSBW,En parameter). !TIler schrieb: > kommt der Bootloader bei erneutem, kurzem Reset (WDT-Baustein, 200ms) > nicht aus dem Bootloader-Modus heraus? Ein normaler Reset (TEST low währed der steigenden Flanke von RST) sollte ihn beenden. > könnte man per Config-Bits oder Runtime-Config irgendwas tun Wenn deine Software schon läuft, dann verhindert RST als NMI konfiguriert, dass der BSL gestartet wird. Brauchst du den BSL überhaupt? Wenn nicht, kannst du ihn löschen (siehe SLAA450; Adresse 17F4 genügt). > um bei echtem Spannungseinbruch die "Sensitivität" des TEST-Pins zu > reduzieren? Du könntest deine eigene BSL Protect Function (siehe SLAA450) installieren, die zusätzliche Prüfungen durchführt.
:
Bearbeitet durch User
!TIler schrieb: > die damit den internen Bootloader aktivieren. Woran erkennst Du das? > Der TEST-Pin läuft ohne Kontakt mit Bauteilen durch das ganze Gerät. Soll das heißen, das da 'ne lange Leiterbahn als Antenne dranhängt?
Vielen Dank für die Hilfe. Gerd E. schrieb: > Starten die danach, wenn Du sie für ein paar Minuten komplett stromlos > gemacht hast, wieder? Es reichen ein paar Sekunden stromlos, dann laufen sie wieder. Clemens L. schrieb: > Ein normaler Reset (TEST low währed der steigenden Flanke von RST) > sollte ihn beenden. Das passiert leider nicht (bei 200ms). Hat da jemand Erfahrung, ob das so sein soll? Ein externer WDT zieht /RST alle 3s für 200ms auf low, ohne dass der µC wieder aufstartet. Auch, nachdem ich den Bootloader manuell starte (per wackeln am TEST-Pin während Reset). Ich weiss leider nicht, ob der Geräte-Hersteller nicht auch den TI-Bootloader schon überbügelt hat. Clemens L. schrieb: > Wenn nicht, kannst du ihn löschen (siehe > SLAA450; Adresse 17F4 genügt). wie gesagt, ich müsste die MSP-Welt extra dafür betreten, daher die dumme Frage: - geht das aus einer laufenden Applikation heraus? Es gibt einen speziellen Bootloader des Geräte-Herstellers, der zu Anfang ein paar Sekunden aktiv ist. Darüber können wir neue (geänderte) Applikation laden. Einen anderen Zugang (über JTAG oder originalem Bootloader) haben wir nicht (Verguss, versiegelt, ...). Mein Problem: Wenn ich das ganze Faß der Programmierung aufmache (ISR-Compiler kaufen, Einarbeitung, Datenblätter wälzen, Code verstehen, Programmierung, ...) dann sollte Erfolg zumindest möglich sein, und nicht auf Seite 42: Dieses Config-Bit können sie nur per JTAG-Programmer manipulieren (oder so). Rufus Τ. F. schrieb: > Woran erkennst Du das? Nur die Vermutung, da die Pins, die ich messen kann, sich genauso verhalten, wenn ich den Bootloader manuell aktiviere Rufus Τ. F. schrieb: > Soll das heißen, das da 'ne lange Leiterbahn als Antenne dranhängt Naja, sind Quasi zusammengesteckte "Module" des Herstellers. Und TEST geht über 2 Module von Stecker zu Stecker, ohne Aufgabe. wv schrieb: > man könte auch den Test-Pin auf Masse legen Ja. Leider nur zum Ausprobieren oder für künftige Geräte, falls es das ist. Wir haben hier leider nur ein paar Geräte, und der Fehler kommt nur selten vor. Jede Modifikation braucht dann stundenlange Tests, meist mit typischen Ergebnisen wie: Wenn wir das Gerät auf den Kopf stellen, dann stürzt es nicht mehr ab! Ne, wirklich, ich schwör!
Clemens L. schrieb: > F5438 oder F5438A? Bei allen Geräten hier ist F5438 verbaut (ohne A). Rev L. Leider weiss ich nicht, ob es im Feld auch welche mit A gibt.
!TIler schrieb: > Es gibt einen speziellen Bootloader des Geräte-Herstellers, der zu Anfang > ein paar Sekunden aktiv ist. Darüber können wir neue (geänderte) > Applikation laden. Ersetzt der den TI-BSL, oder ist der Teil der normalen Firmware? Wie sicher bist du, dass der BSL in deinem Fall überhaupt aktiviert wurde? !TIler schrieb: > sollte Erfolg zumindest möglich sein, und nicht auf Seite 42: Dieses > Config-Bit können sie nur per JTAG-Programmer manipulieren (oder so). Wie gesagt, 0 nach 17F4 schreiben (oder BSL-Flash komplett löschen) deaktiviert den BSL. Allerdings ist der BSL-Flash natürlich extra schreibgeschützt; du musst vorher das SYSBSLPE-Bit im SYSBSLC-Register löschen. (Kann dieser spezielle Bootloader das überhaupt?)
:
Bearbeitet durch User
Clemens L. schrieb: > oder ist der Teil der normalen Firmware? Teil der normalen Firmware, der nach einem "normalen" Reset losläuft und es u.a. erlaubt, ein weiteres Programm (bei uns Applikation genannt) per speziellem Protokoll einzuladen. Der BSL sollte eigentlich nie aktiv werden. Und wenn er aktiv wird (manuell getriggert), dann steht die ganze Kiste (das eigentliche Problem). Clemens L. schrieb: > Wie gesagt, 0 nach 17F4 schreiben (oder BSL-Flash komplett löschen) > deaktiviert den BSL. Allerdings ist der BSL-Flash natürlich extra > schreibgeschützt; du musst vorher das SYSBSLPE-Bit im SYSBSLC-Register > löschen. (Kann dieser spezielle Bootloader das überhaupt?) Dann jetzt die Ultimative, Hands on Frage: Kann ich (*) von einer Applikation, die ich irgendwie ins Flash bekomme und starten kann, diese 0 nach 17F4 schreiben, und vorher SYSBSLPE löschen? Oder brauche ich dafür weitere HW-Signale, eine Programmierspannung, JTAG oder irgendwas anderes? Gruß Achim (*) Nach kauf von Compiler, Wochenlanger Einarbeitung in TI, MSP, Toolchain und Quellcode, Eval-Boards-Hello World, ....
!TIler schrieb: > Kann ich (*) von einer Applikation, die ich irgendwie ins Flash bekomme > und starten kann, diese 0 nach 17F4 schreiben, und vorher SYSBSLPE > löschen? Ja:
1 | void mein_kleiner_BSL_Killer(void) |
2 | {
|
3 | WDTCTL = WDTPW + WDTHOLD; |
4 | |
5 | SYSBSLC &= ~SYSBSLPE; |
6 | FCTL3 = FWPW; |
7 | |
8 | FCTL1 = FWPW+WRT; |
9 | *(int *)0x17f4 = 0; |
10 | FCTL1 = FWPW; |
11 | |
12 | FCTL3 = FWPW+LOCK; |
13 | SYSBSLC |= SYSBSLPE; |
14 | |
15 | ...
|
16 | }
|
Oh, das Datenblatt des MSP430F5438 sagt: > The BSL area contains a Texas Instruments provided BSL and cannot be > modified. Allerdings sagt SLAU319, dass das eine Einschränkung des BSL selbst ist, und dass Löschen möglich ist. Es sollte also auf jeden Fall funktionieren, wenn du WRT durch ERASE ersetzt.
:
Bearbeitet durch User
Clemens L. schrieb: > Ja: Super, Danke Dir Clemens. Ich melde mich wieder, wenn ich deren Code soweit verstanden habe (und es im Startup halt mache, falls noch nicht geschen) und den Compiler installiert und ... und ... und.
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.