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
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.
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.
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
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.
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).
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.