Forum: Mikrocontroller und Digitale Elektronik Atmega16U2 Bootloader Grösse


von Alex1 (Gast)


Lesenswert?

Hallo zusammen,

ich habe gerade die Atmega16U2's zum Programmieren bekommen. Getestet 
habe ich mein Programm mit etwas unterhalb von 50% Programmcode und 
etwas oberhalb.

Mein Problem ist jetzt:
Der DFU-Loader sollte ja nur die oberen 4k belegen, d.h. ich habe 75% 
für mein Programm über.
Sobald das Programm aber über 50% kommt, programmiert Flip nicht mehr, 
aber der dfu-programmer unter Linux bügelt scheinbar auch den Loader 
über.

Wie kann das sein? Darf das Programm nicht über 50 % kommen, wenn ich 
parallel den DFU-Loader im Prozessor haben möchte (um weiter Updates 
machen zu können)?

Danke
Alex

von c-hater (Gast)


Lesenswert?

Alex1 schrieb:

> Der DFU-Loader sollte ja nur die oberen 4k belegen

Sagt wer?

Im Prinzip kann ein Bootloader so groß sein, wie er will (oder vielmehr: 
sein muß). Nur einige wenige Bytes seines Codes müssen zwingend "oben" 
im Bootloaderbereich liegen, im Extremfall sogar nur ganze vier. D.h.: 
Du kannst aus der Größe des Bootloaderbereichs keinerlei Schlüsse auf 
die Größe des Bootladers ziehen.

Es wäre also erstmal sinnvoll, sich über Größe und tatsächliche Lage des 
Bootloaders im Speicher zu vergewissern...

von Alexander H. (alex1)


Lesenswert?

Hallo,
War leider eine Woche außer Gefecht... .

So wie ich das verstehe, kann der der AVR's nur aus dem Flash ausgeführt 
werden (Harvard Architektur). Da ich mir den Hex-Code im Hexfile 
angeschaut habe (der Aufbau ist ja kein Geheimnis) und im Hexfile Steht, 
dass alles ab der Adresse 0x3XXX geflasht werden soll, nehme ich doch 
stark an, dass das Programm auch in den Oberen 4K läuft.
Also verstehe ich etwas noch falsch?

Hier noch mal meine Fragen:
Sobald das Programm aber über 50% kommt, programmiert Flip nicht mehr,
aber der dfu-programmer unter Linux bügelt scheinbar auch den Loader
über.

Wie kann das sein? Darf das Programm nicht über 50 % kommen, wenn ich
parallel den DFU-Loader im Prozessor haben möchte (um weiter Updates
machen zu können)?

Danke
Alex

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.