Hallo, ich möchte eine .hex Datei über den in LPC812 eingebauten ISP Bootloader einspielen. Dazu konvertiere ich sie vor dem Veschicken in das binäre Format. Das Konvertieren und Flashen funktioniert soweit auch ganz gut. Das Problem ist, dass der Code nach dem Reset nicht ausgeführt wird. Also habe ich mir die von LPCXpresso generierten .bin und .hex Dateien angeschaut. Das erste, was mir aufgefallen ist, ist der Wert 0x49EDFFEF in der .bin Datei bei adress 0x1C. In der .hex Datei ist dieser Bereich mit Nullen gefüllt. Wenn ich nur diese Stelle in der hex Datei ändere und die Checksumme für die Zeile aktualisiere, wird der Code ausgeführt... Wie bekomme ich diesen Wert aus der Hex Datei raus? Oder ist der Wert Hardware-spezifisch für den LPC8xx? In der Hex Datei gibt es noch in der vorletzten Zeile den "Start Segment Address Record", den ich aber wie die meisten hex2bin Konverter ignoriere.
Gast
#3373263
Daniel W. schrieb: > ich möchte eine .hex Datei über den in LPC812 eingebauten ISP Bootloader > einspielen. Dazu konvertiere ich sie vor dem Veschicken in das binäre > Format Was verwendest Du zum Flashen? http://www.flashmagictool.com/ kann HEX direkt runterladen. Zudem kann man checken, ob der Bootloader wirklich läuft, und zum Programm einen Verify machen.
Ich habe meinen eigenen Flasher geschrieben, weil er direkt in eine etwas größere Anwendung integriert wird. Deshalb geht es mir hier eher um das Verständnis, woher der Wert aus der Binärdatei kommt...
Die NXP Controller benötigen an der Adresse 0x1C eine CRC ueber die ersten Bytes in der Vectortabelle. Wenn das nicht uebereinstimmt, springen sie direkt in den Bootloader. Da die IDEs sowas in der Regel von allein machen, kriegt man das erst mit wenn man drauf reinfällt. Ich kenne den LPC812 zwar nicht, denke aber das ist da auch so. Keil z.B. macht das immer beim Flashen von alleine. Ich benutze Crossworks und die machen das ueber ein tool mit dem Namen crossscript.exe. Der JS-Code dazu ist:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
Wenn du nur mit hex- und bin-Files umgehst sollte sich das einfach durch ein kleines Programm lösen lassen. Vielleicht kennt ja jemand was fertiges.
Das war des Rätsels Lösung. :) Danke Jürgen
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.