Hallo, hat jemand eine Idee oder Ahnung, wie man eine CRC in das ELF (File) bekommt ? Ich will das ganze Flash mit dem CRCSCAN Modul beim start der CPU prüfen lassen. Postbuild Tools ? CPU = ATtiny814 IDE = Microchip/Atmel Studio 7. Leider funktioniert das zusammenbauen des ELF (File) für den Productionprogrammer immer noch nicht, es fehlen dann immer die Lockbits. Also fällt der Umweg über das Hex File aus. Danke, Gruß Sascha PS.das wundert mich etwas das seitens des Herstellers nichts angeboten wird ! (zumindest nichts gefunden)
Du kannst dir theoretisch mittels objcopy (siehe google) den Flash Inhalt in ein *.bin schaufeln. Darüber lässt du dann ein Programm laufen, was die CRC berechnet. Das zurückbauen ins ELF File erfordert allerdings meist etwas Übung und Kenntnisse der Toolchain. Eine Möglichkeit wäre hinter der .text section im Linkerscript eine CRC section anzulegen und darin dann die CRC neu einzulinken. Eine andere Möglichkeit ist es, sich eine Variable im Code anzulegen: bspw: const uint32_t __my_crc_value; und diese dann mittels toolchain-Tools umzubauen. Dazu wird die LMA (Load memory address), also die stelle an der der initwert der variablen im flash steht, ausfindig gemacht und das elf file an dieser Position umgefrickelt. Problem daran ist, zu verhindern, dass der CRC Wert der Variable im Flash mit in die CRC-Berechnung einfließt Das ist beides nicht wirklich schön. Aber mir fällt spontan nichts anderes ein. Alles in allem kein Hexenwerk. Wenn man allerdings mit den Tiefen der toolchain weniger zu tun hat, ist das schon eine kleine Hürde sich das notwendige Wissen zusammenzusuchen. Ich habe dir leider kein Beispiel. Bin gespannt, ob jemand eine gute Idee hat, die nicht so verbastelt ist :)
Sascha schrieb: > hat jemand eine Idee oder Ahnung, wie man eine CRC in das ELF (File) > bekommt ? google nicht installiert? keyword srecord/srec_cat/filter crc, http://srecord.sourceforge.net/ ... hat alle tools die notwendig sind um im post build process das zu erreichen. beispiele hierzu sind zahllos im web zu finden! mt
srec_cat wird mit dem AS7 mitinstalliert und kann dann im Projekt über die Build-Events aufgerufen werden. Das hier habe ich zum Beispiel in einem Projekt als "Post-build even command line" stehen: srec_cat $(MSBuildProjectDirectory)\$(Configuration)\$(OutputFileName).hex -intel -fill 0xFF 0x0000 0x2ffe -crc16-l-e 0x2ffe -o $(OutputFileName).s19
bei mir sieht das post-build event in as7 für attiny85 so aus: srec_cat "$(OutputDirectory)\$(OutputFileName).hex" -intel -crop 0x00 0xFFE -fill 0xFF 0x00 0xFFE -CRC16_Big_Endian 0xFFE -broken -o "$(OutputFileName)_crc.hex" -intel -line-length=44
Ja, die Lösung mit dem srec_cat ist mir bekannt, dabei kommt aber keine CRC ins .elf File rein. Ja die Lösung einer .section im ROM zu definieren ist kein Problem, das geht auch aus dem C-Code heraus. Dort dann die Werte von Hand eintragen, die man sich aus einer Hex oder Bin Datei berechnen lässt. Über das linkerscript file geht es natürlich auch. Ein .elf File zu editieren scheint mir zu komplex. Es ist halt sehr praktisch, weil in dem .elf File alles drin ist. Flash,EEPROM,Fuse und Lockbits. Gruß Sascha
Sascha schrieb: > Dort dann die Werte von Hand eintragen, > die man sich aus einer Hex oder Bin Datei berechnen lässt. Du könntest auch den Buildprozeß zweimal ausführen - das erstemal, damit Du eine gültige CRC kriegst, und das zweitemal, um die automatisch in irgendeine kleine inkludierte Sourcedatei zu verfrachten, die nicht mehr als ein define enthält.
Damit kann man im elf-file rumpoken: https://studio.segger.com/index.htm?https://studio.segger.com/emScript_classes.htm
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.