Hallo, ist es eigentlich möglich den Bootloader bei AVR µCs direkt aus dem Betrieb heraus zu starten (Ohne Hardware Eingriffe)?
Tom wrote: > Hallo, > > ist es eigentlich möglich den Bootloader bei AVR µCs direkt aus dem > Betrieb heraus zu starten (Ohne Hardware Eingriffe)? Watchdog einschalten und ablaufen lassen müsste gehen.
kann ich nicht einfach per asm auf 0x00 springen? Kann man eigentlich auch Speichersprünge in C machen? Über einen NULL Pointer oder so?
Unterstützt dein Compiler keinen Softwarereset? Der sollte den Sprung zum "Start" machen...
Interrupts aus nicht vergessen. Wenn der Bootloader gut ist sollte einfaches Reinspringen reichen.
Tom wrote: > ist es eigentlich möglich den Bootloader bei AVR µCs direkt aus dem > Betrieb heraus zu starten (Ohne Hardware Eingriffe)? Nein, denn AVRs haben garkeinen Factory-Bootloader. Du mußt erst einen Bootloader reinbrennen und der kann dann alles, was man in ihn einprogrammiert hat. Wie man diesen nun aufruft, hängt ganz davon ab, z.B. muß man für einige Bootloader einen Pin entsprechend setzen. Einige Bootloader haben auch API-Calls an einer bestimmten Adresse. Diese sind dann komplett in Assembler geschrieben, damit das Speicherabbild der Applikation nicht zerstört wird. Somit ist ein gefahrloser Rücksprung zur Applikation möglich. Z.B. um größere Datenmengen im Flash zu speichern. Peter
Günstigenfalls sollte der Bootloader in der dafür vorgesehenen und per Fuse einstellbaren, oberen Flash-Region liegen und bei RESET automatisch aufgerufen werden. Somit ist immer ein definierter Start des Controllers möglich. Will man von der Applikation in den Bootloader, genügt ein RESET über den Watchdog. Ausführen des Bootloaders ohne RESET kann, falls der Bootloader nicht alle benötigten I/O-Register selber initialisiert, in einem völlig undefinierten Aufruf und den daraus resultierenden Konsequenzen enden. Da der Speicher für einen Bootloader oft recht eng ist, sollte man so viel wie möglich von der Hardware erledigen lassen.
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.