Bootloader, gcc, avr231 (AES Bootloader)

Gast #173061
Lesenswert?

Hallo zusammen,

nun muss ich mich auch mit bootloadern beschäftigen. Und zwar soll es
ein bootloader a la avr231 werden, d.h. das objectfile soll aes encoded
an den mega128 übertragen werden.
Prinzipiell ist mir das Bootloader-Konzept eigentlich soweit klar. Wie
immer steckt die Tücke im Detail (Und darin, dass ich mal wieder keine
passende Doku finde).

Meine Fragen also:
1. Hat schon jemand die avr231 auf den gcc übertragen? Es sind ja doch
einige iar spezifische Sachen drinnen, die man wohl anpassen muss.
2. Prinzipiell: Ist es auch möglich gleichzeitig einen Bootloader und
ein erstes Programm auf den avr aufzuspielen? Also nur ein Schritt und
nicht 2 wie bei Bootloader aufspielen und dann erst Anwendung? Dazu:
2.1. Wie sag ich es dem Compiler? (Wohl das hauptproblem von mir.)
2.2. Und was macht der mit dem Init-Code? Bzw. Der init-code ist ja
dann ja sogar 2x vorhanden; also 1x im Bootloader und dann nochmal im
"Vektor 0".
3. Wo (zur Hölle) finde ich Doku zu avr-libc init?

Ich habe mir bereits die Bootloader Megaload von Werner B. (leider
Teile in ASM) und den usbisp von Mathias Weißer angeschaut. Ich bin
aber in der Thematik noch zu wackelig auf den Beinen, als dass ich
einfach Konzepte übernehemen will, ohne wirklich zu verstehen was sie
tun. Betrifft vor allem das Problem: Wie sag ichs dem gcc, bzw. was
macht der gcc darauf.

Schoene Gruesse,

Scheintod

PS: Mathias: Wie schnell ist denn Dein Programmer? Und: In Deinem
Readme zum usbisp schreibst Du, dass Platinen von dir gg.
Aufwandsentschädigung zu beschaffen sind.
Gast #173062
Lesenswert?

Hi

zu 2.
Ja das ist möglich. Ich bau mir dazu mittels kleinem Perl-Skript aus
zwei HEX-Dateien eine. Geht sicher eleganter, erfüllt aber seinen
Zweck.
Der Initcode ist dann zweimal drin. Den brauchst du aber immer, denn
wenn der der Applikation weg ist und die Programmierung dann schief
geht startet auch der Bootloader nicht mehr.

zu 3.
http://www.google.de/search?hl=de&q=avr+libc+documentation&btnG=Google-Suche&meta=

zu USBisp
schnell? Wenn ich ihn im Rucksack habe habe und mit dem Mopped
unterwegs bin u.U. ganz schön schnell ;-)

Ernsthaft:
Für einen Mega128 (Flash komplett) braucht der USBisp etwa 21s inkl.
Verify.

Platinen gibts bei mir für 6€ das Stück.

Matthias
Gast #173063
Lesenswert?

Man kann das auch händisch machen:

Das eine Hexfile nehmen, die letzte Zeile löschen (Enderecord) und das
nächste daran klatschen.

Ich würde mich aber sicherer fühlen, wenn ich mit dem Laden der
Anwendung per Bootloader gleich geprüft habe, daß der Bootloader auch
wirklich funktioniert.


Der Initcode muß für jeden extra sein, da er unterschiedlich ist !

Die Anwendung würde ziemlich blöd aus der Wäsche gucken, wenn sie die
Variablen des Bootloaders initialisiert bekommt bzw. umgekehrt.


Peter
Gast #173064
Lesenswert?

Hi,

Das mit dem Hex-File ist ja fast zu einfach um wahr zu sein :)

@matthias: Danke für den Google-Link. Vielleicht hab ich ihn verdient.
Hatte mich ein bischen blöd ausgedrückt.
Die avr-libc Doku ansich kenne ich. Die ist allerdings ...   nun je ...
verbesserungsfähig. Wenn man schon weiss was man braucht, dann bringt
sie einen glaube ich auch gut weiter. Wenn man noch nicht weiss, wohin
die Reise geht, schaut man besser wo anders nach.
Was ich speziell vermisse ist mal eine schöne Beschreibung, was der
Init genau macht (Also der Init-"Prozess"). Hab aber inzwischen ein
bissl in den Quellen gestöbert aber da auch nicht wirklich
weitergekommen. (Irgendwo muss doch der Init im source liegen?)

@usbisp: kann ich die beiden chips auch über Dich beziehen?

@peter: Das mit dem Prüfen dachte ich mir auch. Andererseits muss
vermutlich/hoffentlich ich (persönlich) > 1000 cpus programmieren.
Der Test muss dann 'irgendwie' anders & schneller gehen (und eh
statfinden wg. der anderen Funktionen).

Herzlichen Dank für die Infos &

Schoene Gruesse,

Scheintod
Gast #173066
Lesenswert?

Hi Henrick.

Die kenn ich. avr231 ist die selbe für AES verschlüsselung (moderner,
mehr bits, schneller). Große Teile des codes sind auch die selben. Aber
meine Probleme dass die apnote für den iar ist und ich mich mit den
Details des gcc noch nicht so genau auskenne bleibt leider :(.

Schoene Gruesse,

Scheintod
Gast #173068
Lesenswert?

(schon 2 Fehlpostings, naja kann nicht alles glatt gehen heute)
Ich bin mal auf eine Internet-Seite von einer Uni gestoßen, wo
Studenten AES (128) auf einem AVR in Assembler implementieren mussten.
Die besten 3 Lösungen standen zum Download. Eine davon habe ich auf
Festplatte. Ich möchte sie hier aber nicht einfach veröffentlichen.
Wenn du mal deine Mail angibst kann sie dir schicken. Das sollte sich
relativ einfach in einen bestehenden Bootloader einbinden lassen.

Gruss Henrik
Gast #173069
Lesenswert?

Hi

was macht der init-Prozess:
Im großen und ganzen setzt er den Stackpointer auf, initialisiert die
globalen Variablen und ruft dann die main-Funktion auf.

Den Mega8 und FTDI gibts zur Not auch bei mir dann aber mit etwas
aufgerundeten Reicheltpreisen (zusammen 10€) da ich die Versandkosten
von Reichelt nicht zuschießen will.

Matthias
Gast #173070
Lesenswert?

Hi,

@Henrik: besten danke für das nette Angebot. Für so heikle Themen wie
Verschlüsselung ist es mir allerdings lieber wenn ich genau weiss,
woher der code kommt. Ausserdem wäre dann auch noch die Frage nach der
Lizenzierung  zu klären. Trotzdem aber danke nochmal.

@Matthias: Hast du eine Ahnung wo der code dafür herkommt oder wo er
dokumentiert ist? Die avr-libc scheint es ja nicht zu sein. Also der
gcc. Da habe ich bei mir (WinAVR unter cygwin) aber auch nur
object-files gefunden, die so aussehen, als könnten sie die richtigen
sein.

Wg. den Platinen/Chips rühr ich mich einfach per e-mail wenn ich soweit
bin. Muss erst mit dem 'echten' elektroniker reden :)

Schoene Gruesse,

Scheintod
Gast #173071
Lesenswert?

Deinen Zweifeln kann man Abhilfe schaffen. Lade dir das AES-Sheet von
der Homepage der Autoren runter und lass die (zahlreichen) Testvektoren
durchlaufen. Wenn diese mit den angegebenen Ergebnissen übereinstimmen,
stimmt auch die Implementierung.
Das mit der Lizensierung ist nicht meine Sache, ich hätte dir nur die
Suche erspart. Ob und wie du den Code verwenden darfst mußt du mit den
Autoren selbst ausmachen!

Gruss Henrik
Gast #173074
Lesenswert?

eine kleine Verständnisfrage vom Anfänger auf dem Gebiet:
Wenn ich nach ap231 einen Bootloader auf dem Chip erstellt habe, kann
ich dann mein hex/obj/bin/wasauchimmer-File nachträglich verschlüsseln
und dann raufspielen?
Oder muß schon während des Quelltext-Compilen diese Verschlüsselung
eingebunden werden?
Gast #173075
Lesenswert?

Hi Micha,

Prinzipiell funktioniert das so:

1. Bootloader kompilieren und incl. Key auf avr installieren
2. Programm kompilieren
3. Programm mit Key verschlüsseln
4. Programm auf avr installieren
5. goto 2

Das installieren läuft dabei soweit ich es verstanden habe mit einem
eigenen tool.

In der Application Note aber gut & ausführlich erklärt.

Schoene Gruesse,

Scheintod

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren