【问题标题】:avrdude: can't handle ELF file checkio.hex, ELF file support was not compiled inavrdude:无法处理 ELF 文件 checkio.hex,ELF 文件支持未编译
【发布时间】:2017-08-20 04:24:27
【问题描述】:

我正在寻找指导我解决 AVR 微控制器(操作系统: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;
}

相关的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:注意:“flash”内存已指定,将执行擦除周期 要禁用此功能,请指定 -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。)
  • objcopy 命令使用CFLAGS3,但未定义。你已经定义了GFLAGS3

标签: c debian embedded avr toolchain


【解决方案1】:

错误不是 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

【讨论】:

  • @PravinKamble :当答案是可接受的解决方案(或您在多个答案中的首选答案)时,StackOverflow“方式”是将其标记为“已接受”,而不是发表评论或感谢 - 尽管这是赞赏- 不客气。
猜你喜欢
  • 2020-09-28
  • 2011-03-16
  • 2013-08-13
  • 2023-03-15
  • 1970-01-01
  • 2021-12-17
  • 2011-03-07
  • 2013-03-29
  • 2011-04-02
相关资源
最近更新 更多