Forum: Mikrocontroller und Digitale Elektronik Bootloader aus Betrieb heraus starten?


von Tom (Gast)


Lesenswert?

Hallo,

ist es eigentlich möglich den Bootloader bei AVR µCs direkt aus dem 
Betrieb heraus zu starten (Ohne Hardware Eingriffe)?

von Karl H. (kbuchegg)


Lesenswert?

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.


von Tom (Gast)


Lesenswert?

kann ich nicht einfach per asm auf 0x00 springen?
Kann man eigentlich auch Speichersprünge in C machen? Über einen NULL 
Pointer oder so?

von Rooney B. (rooney)


Lesenswert?

Unterstützt dein Compiler keinen Softwarereset? Der sollte den Sprung 
zum "Start" machen...

von Andreas L. (andi84)


Lesenswert?

Interrupts aus nicht vergessen. Wenn der Bootloader gut ist sollte 
einfaches Reinspringen reichen.

von Peter D. (peda)


Lesenswert?

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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.