我正在找人指导我在AVR微控制器(OS:Debian 32位)中解决以下错误。avrdude:无法处理ELF文件checkio.hex,ELF文件支持未编译在
/* checkio.c*/
#ifndef F_CPU
#define F_CPU 16000000UL
#endif
#include<avr/io.h>
#include<util/delay.h>
#include<avr/fuse.h>
int main()
{
DDRA=0xFF;
PORTA=0;
while(1)
{
PORTA=0xFF;
_delay_ms(1000);
PORTA=0;
_delay_ms(1000);
}
return 0;
}
及相关补充文件是:
CFLAGS1=-g -mmcu=atmega32 -c
CFLAGS2=-g -mmcu=atmega32 -o
GFLAGS3=-j .text -j .data ihex
checkio.hex:checkio.elf
avr-objcopy $(CFLAGS3) checkio.elf checkio.hex
checkio.elf:checkio.o
avr-gcc $(CFLAGS2) checkio.elf checkio.o
checkio.o:checkio.c
avr-gcc $(CFLAGS1) checkio.c
burn:
sudo /home/poonam/proj_utility/avr_dude/install/bin/avrdude -p atmega32 -P /dev/bus/usb/002/004 -c usbasp -u -U flash:w:checkio.hex
clean:
rm *.elf *.hex *.o
AVRDUDE:警告:不能设置SCK周期。请检查usbasp固件更新。
AVRDUDE:AVR器件初始化并准备接受指令
阅读| ################################################## | 100%0.01S
AVRDUDE:设备签名= 0x1e9502
AVRDUDE:注意: “闪” 存储器已经被指定,在擦除周期将被执行 要禁用此功能,指定-D选项。
AVRDUDE:擦除芯片
AVRDUDE:警告:不能设置SCK周期。请检查usbasp固件 更新。
AVRDUDE:读取输入文件 “checkio.hex”
AVRDUDE:输入文件checkio.hex自动检测为ELF
AVRDUDE:不能处理ELF文件checkio.hex,ELF文件支持编译
AVRDUDE:从文件 'checkio.hex' 读取失败
AVRDUDE完成。谢谢。
错字:您已经设置了变量'GFLAGS3',但是您在规则中引用了'CFLAGS3'。 (我个人称之为'AVRDUDE_OPTS'。) – duskwuff
objcopy命令使用'CFLAGS3',但没有定义。你已经定义了'GFLAGS3'。 – Clifford