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.