Ich habe auf einem Demoboard den Fat Bootloader in Betrieb nehmen können, dabei sind mir einige Fehler aufgefallen, die man vielleicht beheben kann, mir haben sie viel Zeit gekostet.
BootLoaderID
Einmal ist es, wie schon in einem anderen Beitrag geschrieben, sehr verwirrend, dass in der Doku einmal von BootID, LoaderID und BootLoaderID gesprochen wird, aber immer das selbe gemeint ist.
Dass die Konstante "BootLoaderID" heißen muss steht da zwar im Text, aber man sollte noch darauf hinweisen, dass sie exakt so geschrieben sein muss, Groß/Kleinschreibung ist dabei wichtig.
FAT_Bootmode
In der Demo Xmega_FATBoot steht im Define folgendes
// FAT_BootMode = aes; // plain or AES
// FAT_BootFile = 'filename'; // an AES file
FAT_BootMode = plain; // plain or AES
FAT_BootFile = 'filename'; // a plain file
Auch wenn ich das auf "plain" stehen lasse wird ein verschlüsselter Code entschlüsselt.
Wozu dient also der Bootmode "aes"? Er hat keine Wirkung wie es scheint.
AES Verschlüsselung
Dann gibt es einen Errorcode "bootAESerr". Wozu dient er?
Ich habe mal probiert was passiert wenn eine falsch verschlüsselte oder unverschlüsselte Datei geladen wird.
Wenn ich im Code oder im Loader eine falsche AES Signatur angebe merkt der Loader nichts!
Er schreibt munter drauf los und schreibt dann natürlich totalen Müll ins Flash. Spaßigerweise ist das Device dann hinüber, weil er danach auch die Speicherstelle im eeprom auf $00 setzt und beim nächsten Reset der Loader dann versucht das korrupte Programm zu starten!
Der spätere Anwender darf das Gerät dann einschicken damit man das eeprom löschen kann, ganz üble Sache.
Ist es irgendwie möglich eine falsch verschlüsselte Datei zu erkennen und das Schreiben zu unterbinden?
Ist es möglich das Setzen von EEprom[EEpromEnd] = $00 nach dem Flashen zu verhindern?
Dann würde ich das in der eigentlichen Software machen, um sicher zu gehen dass es nur bei korrekt laufender Software auch gesetzt wird. Schlägt ein Flashvorgang fehl, weil z.B. die Datei auf der SD-Card defekt war, landet man so immer wieder im Loader bis es geklappt hat. Das wäre sehr viel sicherer.
Ich schicke z.T. Geräte nach Australien, das wird teuer wenn sich da eins aufhängt.
BootLoaderID
Einmal ist es, wie schon in einem anderen Beitrag geschrieben, sehr verwirrend, dass in der Doku einmal von BootID, LoaderID und BootLoaderID gesprochen wird, aber immer das selbe gemeint ist.
Dass die Konstante "BootLoaderID" heißen muss steht da zwar im Text, aber man sollte noch darauf hinweisen, dass sie exakt so geschrieben sein muss, Groß/Kleinschreibung ist dabei wichtig.
FAT_Bootmode
In der Demo Xmega_FATBoot steht im Define folgendes
Code
// FAT_BootMode = aes; // plain or AES
// FAT_BootFile = 'filename'; // an AES file
FAT_BootMode = plain; // plain or AES
FAT_BootFile = 'filename'; // a plain file
Auch wenn ich das auf "plain" stehen lasse wird ein verschlüsselter Code entschlüsselt.
Wozu dient also der Bootmode "aes"? Er hat keine Wirkung wie es scheint.
AES Verschlüsselung
Dann gibt es einen Errorcode "bootAESerr". Wozu dient er?
Ich habe mal probiert was passiert wenn eine falsch verschlüsselte oder unverschlüsselte Datei geladen wird.
Wenn ich im Code oder im Loader eine falsche AES Signatur angebe merkt der Loader nichts!
Er schreibt munter drauf los und schreibt dann natürlich totalen Müll ins Flash. Spaßigerweise ist das Device dann hinüber, weil er danach auch die Speicherstelle im eeprom auf $00 setzt und beim nächsten Reset der Loader dann versucht das korrupte Programm zu starten!
Der spätere Anwender darf das Gerät dann einschicken damit man das eeprom löschen kann, ganz üble Sache.
Ist es irgendwie möglich eine falsch verschlüsselte Datei zu erkennen und das Schreiben zu unterbinden?
Ist es möglich das Setzen von EEprom[EEpromEnd] = $00 nach dem Flashen zu verhindern?
Dann würde ich das in der eigentlichen Software machen, um sicher zu gehen dass es nur bei korrekt laufender Software auch gesetzt wird. Schlägt ein Flashvorgang fehl, weil z.B. die Datei auf der SD-Card defekt war, landet man so immer wieder im Loader bis es geklappt hat. Das wäre sehr viel sicherer.
Ich schicke z.T. Geräte nach Australien, das wird teuer wenn sich da eins aufhängt.