Title: Firmware-Projekt "Bootloader"
Post by: DF8OE on 25. September 2015, 07:41:16
Ich nehme aus den unterschiedlichsten Gründen an, dass wir hier in Zukunft einen Fork der existierenden Firmware weiterentwickeln werden. Es ist dann freilich unsere Aufgabe, Neuerungen von Clint einzufügen - aber das ist möglich.
Das Erste, um was wir uns kümmern müssen, ist der Bootloader. Er enthält proprietären Code und ist urheberrechtlich geschützt. Die Aufgaben des Bootloaders sind überschaubar:
1) Er legt den Pin PC8 auf L wenn der Power-Button den Pin PC13 für mindestens 0.5s auf L gelegt hat und springt dann an den Start des User-Codes 2) Er versetzt das Gerät bei gedrücktem "BAND-" beim Einschalten in den Update-Modus, in dem die beiden LEDs blinken und die Firmware per proprietärem Code geladen werden kann
Ich habe einen Code für das Discovery-Board gefunden, der sich auch "Bootloader" nennt und folgendes tut:
Er wird durch einen Knopfdruck gestartet. Findet er am USB-Anschluß einen USB-Stick mit einer Datei "image.bin" darauf, lädt er diese (in 1.5s) und flasht sie. Danach springt er an die Stelle des Usercodes. Wird kein USB-Stick gefunden, springt er sofort zum normalen Usercode.
Github zum Projekt (https://github.com/rowol/stm32_discovery_arm_gcc/tree/master/STM32F4-Discovery_FW_V1.1.0/Project/FW_upgrade) Es juckt mich in den Fingern das umzuschreiben und den Bootloader zu ersetzen... Leider habe ich durch den kurz bevorstehenden Projektstart und die Arbeit an dem Buch keine Zeit, es umzusetzen. Es wäre ein sehr guter "Start" unserer Firmwareweiterentwicklung, wenn wir den Code entsprechend anpassen könnten und so einen Bootloader herausgeben könnten, der
- quelloffen ist
- keinen PC zum Firmwareupgrade benötigt (und damit auch keine Spezialsoftware)
- voll kompatibel zur alten Firmware ist, bedeutet, man kann den alten BL einfach gegen den neuen austauschen und alles bleibt kompatibel - bis auf die neue FW-Upgrademethode
Kann diesen Ball jemand aufnehmen?
vy 73 Andreas
|
Title: Re:Firmware-Projekt "Bootloader"
Post by: DF8OE on 25. September 2015, 16:01:07
Ich habe mir die Quellen mal geholt. Mit make im Ordner Project/FW_upgrade/src wird mir auch ein Binary gebaut (fw_upgrade.bin mit 35524 Bytes). Wenn ich das als Bootloader verwenden will, möchte ich es im dfuse-Modus in den STM schieben - sollte also als Dateiendung .dfu haben. Es gibt auch schon ein vorgebautes Binary im Ordner Project/FW_upgrade/Binary mit Namen STM32F4-Discovery_FW_Upgrade_V1.0.0.dfu mit 18669 Bytes. Ich verstehe den Zusammenhang nicht zwischen dem von mir gebauten Binary und der .dfu-Datei. Kann mir jemand auf die Sprünge helfen?
vy 73 Andreas
Nachtrag: Habe gerade ein kleines Python-Script gefunden namens "hex2dfu". Das habe ich mal auf das .hex losgelassen: Ergebnis ist ein .dfu - allerdings ebenfalls um die 35K groß ??? |
Title: Re:Firmware-Projekt "Bootloader"
Post by: DC3AX on 26. September 2015, 20:09:35
Also .dfu Dateien haben ein paar Extra-Infos im File. Diese sind nach der "Device Firmware Upgrade" Spezifikation des USB Forums definiert. Du müsstest das fw_upgrade.bin durch das Tool schieben, dass das Binär-Image mit dem dfu Umschlag versieht.
Allerdings habe ich da zwei Sorgen... 1) Das fw_upgrade.dfu kann man erst flashen, wenn man fw_upgrade.bin geflasht hat, da war mal was mit der Henne und dem Ei... Ich bin mir nicht sicher, ob das jemals vorgesehen war.
2) Der STM32 kann nicht in einer bank read-while-write. Das fw_upgrade modul muss sich also vor dem Start erst einmal selbst ins RAM kopieren, dann könnte es sich von dort auch mit einer Versio seinerselbst überschreiben. Tut es das nicht, kann es immer nur die andere Bank upgraden, aber nie sich selbst.
Ich wäre also immer noch dafür, den USB-Loader anzuspringen und den Bootloader zu eliminieren. Dazu muss man auch die Firmware mit einem Tool behandeln, und das Ergebnis auf einen Stick kopieren, der dann wiederum an den USB-OTG gesteckt wird…
Sobald ich den letzten HW Bug erschlagen habe, mache ich in der Software weiter. Eine grobe Idee, was ich dazu denke, habe ich ja in wip/cleanup eingecheckt. Das compiliert noch nicht, zeigt aber, wie man Treiber aufbauen kann... Ist aber noch viel zu tun...
73! Ulrich |
Title: Re:Firmware-Projekt "Bootloader"
Post by: DF8OE on 29. September 2015, 06:31:01
Ich habe mich nun an diese Baustelle herangemacht und bin auch schon recht weit fortgeschritten. Der neue Bootloader wird den alten ersetzen können ohne dass sich Gerätefunktionen ändern oder man eine bestimmte Firmware bracuht.
Mit diesem Bootloader braucht man dann keinen PC mehr, um Firmwareupdates zu machen. Man steckt einfach einen USB-Stick mich FAT-Dateisystem und der Firmware-Datei (die dann mchf.bin heißen muss) in die USB-Buchse und startet das Gerät wie gewohnt mit gehaltener BAND- - Taste. Lässt man die BAND- - Taste sofort wieder los, wird lediglich die Firmware aus dem mchf auf dem USB-Stick gesichert und das Gerät startet danach ganz "normal". Hält man BAND- - Taste länger als 3 Sekunden gedrückt, wird zunächst die alte Firmware gesichert und danach die neue, auf dem USB-Stick befindliche Datei geflasht. Nach erfolgreichem Vorgang startet das Gerät dann sofort in die neue Firmware.
Da auch diverse Fehlerhandlings (kein USB-Stick eingesteckt, USB-Stick mit falschem Dateisystem, USB-Stick mit beschädigtem Dateisystem, fehlende mchf.bin - Datei etc.) beachtet werden müssen wird es bis zum endgültigen Release noch ein paar Tage dauern. Aber eben nur noch Tage - nicht Wochen ;D
vy 73 Andreas |
Title: Re:Firmware-Projekt "Bootloader"
Post by: dh1bay on 29. September 2015, 08:30:14
Super ,beobachte Eure acktivitaeten und bekomme in den naechsten tagen Platinen und LCD.72 de dh1bay |
Title: Re:Firmware-Projekt "Bootloader"
Post by: DC3AX on 29. September 2015, 10:30:38
Hervorragend!
kann ich Dich irgendwie unterstützen?
vy 73! Ulrich |
Title: Re:Firmware-Projekt "Bootloader"
Post by: DF8OE on 29. September 2015, 18:33:19
Nicht mehr - bin fast fertig. Ein ALPHA-Bootloader läuft schon auf meinem mcHF (!!!) - er flasht auch schon und liest auch schon. Ich habe aber noch nicht alle möglichen Fehler abgefangen, was unbedingt nötig ist (z.B. kein Platz mehr auf dem Stick für eine Sicherung der FW, Stick schreibgeschützt etc. pp) aber das ist nur noch eine Frage von Tagen ;D
Leider zieht das Ganze eine weitere Hardware-Mod nach sich, da Chris "vergessen" hat, die +5V via Diode und Polyfuse auf die OTG-Buchse zu legen...
Die erste Beta wird noch diese Woche zum Testen freigegeben.
Wer schon mal Teile beschaffen will: 1 Schottky-Diode (SMD) mit möglichst geringem Spannungsabfall und Imax > 500mA 1 Polyfuse 200...500mA 1 USB-Stick mit Mikro-USB-Stecker oder ein Adapter Mikro-USB-Stecker auf USB-A-Buchse
Leider ist DL mal wieder nicht auf dem aktuellen Stand. Es gibt Sticks, die BEIDE USB-Stecker-Normen vereinen - aber eben nicht in DL:
aber hier gibts die (http://www.ebay.de/itm/BESTRUNNER-8GB-USB-Stick-OTG-Mikro-USB-Speicherstick-Flash-Drive-Memory-Handy-PC-/331392949317?hash=item4d288f1c45)
vy 73 Andreas |
Title: Re:Firmware-Projekt "Bootloader"
Post by: DC3AX on 29. September 2015, 18:45:44
Schon mal daran gedacht den Loader als Flashdrive laufen zu lassen? Dann kann man die alte Firmware herunter kopieren und die neue drüber kopieren... So macht es der ST-Link Adapter der Nucleo-Boards von STM. |
Title: Re:Firmware-Projekt "Bootloader"
Post by: DF8OE on 29. September 2015, 19:01:11
Mein Bootloader wird folgende Funktionen haben:
1) nur Sicherung der existierenden Firmware mchf --> USB-Stick 2) erst Sicherung der existierenden Firmware mchf --> USB-Stick, anschliessend Neuprogrammierung des auf dem Stick vorhandenen Binaries
Das läuft auch schon soweit ::)
Der Bootloader ist 100% kompatibel mit dem bestehenden Firmware-Konzept; man kann damit Clints Firmware und auch die aus meinem/unserem Github verwenden.
Nur muss man sich entscheiden: Entweder Update via PC und Windows mchf-manager
oder
Update per USB-Stick
Beides gleichzeitig bzw. wahlweise geht nicht.
vy 73 Andreas |
Title: Re:Firmware-Projekt "Bootloader"
Post by: DL1MX on 13. November 2015, 13:46:15
Hallo Andreas,
warum geht der Bootloader eigentlich nicht an der J10 USB Buchse? Hab mal kurz gegoogelt und scheinbar geht auch der USB HS Anschluß an PB14/PB15.
https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy.st.com%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fUSB%20High%20Speed%20core%20with%20embedded%20phy&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=1864
Gruß Marco |
Title: Re:Firmware-Projekt "Bootloader"
Post by: DF8OE on 13. November 2015, 14:56:02
...weil ich diese Buchse freihalten möchte für DMA-Anwendungen wie "mcHF wird als Soundkarte erkannt" und am zweiten Port soll ein USB-Stick hängen für diverse Funktionen ::)
vy 73 Andreas |
Title: Re:Firmware-Projekt "Bootloader"
Post by: DL1MX on 13. November 2015, 15:04:22
Dann wäre es doch fast sinnvoll die beiden Buchsen bzw. die vier Drähte zu zu tauschen, oder? Dann brauche ich keinen Adapter, kann den USB-Stick direkt einstecken, später evtl. Konfiguration, Audios, Speicher ex- und imporieren und an die kleine Buchse hänge uch den Laptop, etc..
Gruß Marco |
Title: Re:Firmware-Projekt "Bootloader"
Post by: DF8OE on 13. November 2015, 15:19:51
Bei den geplanten Erweiterungen kommt der Adapter dann nur später. Es wäre am Besten gewesen, gleich beide Buchsen als USB-A auszuführen. Aber wir müssen das nehmen, was wir haben. Basteln ist aber nicht verboten...
vy 73 Andreas |
Title: Re:Firmware-Projekt "Bootloader"
Post by: hb9frh on 13. November 2015, 15:27:05
Ich verstehe nicht ganz... Man kann doch beide als USB-A ausführen und entsprechend beschriften.
Oder bin ich da falsch?
73, René |
Title: Re:Firmware-Projekt "Bootloader"
Post by: DF8OE on 13. November 2015, 16:05:48
Nein René - Du liegst ganz richtig. Das meinte ich mit "basteln"...
vy 73 Andreas |
Diskussions- und Newsboard des DARC-Ortsverbandes I40 | Powered by YaBB SE
© 2001-2003, YaBB SE Dev Team. All Rights Reserved.
|