在as4.19里面的memory setting加flash,sram段都没有问题,但是对于eeprom的处理是有bug的,这个在avrfreaks里面有提到
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=113157
所以makefile必须手工指定
先从winavr的makefile工具生成一个通用的makefile
加入两部分内容
LDFLAGS += -Wl,--section-start=.eep2=0x810050
以及
%.eep: %.elf
@echo
@echo $(MSG_EEPROM) $@
-$(OBJCOPY) -j .eeprom -j .eep2 \
--set-section-flags=.eeprom="alloc,load" \
--set-section-flags=.eep2="alloc,load" \
--change-section-lma .eeprom=0 \
--change-section-lma .eep2=0x50 \
-O $(FORMAT) $< $@ || exit 0
-O $(FORMAT) $< $@ || exit 0
这样就可以正确生成.eep文件了
但是其实这时候生成的hex文件是有问题的
<无法粘贴图片>

在hex的生成中要排除附加的eep段
# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) -R .eep2 -R .eeprom -R .fuse -R .lock $< $@
否则下载器就会认为是错误文件
这样就解决了eeprom附加段的问题,
这里要注意的是makefile的更改一定要小心空格问题,刚开始老是失败,最后才发现是空格引起的