Gast
#3921152
Hallo Leute, ich habe ein Board mit einem LPC1788 drauf. Im Normalfall benutze ich die LPCxpresso IDE, die ich eigentlich recht schick finde (wäre da nicht das Debuglimit von (mittlerweile) 256k :/ ). Wollte mir mit Eclipse und dem gcc-arm-none-eabi eine IDE selber basteln (hat für den STM32F4 bereits super funktioniert, bis auf ein paar Bugs mit dem Jlink-Plugin). Ich habe mich also eine Weile durch Datenblätter/User Guides gewälzt. Mir ist folgendes aufgefallen: Sowohl bei ARM, also auch in den Dokumenten von NXP steht, dass der interne Bootloader einen Checksum der Vektortabelle überprüft. Diese befindet sich an Adresse 0x1C im Flash. Ohne diese Checksum, wird der Code als invalide eingestuft und der Bootloader startet ihn nicht. Ist das korrekt? Ebenfalls hab ich mich durch die Makefiles von LPCxpresso und durch das Startup- und Linkerskript geklickt. Mir ist aufgefallen, dass im Startup Code die Vektortablle an der Stelle 7 (Adresse 0x1C) auf 0 gesetzt ist mit dem Kommentar "Reserved". Auch im Linkerskript und im Makefile taucht nichts auf, was auf eine Prüfsumme an dieser Stelle hinweist. Ich habe irgendwo im Internet gelesen, dass das ELF/AXF-File nach dem Build noch duch ein extra Programm gejagt wird, welches dann die Prüfsumme "reinpatcht". Das Makefile enthält aber keinen Befehl dazu. Ich finde das sehr merkwürdig und verstehe das nicht. (Der Compiler kann die Prüfsumme ja auch nicht reinmachen, da er nur weiß, dass es sich um einen Cortex M3 handelt und nicht weiß, dass er von NXP ist, oder? Das Projekt kompiliert in LPCXpresso und ist auch funktionsfähig. Mein letzter Ansatz wäre, dass sowohl der interne Bootloader, als auch der Segger Jlink beim programmieren diese Checksum "on the fly" einbauen. Kann mir dazu jemand was sagen? Die Informationen die man so findet sind leider so zerstückelt... Vielen Dank M.H.