avrdude:无法处理ELF文件checkio.hex,

时间:2017-03-27 12:42:16

标签: c debian embedded avr toolchain

我正在寻找指导我解决AVR Micro控制器中的以下错误的人(操作系统:Debian 32位)。

/* 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;
}

AND相关的make文件是:

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:注意:&#34; flash&#34;已指定存储器,将执行擦除周期          要禁用此功能,请指定-D选项。

avrdude:擦除芯片

avrdude:警告:无法设置sck期限。请检查usbasp固件 更新

avrdude:阅读输入文件&#34; checkio.hex&#34;

avrdude:输入文件checkio.hex自动检测为ELF

avrdude:无法处理ELF文件checkio.hex,未编译ELF文件支持

avrdude:从文件中读取&#39; checkio.hex&#39;失败

完成了avrdude。谢谢。

1 个答案:

答案 0 :(得分:3)

错误不是avrdude无法处理elf文件,而是你的.hex文件是elf文件而不是第一个实例中的hex文件。

您的objcopy命令应指定输出文件格式:

avr-objcopy -O ihex checkio.elf checkio.hex
            ^^^^^^^

也许显而易见的错字:GFLAGS3而不是CFLAGS3是造成这种情况的原因,但您仍然需要-O ihex,而不仅仅是ihex

CFLAGS3=-j .text -j .data -O ihex

checkio.hex:checkio.elf
    avr-objcopy $(CFLAGS3) checkio.elf checkio.hex