Sorry, mir fällt echt kein intelligenterer Titel ein... Ich muss "leider" für mein avr projekt von linux auf windows umsteigen und sehe mich mit ein paar Problemen konfrontiert. Im Prinzip sieht das ganze so aus, dass es eine Software für einen kleinen Slave-Controller und eine Software für einen großen Mastercontroller gibt, die ich unabhängig voneinander entwickelt habe. Der Große controller flasht die kleinen sobald sie erkannt werden via isp/spi. Dafür hab ich es bisher so gemacht, dass in einem kleinen shell script die software für den kleinen controller in das hexfile des großen controllers mit offset eingebunden wird. Ich richte mich nun aktuell mit eclipse + avr plugin ein unter windows und frage mich deshalb, ob es eine möglichkeit gibt das von mir beschriebene auch "einfacher" zu erhalten (sowas wie dem linker zu sagen die compilierte software vom kleinen controller mit offset als section in das große hexfile zu laden.) Damit mich wenigstens vielleicht irgendwer versteht häng ich mal das (von vor jahren entstandene, ich checks ja schon selber nimmer :( buildscript an): ... make .... cd /master-controller/Hexfiles/ avr-objcopy -I binary -O ihex master.bin master.hex SIZE=`wc -l master.hex | awk {'print $1'}` ((SIZE--)) head -$SIZE master.hex >> master+slave.hex echo :020000021C00E0 >> master+slave.hex cat /slave-controller/Hexfiles/slave.hex >> master+slave.hex avrdude -p m1280 -B 1 -P usb -c avrispmkII -U flash:w:master+slave.hex
IMHO ist das Aneinanderhängen per cat und das Patchen unsauber und funktioniert nur so lange, wie der Mastercode nicht in den Adressbereich des Slavecodes reicht. Nach Murphy ist der Mastercode mal zu gross und es knallt... Sicher wäre es, wenn du den Slavecode z.B. als const uint8_t Feld[] in das ROM des Masters schreibst und daraus auch die Daten fürs Flashen des Slaves liest. Wenn du dieses const Feld in eine einzelne Objektdatei nimmst, kann die auch statisch/extern bleiben und vom Linker zum jeweils geänderten Quellcode des Masters "am Stück" eingebunden werden. Noch weiter kannst du gehen, indem du diesem Objektcode eine eigene Sektion zuweist. Hier kann nich aber nur den Hinweis geben, dass es gehen müsste (Doku zu attribute section und Linker control scripts lesen). Praktische Erfahrung habe ich da keine. Das const uint8_t Feld[] könntest du mit einem einfachen zur Not schneller-geschrieben-als-gegooglet "bin-to-char Konverter" machen lassen, ähnlich wie die Leute Bitmaps oder Fonts in ihren Sourcecode einbinden. In der Codesammlung könnte hierzu was sein. Die Technik um Daten im ROM unterzubringen und auszulesen ist im AVR-GCC-Tutorial unter dem Stichwort PROGMEM zu finden.
Wenn es um das "aneinanderhängen" von Dateien geht, könnte "copy quelldatei1,quelldatei2 zieldatei" helfen. mfG Ingo
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.