Hi, Ich würde gerne von einem einem Java Programm via DFU Firmware auf einem STM32 Controller spielen. Hat das schon jemand gemacht oder kennt ein Java-Programm (bzw. dessen Source) das sowas kann? Soll dann eine eigene Software werden, über die ein Update der Firmware möglich sein sollte. Oder hat jemand eine bessere Idee um dem Endanwender ein Update machen zu lassen? lG, Max
http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1533/PF257916# In dem ZIP ist Wohl auch noch ne DLL mit Doku dabei. Sollte sich dann mit SWIG oder so wrappen lassen. Alternativ gibt's da noch http://dfu-util.sourceforge.net/ Das könnte man im Hintergrund aufrufen.
Markus Manninger schrieb: > Oder hat jemand eine bessere Idee um dem > Endanwender ein Update machen zu lassen? Anders ja, ob besser, weiss ich nicht. Die STM32 haben doch einen eingebauten System memory boot, der über einen FTDI-Adapter-Clone und USB-VCOM auch ein Update ermöglicht. Steht im stm32 AN2606. https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Attachments/18225/AN2606.pdf
:
Bearbeitet durch User
Markus Manninger schrieb: > Oder hat jemand eine bessere Idee um dem > Endanwender ein Update machen zu lassen? Ich würds auf jeden Fall ohne Java machen. Der Endanwender wird zu Recht verärgert sein wenn er feststellt daß der winzige Updater für 2 Sekunden trivialste Arbeit mal eben noch eine monströse Laufzeitumgebung benötigt die erst installiert werden muss (samt unerwünscht reingemogelter Browser-Toolbar Adware). Machs in C++/Qt oder C++/wxWidgets oder FPC/LCL und es wird genauso Plattformübergreifend (Windows/Linux/Mac) sein, nur mit 100MB weniger Ballast und schönerer Optik obendrein.
Bernd K. schrieb: > genauso > Plattformübergreifend (Windows/Linux/Mac) sein, nur mit 100MB weniger > Ballast Wenn es danach ginge:
1 | C:>copy NewFirmware.bin \\.\com12 /b |
Geht das Plattformübergreifend (Windows/Linux/Mac)? dann spart man nochmal ein paar KBytes.
Ja, hab auch schon daran gedacht ... vielleicht eh besser - bin ja auch keine Freund von Java aber ich dachte mir dass die JRE sowieso unter Windows installiert ist bzw. sehr wahrscheinlich. lG, Max
Markus Manninger schrieb: > vielleicht eh besser Für mich wäre das ein Kaufgrund: Kein Risiko von Viren, Trojanern und Spyware! Wie ist das mit Script-Dateien bei Linux/Mac aus? Markus Manninger schrieb: > sowieso unter Windows installiert Unter Windows funktionieren *.vbs und *.js Scripte meines Erachtens out-of-the-box. Dann könnte man zumindest 'ne Meldung ausgeben, ob der Vorgang erfolgreich war und ein kleines Menü machen, um den Port und die Baudrate (automatisch?) einzustellen.
:
Bearbeitet durch User
Torsten C. schrieb: >> vielleicht eh besser > > Für mich wäre das ein Kaufgrund: > Kein Risiko von Viren, Trojanern und Spyware! > > Wie ist das mit Script-Dateien bei Linux/Mac aus? Scripting funktioniert unter Linux allgemein besser als auf Win aber wenn man die breite Masse ansprechen will, muss man eine Windows Software haben. Aber ich will wenig externe Abhängigkeiten haben. > Markus Manninger schrieb: >> sowieso unter Windows installiert > > Unter Windows funktionieren *.vbs und *.js Scripte meines Erachtens > out-of-the-box. Dann könnte man zumindest 'ne Meldung ausgeben, ob der > Vorgang erfolgreich war und ein kleines Menü machen, um den Port und die > Baudrate (automatisch?) einzustellen. Ich will ein Programm schreiben um Parameter des Controllers zu verändern und Werte von Sensoren, in meinem Fall Liftdruck eines barometrischen Sensors oder Lagesensors anzuzeigen. Und es soll auch die Möglichkeit beiten die Firmware des MCs upzudaten. Kommunikation wird wahrscheinlich einfach über Virtual Com Port realisiert und für das Protokoll werd ich Googls Protobuf [1] verwenden. Damit hab ich schon gute Erfahrungen gemacht und es auch auf einem STM32 implementiert [2] . [1] https://code.google.com/p/protobuf [2] https://code.google.com/p/protobuf-embedded-c/ lG, Max
:
Bearbeitet durch User
Markus Manninger schrieb: > Ich will ein Programm schreiben um Parameter des Controllers zu > verändern Das hättest Du ja auch gleich sagen können. :-( Na denn: Java oder C#.net. Bei beiden muss ein Setup mit Admin-Rechten ausgeführt werden, wenn die Bibliotheken nicht zufällig bereits installiert sind. Damit wären wir dann wieder bei C++ von Bernd. Das kann man so schreiben, dass die .exe ohne Setup mit Admin-Rechten läuft.
:
Bearbeitet durch User
Markus Manninger schrieb: > Aber ich will wenig externe Abhängigkeiten haben. > [...] > Ich will ein Programm schreiben um Parameter des Controllers zu > verändern und Werte von Sensoren, in meinem Fall Liftdruck eines > barometrischen Sensors oder Lagesensors anzuzeigen. Für so Sachen (und ganz allgemein die schnelle GUI-App für zwischendurch und auch umfangreichere Sachen) empfehle ich wärmstens Lazarus (FreePascal + LCL). Das erzeugt kompakte native statisch gelinkte Binaries komplett ohne Abhängigkeiten und der selbe Code läßt sich unverändert unter Windows, Linux und Mac kompilieren. Es existiert meines Wissens nach derzeit kein besseres oder auch nur annähernd gleichwertiges Werkzeug für solche Anwendungsfälle, am ehesten vielleicht noch C++/Qt aber der Qt-Designer kann leider einpacken angesichts der Lazarus IDE. </meinung>
Bernd K. schrieb: > Das erzeugt kompakte native statisch gelinkte > Binaries komplett ohne Abhängigkeiten Das klingt interessant. Ist die .EXE ohne Admin-Rechte und Setup-Prozedur überall ausführbar? Sowas brauche ich auch!
Torsten C. schrieb: > Das klingt interessant. Ist die .EXE ohne Admin-Rechte und > Setup-Prozedur überall ausführbar? Sowas brauche ich auch! Ja. Als Beispiel (und um halbwegs on-topic zu bleiben) siehe beispielsweise mein DebugTerminal Projekt: https://github.com/prof7bit/DebugTerminal Das ist ein Ersatz für sowas wie CuteCom oder Bray's Terminal, auf das wesentliche reduziert und es zeigt die Verwendung der seriellen Schnittstelle unter Windows und Linux (spätestens im Innern meiner comport.pas Unit tauchen natürlich einige IFDEFs auf, nicht alles ist auf allen Platformen identisch, aber wenn man die als black box ansieht von außen ist die Verwendung überall gleich, nirgendwo sonst im Programm ist noch ein ifdef zu finden). Die herunterladbaren Binaries laufen direkt und ohne Installation auf der jeweiligen Platform, selbst auf jedem x-beliebigen Desktop-Linux tun sie das (wird ja oft kritisiert sowas ginge nicht oder nur schwer, aber hier wird gezeigt daß es sehr wohl geht, und zwar ohne irgendwelche Verrenkungen).
:
Bearbeitet durch User
Schaut nicht schlecht aus. Möglichkeiten gibt es ja viele und alle haben ihre Vor- und Nachteile. Mit Pascal hab ich bis jetzt noch nicht programmiert, muss mir das also nochmal genauer anschauen. Wichtig sind für mich wenn möglich nicht zu viele Abhängigkeiten zu externen Libs zu haben ... optimal wäre eine einfaches Binary (.exe) ohne großartige Installation so wie z.B putty lG, Max
Lazarus / Freepascal sieht schon ziemlich gut aus! Ich hatte mir das vor ein paar Jahren zum letzten mal angeschaut, irgendwas war damals aber noch, mit der Firma der heute Delphi gehört, da gabs in den Foren etliche unzufriedene Stimmen, gings um irgendwelche Sachen die man teuer zukaufen musste um Pascal "professionell" nutzen zu können? Keine Ahnung, Schnee von gestern wahrscheinlich. Inzwischen wirkt Lazarus / Freepascal aber ziemlich komplett, (auf Xubuntu 14.04, getestet), es gibt Konnektoren für alle möglichen Datenbanken, jede Menge GUI-Controls und sogar etwas "DataGridView"-artiges. Die IDE erinnert ein wenig an Visual-Studio-.net mit VB/C#. Bei der Gelegenheit habe ich auch gleich nocheinmal "Mono" installiert, das .net-Framework für Linux. Ich habe dann mit "Ms Visual Studio Express 2012" eine Windows-Form (Framework .net 3.5) erstellt und mit allen möglichen grafischen Controls zugekleistert, (Buttons, Menü-Leiste, Status-Leiste, FileDialog, Font-Auswahl-Dialog, ColorDialog, DateTimePicker, DataGridView). Die daraus erzeugte .exe (any, x86, x64) habe ich auf meinen Xubuntu-Rechner kopiert, dann rechter Maus-Klick -> “Open with Mono Runtime” und siehe da: Das Ding startet ohne jede Fehlermeldung, alle Controls sind da und scheinen auch zu funktionieren (FileDialog, Font-Auswahl-Dialog, ColorDialog etc.). In einem zweiten Versuch hat sich sogar das DataGridView mit Daten aus der im LAN bereitstehenden PostgreSQL-Datenbank gefüllt, (was mich echt gewundert hat, ich dachte zuerst die "Npgsql.dll" wäre windowsspezifisch). Das fand ich schon sehr beindruckend, denn grafische Benutzeroberflächen mit VB.net oder C#.net zu erstellen ist nun wirklich vergleichsweise einfach. Ganz perfekt war es dann allerdings doch nicht: Das Setzen von "DataGridView.HorizontalScrollingOffset" (verschiebt die Spalten eines DataGridViews, programmgesteuert nach rechts oder links), hat z.B. nicht funktioniert und auch sonst scheint es, laut zahlreicher Forenbeiträge und Bug-Reports, noch etliche Detail-Baustellen zu geben. Also vorerst ist mono mit WinForms noch keine echte Multiplattform-Konkurrenz, zu was auch immer. Man könnte zwar alternativ Mono und C#/VB mit GTK verwenden aber da hat Lazarus / Freepascal definitiv die hübscheren und flexibleren Controls out-of-the-box. Eventuell tut sich ja noch was in nächster Zeit jetzt nachdem Microsoft das .net-Framwork zu Open-Source gemacht hat.
Leider muss man ja den BOOT0 Pin auf VDD legen um Firmware via USB/DFU einspielen zu können ... dass ist natürlich etwas unpraktisch wenn es der Enduser machen und dafür noch ein Gehäuse aufschrauben muss. Hat schon mal jemand versucht eine Firmware via VCP auf den Controller zu spielen, der speichert die z.B auf einem Flash zwischen und ein spezieller Bootloader liest dann nach dem Reset diese Firmware vom Flash um sie auf dem MC neu einzuspielen? lG, Max
Markus Manninger schrieb: > Leider muss man ja den BOOT0 Pin auf VDD legen um Firmware via USB/DFU > einspielen zu können Ist das so? Oder kann man alternativ einfach den ProgrammCounter per SW auf den Bootloader setzen?
Laut Application Note AN3156 von STM ja aber vielleicht kann man dem MC auch via SW ein Telegramm schicken um ihm mitzuteilen dass er auf den Bootloader springen soll und dann die neue Firmware mit DFU übertragen.
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.