Hallo, ich möchte ein Firmwareuptdate über USB ermöglichen. Mein Controller (Nuvoton Cortex M0, ist nicht auswechselbar) hat kein USB. Deshalb wollte ich einen FTDI chip nehmen. Es wäre für mich am einfachsten wenn sich das Gerät als Mass storage device melden würde und ich einfach eine Datei mit der Firmware auf dieses Device kopieren könnte. Ich habe aber nicht so viel RAM, dass das ganze File dort hineinpassen würde. Nun zu meinen Fragen: - kann das jeder FTDI USB-RS232 bridge chip? Oder gehen da nur spezielle? Ich kenn bis jetzt nur die FTDI chips mit VCP. - Falls das geht. Kann man die Übertragungsgeschwindikeit so drosseln, damit ich die Daten ins Flash schreiben kann und erst wenn sie geschrieben sind ein neues Paket anfordern? Wie ihr seht kenn ich mit nicht wirklich gut aus mit USB und bräucht etwas Hilfe.
Hallo, such Dir doch einen fertigen Bootloader (ist da nicht schon einer auf dem uC drauf) welcher über RS232 (respektive USB über FTDI Chip) den Code laden kann. Das ist einfach und schon oft gemacht. Gruß
Daniel S. schrieb: > Hallo, > > ich möchte ein Firmwareuptdate über USB ermöglichen. Mein Controller > (Nuvoton Cortex M0, ist nicht auswechselbar) hat kein USB. Deshalb > wollte ich einen FTDI chip nehmen. > > Es wäre für mich am einfachsten wenn sich das Gerät als Mass storage > device melden würde und ich einfach eine Datei mit der Firmware auf > dieses Device kopieren könnte. Ich habe aber nicht so viel RAM, dass das > ganze File dort hineinpassen würde. Die normalen FTDI USB-Seriell-Chips sind Custom Class USB Devices. Die implementieren keine Standard-USB-Klasse, sondern etwas proprietäres, für das man die speziellen FTDI-Treiber braucht. Das ist fest verdrahtet und kann nicht geändert werden. Wenn Du einen FT2232 aufs Board packst, kannst Du die Firmware über JTAG und OpenOCD flashen. Da brauchst Du dann auch keinen Bootloader oder so, denn über JTAG hast Du ja die volle Kontrolle über den Prozessor und kannst auch die Erstinbetriebnahme darüber machen, ohne dass überhaupt Code im Prozessor ist. Über den zweiten Port des FT2232 kannst Du eine UART-Kommunikation aufbauen. fchk
Das soll irgentwann mal verkauft werden und der Kunde soll ein Update machen können. Damit wir keine Treiber usw auf PC seite brauchen wäre ein Mass storage das einfachste, da man einfach eine Datei rüberkopieren könnte. Flashen kann ich die Controller mit dem NuLink programmer das ist kein Problem. Den Bootloader zu schreiben ist nicht das Problem. Mit dem Prozessor kenne ich mich gut aus. Ich habe bisher aber noch nichts mit USB gemacht.
> [... USB Mass storage Mode ...] > kann das jeder FTDI USB-RS232 bridge chip? Nein, die FTDI Chips können nur VCP. > Damit wir keine Treiber usw auf PC seite brauchen wäre > ein Mass storage das einfachste, da man einfach eine Datei rüberkopieren > könnte. LOL. Dann kopieren Dir die LUser aber irgendwelchen Mist auf den Chip, und reklamieren den dann bei Dir weils plötzlich nicht mehr tut. Was sich sagen will: Die Variante FTDI mit VCP braucht zwar einen Treiber auf der PC Seite, den kann sich aktuelles Windows aber von selbst aus dem Netz laden. Und einen Updater als PC-Programm braucht man schon um festzustellen ob überhaupt die korrekte Datei geflasht wird. Dein "Mass strorage Modus" Update geht nur mit Chips, die direkt USB unterstützen; Ich habe das bisher nur beim LPC134x so gesehen. Um das an den Nuvoton anzubinden müsste man einen eigenen USB-fähigen Microcontroller benutzen, der dann auch ein spezielles Programm braucht. Das ist ziemlich aufwändig: Wir haben hier ein Design mit Silabs 8051F320 als USB Chip mit Mass strorage und 8051F020 als Hauptcontroller, die sich eine SD Karte als Datenspeicher teilen. Die Programme sind nicht trivial.
folgende Möglichkeiten sehe ich - FTDI chip über VCP und PC Programm welches die Datei rüberschiebt mit Acknowledge. Das wäre relativ einfach zu implementieren. - Nuvoton Chip mit USB und dann Mass storage device. Es gibt ein Codebeispiel von Nuvoton welcher als USB stick fungiert. Dabei ist ein externes serielles Flash angeschlossen. Wenn man die Datei aber auch lesen will (das ist ja der Sinn) muss man ja auch FAT implementieren da der PC die Daten ja im FAT format auf einen Speicher schreiben will. Ich habe aber gar nicht so viel Ram um das zu puffern. Da müsste man schon arg murksen um das anständig zum Laufen zu bekommen. - Controller mit USB und VCP drauf laufen lassen. Da gibt es auch Beispiele dafür.
Ich empfehle trotzdem die Lösung mit dem FT2232 und JTAG. Grund: Damit kann sich ein User das Gerät niemals zerschießen ("bricken"), egal was immer er auch anstellen mag. Der Flasher wird IMMER_ und _JEDERZEIT in der Lage sein, ein funktionierendes Image zu übertragen. Die anderen Lösungen können das nicht in JEDEM denkbaren Fall garantieren. Nur ein im Controller-ROM (ROM, nicht Flash!) eingebauter Bootloader wäre ein gleichwertiger Ersatz. Einen Treiber wirst Du eh installieren müssen, und das Treiberpaket für einen FT232 ist das gleiche wie für einen FT2232 oder FT4232. Also entsteht Dir dadurch kein Nachteil. Das OpenOCD ist fertig und Open Source, da wirst Du kein neues Rad erfinden müssen, sondern nur Deine VID und PID eintragen müssen. Und auf Controllerseite ist ohnehin alles Hardware, da gibts keine spezielle Software. fchk
>ich möchte ein Firmwareuptdate über USB ermöglichen. Mein Controller >(Nuvoton Cortex M0, ist nicht auswechselbar) hat kein USB. Warum nicht austauschbar? Wenn Du da noch einen FTDI 'drankleben' kannst, dann ist Dein Design bisher wohl kaum in Stein gemeiselt. Bevor Du also hier rumbastelst und den Mist dann Deinen Kunden andrehst, solltest Du Dir überlegen, es gleich richtig zu machen - zumal diese Controller auch mit USB zu haben sind. Gruß Klaus
Ich glaube auch, Deine Zutaten stimmen nicht: Entweder geeignete Hardware oder eine neue Idee muß her! Viel Erfolg Martin
Also das mit JTAG finde ich nicht wirlich passend. Die Software ist zwar nicht super geheim oder aussergewöhnlich aber das lädt ja gerade zum kopieren oder zu mods ein. Im Garantiefall kann man dann gar nicht mehr nachweisen was damit getrieben wurde. Die eigentliche Funktionalität für das Gerät ohne Firmware update möglichkeit steht halt schon. Für einen neuen Prozessor muss die Firmware dann angepasst und getestet werden. Aber naja es geht wohl nicht anders. VCP mit einem USB-prozessor wird wohl das Mittel der Wahl sein. Dann kann mann auch eine sehr einfache Verschlüsselung wählen. Hat jemand erfahrung mit der VCP auf einem Nuvoton prozessor?
>VCP mit einem USB-prozessor wird wohl das Mittel der Wahl sein. Dann >kann mann auch eine sehr einfache Verschlüsselung wählen. Eben nicht. Das 'Mittel zur Wahl' ist HID. Vorteile: keine zusätzlichen Treiber auf PC-Seite und keine Zertifizierung für Windows (das brauchst du bei CDC/VCP). Einschränkung: max. 64 kBytes/s. Aber das sollte bei einem Firmware-Update und einfachen Steuerungsaufgaben keine Rolle spielen. Gruß Klaus
Ok dann also HID. Gibt es dafür offene APIs für Windows/Mac usw? Man braucht ja auch ein PID and VID um das Gerät zu identifizieren und um erkennen zu können ob ein Gerät angeschlossen ist oder?
Daniel S. schrieb: > Ok dann also HID. > > Gibt es dafür offene APIs für Windows/Mac usw? http://www.lvr.com/hidpage.htm https://developer.apple.com/library/mac/#documentation/devicedrivers/conceptual/HID/intro/intro.html fchk
Ich kenne die Nuvoton-Teile bisher überhaupt nicht und weiß auch nicht wie sehr Dein Design darauf festgelegt ist. Du könntest Dir nämlich auch mal einen STM32 mit USB anschauen. Die haben einen USB-Bootloader im ROM integriert der direkt als Mass-Storage-Device fungiert. Taucht im OS ohne extra Treiber oder sonstwas als Laufwerk mit FAT auf, Firmware-Datei draufkopieren, fertig. Sowas gibts aber glaube ich auch bei anderen Herstellern, dunkel habe ich es für die LPC13xx-Serie im Hinterkopf. Vom Preis her langt FTDI ganz schön zu. Wenn Du Den Cortex M0 wegen dem Preis gewählt hast, würde dieser Vorteil vom FTDI gänzlich aufgefressen und ein Cortex M3 mit USB unterm Strich vermutlich günstiger.
Schau dir mal den Vinculum von FTDI an! Mit dem hab ich schon mal sowas gemacht... Gruß Andi
Nachdem es wohl wirklich nicht so einfach ist das Update per USB zu machen würde ich auch einen anderen Prozessor einsetzen wenn es damit viel einfacher wäre. Zum STM32 USB mass storage update mit USB im ROM habe ich nichts gefunden. Klar gibts wahrscheinlich von ein paar Leuten dazu software. Aber ob die dann immer so funktioniert wie sie soll weiss man nie. Die Vinculum von FTDI sind wohl prozessoren mit USB. Gut wahrscheinlich sind die USB sachen recht einfach gehalten da das ja ihr Spezialgebiet ist aber das ist glaube ich nicht der richtige Weg für mich.
Was für einen Controller verwendest Du jetzt denn GENAU (Typcode)? fchk
Momentan den M054ZBN Aber wir werden jetzt wohl den NUC122 mit USB nehmen. Klar könnte man auch einen STM oder Atmel oder sonst was nehmen. Aber wie gesagt die Software für die eigentliche Funktion ist soweit fertig. Und ich hoffe die Peripherie usw wird sich innerhalb eines Herstellers nicht so stark ändern.
Hallo, mich treibt das auch schon länger um mal USB richtig zu Implementieren. Wir haben ein Messgerät USB fähig gemacht, und dazu den TI TUSB4310 chip benutzt. Was ich noch nicht wirklich verstehe ist das setzen von VID und PID, habt ihr darüber nachgedacht eigene IDs zu kaufen ( meiner Information nach muss man dafür usb.org Mitglied werden für min. 2000$) sonst kann man keine eigenen IDs benutzen und kein USB Logo auf Verpackung Kabel etc drucken. Hat da jmd genauere Ahnung von? Meine nächsten Ideen zu unserem Device wäre gewesen einfach über die TUSB4310 VCP einen UART transfer zu machen, bei dem ich dem µC vorher mitteile dass jetzt der Bootsecotr beschrieben wird. Allerdings ist das bisher nur eine grobe Idee implementiert habe ich sowas noch nie, bin daher im Sinne Bootloader absoluter Neuling, daher weiss ich nicht 100 % ob das so funktionieren kann in der PRaxis. Grüße
@Daniel S. Ich kenne den Nuvoton gar nicht (aber Cortex-M3 von anderen Herstellern). Darf ich fragen, was euch zum Nuvoton bewegt hat? Hat er irgendeine Fähigkeit, den andere nicht haben? Oder ist er vielleicht günstiger, besser zu beschaffen, in günstiger Gehäusen, guter Support, gute Evalboards...?
Daniel S. schrieb: > Momentan den M054ZBN Aber wir werden jetzt wohl den NUC122 mit USB > nehmen. Klar könnte man auch einen STM oder Atmel oder sonst was nehmen. > Aber wie gesagt die Software für die eigentliche Funktion ist soweit > fertig. Und ich hoffe die Peripherie usw wird sich innerhalb eines > Herstellers nicht so stark ändern. Da würde sich der LPC1343 als Ersatz anbieten. Gleiche Packages, ähnliche Ausstattung, Cortex M3, USB eingebaut, USB-Treiber im ROM, USB-Mass Storage Boot Loader eingebaut. Schaut mal, ob der passt. fchk
Noch zwei USB HID-Varianten USB HID <-> I²C http://www.silabs.com/products/interface/usbtouart/Pages/HID-USB-to-SMBus-Bridge.aspx oder USB HID <-> UART http://www.silabs.com/Support%20Documents/TechnicalDocs/CP2110.pdf
@Fragender: Der Nuvton ist ein Cortex M0. Die Auswahl hatte ich nicht zu treffen sondern der Hersteller und Auftraggeber in China. Er ist wohl in Stückzahlen recht günstig und die Programmer sind es auch. Ich bin sehr zufrieden damit. Ich konnte noch keine Bugs finden und die Peripherie ist auch ganz ok. Der LPC ist schon echt der Hammer mit seinem USB. Leider geht das Update über Mass storage nur bei windows. Muss ich mal schauen ob das ok ist. Dann müsste ich nur die Software umstellen. Günstig ist der aber auch nicht Die SiLabs Wandler sich ja auch super aber auch teuer. Bei 1k 1,5$ ist schon happig. Gut ein FTDI kostet auch so.
Daniel S. schrieb: > Die Software ist zwar > nicht super geheim oder aussergewöhnlich aber das lädt ja gerade zum > kopieren oder zu mods ein. Bei einem Bootloader/Updater, den du modifizieren kannst (also nicht bloss mal schnell kopiert), könntest du die Firmware, die der Kunde bekommt, verschlüsseln. Ob sich das lohnt müsst ihr schon selbst beurteilen. Mindestens eine Gültigkeitsprüfung vor dem Programmieren wäre schon empfehlenswert. Gruss Reinhard
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.