Forum: Mikrocontroller und Digitale Elektronik Missing lines in Hex-File for Bootloader UC3


von Boot_Prog (Gast)


Lesenswert?

Hallo allerseits,

ich programmiere momentan eine Bootloaderanwendung für einen 
AT32UC3C0512C (auf der Arbeit als Werkstudent, daher darf ich keinen 
Code teilen). Der Bootloader erhält an sich ein Hex-File und schreibt 
dieses in den Flash. Das funktioniert soweit auch ohne Probleme. Das 
Hex-File entnehme ich direkt aus Atmel Studio 7. Innerhalb des Hex-Files 
ist mir aber ein Addresssprung aufgefallen:

:085B400091260E9CCC7ED822B8
:105C0000C0080000C0080000C0080000C008000074

Wenn ich das Programm also über den Bootloader (mit dem Hex-File) in den 
Flash schreibe fehlen an dieser Stelle Zeilen und im Flash stehen dann 
nur 0xF's (Grundzustand des Flashs). Programmiere ich den Flash aber 
mittels JTAG (also komplett ohne Bootloader) wird in den Zeilen Code 
eingefügt.
Programmiere ich den Flash nun wieder über den Bootloader und füge die 
Zeilen manuell ein, funktioniert das Programm ohne Probleme (ansonsten 
natürlich nicht).
Ich Frage mich jetzt woher der Code kommt. Ich finde in keinem 
Output-File Informationen über diese Zeilen, nur das die darauf 
folgenden Zeilen (ab Adresse 0x5C00) die Exceptions enthalten.

(Linker benutze ich keine in meinem Programm)
Daher meine Fragen:
1) Woher könnte der Code kommen?
2) Darf ich zur Programmierung mit dem Bootloader evtl. nicht das 
Hex-File verwenden?
3) Wie kann ich meinen Bootloader so anpassen, dass der Code 
miteingefügt wird? (Dafür müsste ich natürlich wissen woher er kommt)

Ich hoffe ihr könnt mir helfen, ich komme dabei nicht weiter.

Mit freundlichen Grüßen

Boot_Prog

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Boot_Prog schrieb:
>... Innerhalb des Hex-Files
> ist mir aber ein Addresssprung aufgefallen:
>
> :085B400091260E9CCC7ED822B8
> :105C0000C0080000C0080000C0080000C008000074
>
> Wenn ich das Programm also über den Bootloader (mit dem Hex-File) in den
> Flash schreibe fehlen an dieser Stelle Zeilen und im Flash stehen dann
> nur 0xF's (Grundzustand des Flashs). Programmiere ich den Flash aber
> mittels JTAG (also komplett ohne Bootloader) wird in den Zeilen Code
> eingefügt.

Wo sollen den diese Daten, die Du nach dem Flashen via JTAG siehst 
herkommen? Wenn Du das selbe hex file nimmst, zum flashen via JTAG, dann 
müsste da nach den flashen auch eine Lücke sein, es seiden, die Daten in 
der Lücke stehen an einer anderen Stelle in der Datei.

> Ich Frage mich jetzt woher der Code kommt. Ich finde in keinem
> Output-File Informationen über diese Zeilen, nur das die darauf
> folgenden Zeilen (ab Adresse 0x5C00) die Exceptions enthalten.

Hast Du mal die Checksummen der Datei überprüft? Womit guckst Du Dir das 
Hex-File an? Hast Du mal das Hex-File in ein Bin-File konvertiert und 
Dir das angeguckt?

> (Linker benutze ich keine in meinem Programm)
> Daher meine Fragen:
> 1) Woher könnte der Code kommen?

Der könnte ggf. schon vorher da gestanden haben. Ist das evtl. irgend 
ein spezieller Konfigurationsbereich? Schon mal im Datenblatt 
nachgeguckt?

> 2) Darf ich zur Programmierung mit dem Bootloader evtl. nicht das
> Hex-File verwenden?

Doch, dazu ist es da.

> 3) Wie kann ich meinen Bootloader so anpassen, dass der Code
> miteingefügt wird? (Dafür müsste ich natürlich wissen woher er kommt)

Heraus bekommen, woher diese Zauberdaten kommen.

mfg Torsten

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.