Hallo, mal eine kleine Frage zum Thema Bootloader. Ich habe ein Mikrocontrollerprojekt bei dem die Daten nicht über eine standart Schnittstelle, sondern über ein eigenes Protokoll per Interrupt empfangen werden. Aus diesem Grund kann ich den Datenempfang nicht ohne weiteres in den Bootloader packen. Ich würde gerne folgendes realisieren und brauche Ratschläge: Ich empfange wärend der regulären Programmlaufzeit die "neuen" Daten für den Bootloader. Dieses Speichere ich im Flash ab. (z.b. Nutze ich nur halbe Flashgröße für mein Programm, somit kann ich die andere Hälfte für die empfangenen Bootloaderdaten verwenden). Wenn alle neuen Daten da sind, löse ich den Bootloader per Software aus. Dieser kopiert dann die "neuen" Daten auf die niedrigen Speicherbereiche und löscht den oberen Flash wieder. Kann man das so machen? Was haltet Ihr davon??? Schönen gruß und interessantes mitgrübeln. Skittler.
Ist dein Spezialprotokoll so kompliziert, dass es nicht im Bootloader implementiert werden kann? a) Bei den (meisten? - weiß ich nicht aus dem Kopf heraus) AVRs kann man die Interruptvektoren auf die Bootloaderadresse umschalten b) Da der Bootloader ja sonst nichts zu tun hat, kann man praktisch alle Datenübertragungen (z.B. Soft-uart, I²C, soft-spi, 1Wire) auch mit Warteschleifen machen (insbesondere, weil das Flash-schreiben auch seine Zeit dauert) hth. Jörg
Aber den Bootloader selber kann man auch überschreiben, oder? Denn wenn sich was am Empfangsprotokoll ändert, könnte ich es ja sonst nicht korrigieren.
Dass der Bootloader sich selbst überschreiben kann oder es einen Zustand gibt, aus dem man ohne SPI-Flashen nicht mehr rauskommt, ist IMO recht gefährlich. Solange man man nicht immer selbst das Flashen durchführt, kann ein externer Idi^H^H^Hunbedarfter Kunde so ein Konzept schnell ruinieren und zu ungeahntem Serviceaufwand führen. Überleg dir lieber etwas länger einen "foolproof"-Bootloader, der vollständig in die sichere Bootloader-Section passt und der mit den passenden Fuses nie kaputtgehen kann.
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.