Hallo zusammen. Ich wollte prinzipiell fragen, ob es möglich ist, eine Firmware mit integriertem Bootloader - code zu programmieren? Konkret: Ich habe ein "Mini-M0" Board, welches ich mit dem programmer "mikroProg" programmiere. Wenn ich einen Bootloader - Programm downloade, kann ich anschliessend über die USB Schnittstelle des Mini-M0 Boards und dem Programm "mikroBootloader" eine neue Firmware draufladen, ohne dass ein Hardware-Programmer benötigt wird. Das funktioniert super. Leider dauert dieser Download über die USB-Schnittstelle sehr lange - im Gegensatz zum download mit dem mikroProg-Programmer. Kann ich auch in die Ziel-Firmware einen Bootloader einbauen, damit ich den schnellen Download verwenden kann (mikroProg-Programmer für Massenproduktion unserer Hardware), und der Kunde am Schluss dennoch die Möglichkeit hat, die Firmware über USB up-zu-daten (ist halt langsam, aber so oft sollte es keine updates geben...) geht das überhaupt? Das Programm würde sich ja dann während dem abarbeiten selbst überschreiben... oder verstehe ich da was falsch? mfg Iguan
Ohne Angabe für welche Platform kann man des nicht mit JA oder Nein Beantworten Bei manchen µC Plattformen geht das, indem man mittels Bootloader zuerst einen BootLoaderUpdater als Applikation Flashed, der dann den Bootlader austauscht
Verstehst du unter Plattform die IDE? Die heisst "MikroC Pro for ARM". Der uC ist der "STM32F051..." Gruss Iguan
Als Plattform meine ich auf welchen Microcontroller dein Board basiert. In deinem Fall also ein STM32. Bei denen wäre der oben beschriebene Weg möglich.
Ok, danke! Und ohne Bootload-updater geht das nicht? Wegen dem selbst überschreiben des Bootloaders während dem abarbeiten des Bootloader codes?? mfg Iguan
Die genaue Funktion des Bootvorganges und die Varianten sind in der Dokumentation beschrieben. Die Speicheraufteilung und Bootkonfigurationen in Übersicht hier: https://www.st.com/resource/en/datasheet/stm32f051r8.pdf Der Ablauf und die Konfigurationen im Detail und in Bezug auf den jeweiligen genauen Prozessor, hier: https://www.st.com/resource/en/application_note/cd00167594.pdf Lies Dir das bitte durch und stelle dann, falls nötig, konkrete Fragen.
Warum so umständlich? Liefere die Geräte doch einfach mit ganz normalem Bootloader und Applikation aus, dann braucht der Bootloader sich nicht selbst überschreiben. Im Werk flasht Du einfach Bootloader und Applikation in einem Rutsch drauf. In der Praxis wird es nämlich so gut wie niemals nötig den Bootloader selbst später nochmal zu updaten. Also bleibt der drauf bis ans Ende aller Tage.
Iguan schrieb: > geht das überhaupt? Das Programm würde sich ja dann während dem > abarbeiten selbst überschreiben... oder verstehe ich da was falsch? Was genau ist das Problem, machst du nicht schon genau das? Geht es darum, wie man Bootloader+Firmware bei der Serienproduktion in einem Schritt auf den Controller bekommt? Der Bootloader überschreibt ja sowieso den Speicher während er läuft, das scheint also zu gehen! Warum überhaupt ist der Bootloader so langsam? USB sollte doch schnell genug sein...
Iguan schrieb: > Der uC ist der "STM32F051..." Ein STM32F051 hat kein integriertes USB. Wie ist der denn dann ans USB angeschlossen?
Gerd E. schrieb: > Iguan schrieb: >> Der uC ist der "STM32F051..." > > Ein STM32F051 hat kein integriertes USB. > > Wie ist der denn dann ans USB angeschlossen? Vielleicht hat er irgend so eine Bitbanging-USB-1 Geschichte am Laufen (jemand hat das ja mal aus sportlichem Ehrgeiz auf nem winzigen AVR implementiert, es würde mich keinesfalls wundern wenn dieses kleine Kunstwerk zwischenzeitlich auch schon auf ARM portiert wurde), das würde auch die langsame Übertragung erklären.
Iguan schrieb: > Und ohne Bootload-updater geht das nicht? Wegen dem selbst überschreiben > des Bootloaders während dem abarbeiten des Bootloader codes?? Ja sag mal, bist du blind oder liest du keine µC-Dokumentationen? Der STM32F051 hat bereits einen fest eingebauten Bootlader, den du auf alle Fälle über den ersten UART erreichen kannst. Siehe Bedeutung der BOOT0 und BOOT1 Pins der STM32 Controller (bei manchen Typen nur BOOT0). Für das Programmieren über diesen Bootlader brauchst du nix in deiner Firmware zu ändern oder zu berücksichtigen, du mußt bloß die besagten BOOT-Pins in deiner Schaltung richtig behandeln. Und du mußt die gewaltige Investition tätigen, dir vom freundlichen Chinesen einen simplen USB-->serial Konverter mit "TTL"-Pegel (also ohne den V.24 Pegel) zu kaufen, Kostenpunkt so etwa 2..3 €. Mein selbstgeschriebenes Brenn-Programm dazu findest du hier im Forum - falls du dir nicht was Eigenes zu schreiben gedenkst und auch mit dem Zeug von ST oder dem alten ERFOS nicht arbeiten willst. Gewiß gibt's auch noch andere Brennprogramme für diesen Zweck. W.S.
Iguan schrieb: > Ich wollte prinzipiell fragen, ob es möglich ist, eine Firmware mit > integriertem Bootloader - code zu programmieren? Was für eine dümmliche Frage. Ein Bootloader ist ein Stück Software. Sobald du irgendwie Software in dem µC kriegst, kann es natürlich auch ein Bootloader sein. > Konkret: > > Wenn ich einen Bootloader - Programm downloade, kann ich anschliessend > über die USB Schnittstelle des Mini-M0 Boards und dem Programm > "mikroBootloader" eine neue Firmware draufladen, ohne dass ein > Hardware-Programmer benötigt wird. Das funktioniert super. Leider dauert > dieser Download über die USB-Schnittstelle sehr lange - im Gegensatz zum > download mit dem mikroProg-Programmer. Kann sein. Ist aber nicht zwingend so. Ich kenne den "mikroBootloader" nicht, aber HID hört sich falsch an. Standardprotokoll für USB-Bootloader ist DFU. Und warum ist das ein Problem? Und warum verwendest du nicht den (im ROM) eingebauten Bootloader? Oder auch weiterhin den Download per SWD? > Kann ich auch in die Ziel-Firmware einen Bootloader einbauen, damit ich > den schnellen Download verwenden kann Selbstverständlich kannst (könntest?) du deinen eigenen Bootloader schreiben. Ob der dann schneller ist als der ominöse "mikroBootloader", bleibt abzuwarten. Einfacher wäre es sicher, wenn du einen der unzähligen vorgefertigten (USB DFU) Bootloader verwendest. > geht das überhaupt? Das Programm würde sich ja dann während dem > abarbeiten selbst überschreiben... oder verstehe ich da was falsch? Da verstehst du was falsch. Der Bootloader ist der Teil, der sich gerade nicht selber überschreibt. Der Flash ist praktisch zweigeteilt. Am Anfang (wo der µC nach dem Reset hinspringt) liegt der Bootloader. Und dahinter liegt das eigentliche Programm, das der Bootloader bedarfsweise lädt bzw. im Normalfall einfach nur ausführt (weil es früher bereits geladen wurde).
:
Bearbeitet durch User
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.