Hallo, vielleicht hat sich ja schon mal jemand von euch mit dem Thema beschäftigt. Ich arbeite hier mit einem MSP430G2955. Nun war meine Überlegung, ob es eine Möglichkeit gibt, an diesen Prozessor eine USB Schnittstelle anzuschließen und das Firmwareupdate über USB zu ermöglichen. Bei den Prozessortypen, welche schon USB von sich aus unterstützen (MSP430F563x...) ist dies ja kein Problem. Aber würde dies auch z.B. mit dem MSP430G2955 funktionieren? Hat schon jemand Erfahrungen hiermit? mfg Frank
:
Bearbeitet durch User
Frank B. schrieb: > Nun war meine Überlegung, ob es > eine Möglichkeit gibt, an diesen Prozessor eine USB Schnittstelle > anzuschließen Nimm einen FT23x von FTDI oder CP210x von SiLabs. Der spuckt dann normales UART Signal aus, dafür müsste es einen Bootloader geben. USB in Software-only ist derart aufwändig, dass Du mit der Firmware Entwicklung "ewig" beschäftigt wärst - und dabei auch noch Software für den PC enwickeln müsstest. Wenn Du nicht grade Sückzahlen >1E5 anstrebst, ist der extra USB Chip die schnellere und preiswertere Lösung. Oder man nimmt den nächstgrößeren MSP mit USB.
Jim M. schrieb: > Der spuckt dann normales UART Signal aus, dafür müsste es einen > Bootloader geben. Naja, alle MSP430 enthalten einen seriellen Bootloader, der aber ein etwas ungewöhnliches Protokoll umsetzt. Das nennt sich BSL. Natürlich könnte man auch einen separaten, selbstgeschriebenen UART-Bootloader zusätzlich zum eh' vorhandenen BSL in den 'G2955 packen, man muss sich halt Gedanken darum machen, wo im Speicher der unterzubringen ist. Einfacher dürfte es sein, eine BSL-Implementierung mit einer USB-UART-Bridge à la FT232 hinzubekommen.
Siehe auch: http://hackaday.com/2012/12/03/msp430-bit-banged-usb-1-1/ Offenbar gibt es eine 15 MHz Version: http://mecrisp.sourceforge.net/mecrimus-b.htm Ich persönlich hätte aber eher auf einen modernen preiswerten Cortex-Mx mit USB umgestellt. Die Einarbeitung in einen kleinen ARM dürfte in etwa so lange dauern wie die Integration von Software USB in ein bestehendes Projekt...
erstmal danke für die Antworten. Vielleicht ist die USB-UART-Bridge ein interessanter Ansatz. Werde mich damit mal beschäftigen.
Jim M. schrieb: > Siehe auch: http://hackaday.com/2012/12/03/msp430-bit-banged-usb-1-1/ Das halte ich für einen Schritt in eine komplett falsche Richtung. Ja, sicher, in der AVR-Welt ist das dank V-USB verbreitet, und kleine Arduino-Varianten à la Digispark/Digistump nutzen das auch, aber ... Frank sollte das hier präzisieren: Frank B. schrieb: > Nun war meine Überlegung, ob es eine Möglichkeit gibt, an diesen > Prozessor eine USB Schnittstelle anzuschließen Soll das bedeuten, daß das ohne zusätzliche Hardware geschehen soll? Oder impliziert "USB Schnittstelle anschließen" den Gebrauch üblicher USB-UART-Bridges à la FT232, CH340 etc.?
Den MSP430G2955 verwende ich auch. Viel Speicher, wenig Peripherie. Von USB ist der meilenweit entfernt. Umstellung auf einen USB-fähigen MSP430 wäre prinzipiell möglich, allerdings ist die Portierung von einem 2er auf einen anderen mäßig lustig, weil die Unterschiede nicht unerheblich sind. Und die USB-fähigen MSP430 sind teuer. Bei den 5ern kann man den BSL-Code durch eigenen ersetzen, in den 2ern ist der fest drin. Du wirst also ein eigenes Protokoll erfinden müssen; USB-to-serial-Wandler gibt es genug. BSL wirst du darüber aber nicht emulieren können, dafür ist es zu komplex (man muss zum richtigen Zeitpunkt an /RST wackeln). Schreibe einen eigenen Lader, der über das Linker Command File in einen fixen Speicherbereich geschrieben wird und dort für alle Zeiten bleibt. Den Rest des Speichers kannst du dann aus dieser Routine heraus fröhlich überschreiben. Flash löschen und schreiben ist auf dem MSP430 zum Glück relativ unproblematisch. Passe auf, dass du INFOA nicht platt machst, und Finger weg von Mass Erase. Du musst weiter sicherstellen, dass du auch nach ungeplantem Reset usw. in diesen Lader kommst. Sonst hast du schnell einen Ziegelstein fabriziert. Dazu ist es auch notwendig, sowohl die übertragenen Daten als auch den geflashten Programmcode mit einer Checksumme zu sichern. Leider hat der G2955 keine CRC-Engine, aber das geht auch von Hand. Viel Erfolg! Max
Max G. schrieb: > Bei den 5ern kann man den BSL-Code durch eigenen ersetzen, in den 2ern > ist der fest drin. Du wirst also ein eigenes Protokoll erfinden müssen; > USB-to-serial-Wandler gibt es genug. BSL wirst du darüber aber nicht > emulieren können, dafür ist es zu komplex (man muss zum richtigen > Zeitpunkt an /RST wackeln). Du kannst einen PIC16F1454 als USB-Bridge verwenden. Der wird zum Einen unter der Bezeichnung MCP2221 als USB-UART/I2C Bridge verkauft, aber Du kannst auch den unprogrammierten PIC kaufen, die UART-Demoapplikation nehmen und für BSL anpassen. Das wird preisweter als ein FTDI-Chip. Oder Du sparst Dir die PIC-Programmierung und nimmst einen FT232H/FT2232D/FT2232H/FT4232H und hängst den an den JTAG-Port. Der FT2232 ist quasi zwei FT232H, d.h. Du kannst an Port A JTAG anklemmen und an Port B UART. fchk
Frank K. schrieb: > und hängst den an den JTAG-Port. Dann braucht man nur noch 'ne Software, die das ansteuert. Immerhin hat sich TI in der Zwischenzeit bewegt und den Kram offengelegt, so daß alternative Programmieradapter jetzt nicht mehr ausgeschlossen sind ... Eine Alternative zu JTAG ist hier SBW, das hat den Vorteil, daß es nur zwei Anschlüsse braucht, und daß diese in den meisten Anwendungen auch keine Zweitfunktion haben. SBW wurde zu Zeiten des 'F20xx eingeführt und wird seitdem von jedem neueren MSP430-Derivat unterstützt, so natürlich auch der kompletten G-Reihe.
Frank K. schrieb: > Du kannst einen PIC16F1454 als USB-Bridge verwenden. Der wird zum Einen > unter der Bezeichnung MCP2221 als USB-UART/I2C Bridge verkauft, aber Du > kannst auch den unprogrammierten PIC kaufen, die UART-Demoapplikation > nehmen und für BSL anpassen. Das wird preisweter als ein FTDI-Chip. Das kann man machen, aber zwei verschiedene uC auf einem Gerät machen Entwicklung und Fehlersuche auch nicht leichter. Wenn er sich schon in einen neuen uC einarbeiten muss, kann er gleich auf einen passenden MSP430 oder ARM umsteigen.
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.