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



我正在寻找指导我解决 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;
}

和相关的制作文件是:

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 周期。请检查 USBASSP 固件更新。

avrdude:AVR 设备已初始化并准备接受指令

阅读 |

#####avrdude:设备签名 = 0x1e9502

avrdude:注:"闪存"内存已指定,将执行擦除周期 要禁用此功能,请指定 -D 选项。

阿弗杜德:擦除芯片

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

avrdude:读取输入文件 "checkio.hex">

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

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

avrdude:从文件"checkio.hex"读取失败

阿夫杜德完成。 谢谢。

错误不在于avrdude不能处理elf文件,而是你的.hex文件首先是一个elf文件,而不是一个十六进制文件。

您的 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

相关内容

  • 没有找到相关文章

最新更新