www.mikrocontroller.net

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


Autor: Dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dave (Gast)
Datum:

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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was willst Du denn genau schützen ?

Autor: Dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.