Moinsen, hab zu dem Thema nichts weiter gefunden. Nachdem ich per Winavr das Programm für den AVR compiliert habe, soll der Compiler noch eine Zeile anhängen mit zB !FWT-0.4b-1.0. Meine Projekte mit USB bekommen nen Bootloader zum gemütlichn Firmwareupdate. Damit man jetzt nicht ausversehen die falsche hex draufschiebt, sucht das PC Programm erst nach dieser Zeile um zu prüfen ob Hardwareversion und Projekt Übereinstimmen. Daher suche ich nach ner möglichkeit, dass der Compiler das am Ende noch in die Hexdatei schiebt, gibts da irgendwelche Anweisungen für das makefile oder sonstewo? Natürlich kann ichs auch immer manuell einfügen, aber irgendwann vergisst mans mal und Firmwareupdaten geht nicht beim Bekannten, der das Gerät nutzt. BRäuchte das für dieses Gerät: http://www.fritzler-avr.de/HP/fwt.php
Gast
#2598624
Warum denn erst ins Hex-File einfügen?? Ich mache das so: Eine Konstante (String) definieren und zwar im Source-Code selber. Geht in C und ASM. Der Sourcecode wird geändert, dann kann ich auch den String mit Datum, Versionsnummer etc noch verändern, dann steht es auch dort wo es meiner Meinung nach hingehört. Compilieren, linken etc. und schon steht der String auch im Hex-File. Beim direkten Suchen im HEX_File ggf. darauf achten daß z.B. eine "0" aus zwei Byte bestehen kann. nämich "3" und "0", weil 0x30 die Hex-Darstellung ist.
Gast
#2598652
Hi >Beim direkten Suchen im HEX_File ggf. darauf achten daß z.B. eine "0" >aus >zwei Byte bestehen kann. nämich "3" und "0", weil 0x30 die >Hex-Darstellung ist. ???? 0x30 ist der ASCII-Code für '0' und beansprucht nur 1 Byte. MfG Spess
1 | |
@spess53 Eben doch ;) In nem hexfile steht zB 0x30 als ASCI drinne, das belegt die ASCI chars 3 und 0 , also 2 byte und geparsed ergeben die 2 bytes das byte 0x30 ;) Das echo lässt sich ins makefile basteln? Im Sourcecode stehen ja auch Firmwareversion und Hardwareversion, ist nur bissel anstrengend das rauszufiltern, man weis ja niw wos steht.
Gast
#2598764
Hi >In nem hexfile steht zB 0x30 als ASCI drinne, das belegt die ASCI chars >3 und 0 , also 2 byte und geparsed ergeben die 2 bytes das byte 0x30 ;) Das Auseinanderdröseln brauchst du nur, wenn du ein Zeichen in Hexadezimal darstellen willst. Beim Parsen wird das Zeichen (1 Byte) komplett behandelt. MfG Spess
Nochmal: Eine .hex Datei ist keine Binärdatei sondern eine Textdatei in der jeder Hexchar als ASCI steht. http://de.wikipedia.org/wiki/Intel_HEX
Martin Wende schrieb: > Das echo lässt sich ins makefile basteln? Generell ja, kommt aber darauf an, um was für ein Makefile es eigentlich geht. AVR-Studio dazu zu bringen, es in das automatisch generierte Makefile zu schreiben, dürfte z.B. kaum möglich sein.
Ich nutze ja winavr und dort das Makefile ausm Tool mfile. Ist also frei editierbar. so eben mal gemacht:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
dabei kommt raus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Vielen Dank! bastel ich jetz nochn
1 | |
draus und nehms als mein neues beispielmakefile ;)
Ich an deiner Stelle würde das aber nicht dort "hart-codieren". Schreibe weiter oben im Makefile so was:
1 | |
2 | |
und dann
1 | |
Dann kannst du das auch gleich als Define in den Code weiterreichen, und musst es so nur an einer Stelle pflegen. EDIT: Sehe gerade, du bist auch selber auf Ähnliches gekommen.
Hab da jetz nur was gefunden wie man eine makefile Variable im C Code nutzen kann aber nicht andersrum. http://stackoverflow.com/questions/7900661/how-to-read-a-cmake-variable-in-c-source-code Das bespiel versteh ich jetzt auch grade nicht so wirklich. Hat natürlich vorteile sich die Variablen gleich ausm C Code zu saugen, vor allem da dies schon im C Code vorkommt (wird aufm Display angezeigt)
Martin Wende schrieb: > Das bespiel versteh ich jetzt auch grade nicht so wirklich. > > Hat natürlich vorteile sich die Variablen gleich ausm C Code zu saugen, > vor allem da dies schon im C Code vorkommt (wird aufm Display angezeigt) Warum gehst du nicht einfach den umgekehrten (und viel einfacheren Weg) und übernimmst im C-Code die Angaben aus dem Makefile?
Das wär doch zu einfach ;) Mach ich jetz auch so.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.