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
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)
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
Das habe ich fast befürchtet. Mein Problem ist auch nicht der Bootloader, als vielmehr eine effektive Verschlüsselung als zweiten Schritt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.