Hallo miteinander,
ich habe vor mit einem Atmaga644 ein EPROM (27c256) zu emulieren um den
Inhalt bequem per ISP verändern zu können. Die Rohdaten liegen mir binär
als .bin-Datei vor. Nun muss ich die Daten aber irgendwie in den Flash
des Controllers bekommen. Dazu hab ich mich auch mal informiert:
Beitrag "Rohdaten direkt in Flash übertragen" ,
http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_binarydata .
Leider klappt das bei mir überhaupt nicht. Ich arbeite gerade mit dem
AVR-Studio unter Windows und verwende ein externes Makefile, das ich mir
mit MFile (WinAVR) zusammengeklickt habe. Darin muss man ja dann
folgenden Abschnitt reinkopieren:
$(OBJDIR)/%.o : %.bin
@echo Converting $<
@$(OBJCOPY) -I binary -O elf32-avr \
--rename-section
.data=.progmem.data,contents,alloc,load,readonly,data \
--redefine-sym _binary_$*_bin_start=$* \
--redefine-sym _binary_$*_bin_end=$*_end \
--redefine-sym _binary_$*_bin_size=$*_size_sym \
$(<) $(@)
@echo "extern const char" $(*)"[] PROGMEM;" > $(*).h
@echo "extern const char" $(*)_end"[] PROGMEM;" >> $(*).h
@echo "extern const char" $(*)_size_sym"[];" >> $(*).h
@echo "#define $(*)_size ((int)$(*)_size_sym)" >> $(*).h
Das hab ich ganz unten, wo auch die C Files in o Files umgewandelt
werden reinkopiert. Die rom.bin liegt in meinem Projektordner. Das
funktioniert bei mir aber nicht. Die rom.bin wird nicht umgewandelt und
mein Speicherverbrauch liegt auch nur bei ca. 150bytes. Wenn ich das
ganze ein Stückchen höher ins Makefile kopiere und die % durch rom
ersetze wird die Datei umgewandelt, aber der Compiler macht nicht mehr
was er soll. Wäre nett wenn mir jemand grob beschreiben könnte was ich
zu tun habe, ich bin langsam echt am verzweifeln.
Vielen Dank
Gruß Jannis