Forum: Mikrocontroller und Digitale Elektronik Format des Intel-Hex-File aus AVR-Studio variiert


von Dave (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem: Ich schreibe gerade für den ATxmega einen 
Bootloader, der ein komplettes hex-File über den UART empfängt und die 
Daten neu ins Flash schreibt. Nun habe ich bei einigen Test-Programmen 
das Problem, dass zwischen vielen hex-Zeilen mit ":10" auch welche mit 
nur zwei Bytes sind (":02"). Kann man das bei AVR-Studio oder WinAvR 
irgendwo einstellen, dass nur Zeilen mit ":10" generiert werden?

Natürlich könnte ich meinen Bootloader entsprechend verändern, damit er 
damit umgehen kann, nur überlege ich momentan, später noch eine 
AES-Verschlüsselung einzubauen, und da kämen mir die normalerweise 16 
Bytes pro Zeile sehr recht, da ich so bei einem Paket gleich Checksumme 
berechnen kann und die Daten danach dekodiere.

Danke schonmal.

Dave

von Mario (Gast)


Lesenswert?

Das ist nicht so schwierig wie man denkt, siehe hier:
AVR Bootloader in C - eine einfache Anleitung

Die ist schon ein HEX-File-Parser dabei (welcher auch die Zeilenlänge 
berücksichtigt)

von Thomas (Gast)


Lesenswert?

Es ist völlig normal, dass im Intel Hex Record auch Datenlängen < 16 
Bytes auftauchen. Es gibt z.B. Vectoreinträge in Sprungleisten zu 
schreiben wo 2 Bytes ausreichen. Bei den Systemen die ich kenne, kann 
man die Recordlänge aus besagten Gründen eben nicht konfigurieren. Dein 
Boot Loader sollte deshalb in jedem Fall die Länge auswerten und NICHT 
auf 16 Bytes interpolieren.

Gruss

von Dave (Gast)


Lesenswert?

Das habe ich fast befürchtet. Mein Problem ist auch nicht der 
Bootloader, als vielmehr eine effektive Verschlüsselung als zweiten 
Schritt.

von Thomas (Gast)


Lesenswert?

Was willst Du denn genau schützen ?

von Dave (Gast)


Lesenswert?

Meine erste Überlegung war, jeweils nur die 16 Datenbytes pro Zeile zu 
verschlüsseln - das passt halt einfach ganz gut zu den 128bit breiten 
Datenblöcken von AES128.

Die andere Überlegung ist halt, das gesamte Hex-File zu verschlüsseln 
und dann zu übertragen. Der Controller müsste dann alle empfangenen 
Daten erstmal entschlüsseln und kann sie dann erst weiterverarbeiten.

Mir erschien halt die erste Idee deutlich einfacher in der 
Implementation, daher meine Nachfrage nach den Zeilenlängen.

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.