Hallo! Ich brauche einen Bootloader für Ethernet für STM32F7/H7, am Besten per TFTP. Gibts da was fertiges, oder muss ich mich selber hinsetzen? fchk
Bedeutet, du hast das ganze Ethernet Handling im Bootloader. Das wird klotzig, aber machbar. Vielleicht hat's jemand als Fingeruebung gemacht und auf Github geworfen, allenfalls fand's ein Hersteller als noetiges Tool. Allenfalls ist sowas zu kaufen. Und sonst eine gute Uebung. Fuer einen Profi, sonst ist nichts.
Ich schlage vor das ganze IP-Handling nicht im eigentlichen Bootloader zu machen. Ist viel Code und da kann es durchaus auch mal passieren daß man einen Bugfix machen muss, den man dann schwer in den Bootloader reinbekommt. Vorschlag daher: Pack nen kleines SPI-Flash mit aufs Board, Größe 2x der Flash Deines µC. In Deinem normalen Programmcode hast Du dann eine Funktion um ein Update zu empfangen. Da braucht es dann auch kein nerviges TFTP sein, das kannst Du bequem per HTTP hochladen oder so. Hinterher Prüfsumme checken, RSA-Signatur, was Du willst. Wenn Programm erfolgreich empfangen machst du einen Neustart in den Bootloader. Der Bootloader prüft jetzt ob ein neues Programm vollständig im SPI-Flash ist. Wenn ja, kopiert er es von dort in den Controller und startet es. Sollte es zu irgendeinem Fehler kommen, hast Du noch den 2. Sektor im Flash mit einem anderen Programm. Das kann die Version vorher sein oder ein älteres "Golden"-Image. Z.B. über einen Taster, Watchdog oder ähnliche Funktion kannst Du das dann reinflashen lassen.
Na ja, ich brauche ja kein TCP, nur ARP, UDP und ICMP. Das hat vor 30 Jahren in 8k-Bootroms auf den Netzwerkkarten reingepasst und sollte eigentlich nicht so das Problem sein. fchk
Frank K. schrieb: > Das hat vor 30 > Jahren in 8k-Bootroms auf den Netzwerkkarten reingepasst und sollte > eigentlich nicht so das Problem sein. Da konnte man mit einem solchen Kleinod auch noch richtig Geld verdienen. Ausserdem wird man das wohl in Assembler geschrieben haben .....
> Da konnte man mit einem solchen Kleinod auch noch richtig > Geld verdienen. Ausserdem wird man das wohl in Assembler > geschrieben haben ..... ...ach, konnte nicht auch schon "damals" jedes Compiler-Backend "assembler schreiben" und die Linker es "ROM-able" machen? Ich meine, da geht es doch nicht um Rechner a la PDP-11 mit Knebelschalter an der Konsole um den Bootloader einzugeben sondern um PCs, ja?
Frank K. schrieb: > Na ja, ich brauche ja kein TCP, nur ARP, UDP und ICMP. niemand zwingt Dich das mit TCP zu machen, Du kannst meinen Vorschlag auch gerne mit TFTP umsetzen wenn Du möchtest. Ich wollte nur aufzeigen daß Du dann gleich viel mehr Möglichkeiten hast. Auch langfristig, falls Du z.B. irgendwann mal auf IPv6 migrieren möchtest. Was Du auch noch bedenken solltest ist die Zuweisung der IP. Also entweder nur die MAC hinterlegen und nen DHCP-Client implementieren oder Du musst irgendwo MAC, IP, Netzmaske, Standardgateway hinterlegen. Im SPI-Flash könntest Du problemlos einen Sektor dafür vorsehen.
Frank K. schrieb: > Gibts da was fertiges Etwas ganz fertiges gibts wohl nicht, da jede Hardware völlig anders ist, also die Kombination von Mikrocontroller, Speicher, MAC, PHY, etc. Aber ein Grundgerüst fürs Nucleo-F767ZI Board gibts fixfertig z.B. von Oryx Embedded: https://www.oryx-embedded.com/products/CycloneBOOT.html
:
Bearbeitet durch User
Das U-Boot https://de.wikipedia.org/wiki/Das_U-Boot https://www.emcraft.com/stm32f7-discovery-board/installing-uboot-to-stm32f7-discovery-board Das kann auch andere OS außer Linux starten.
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.