2017-03-27 12 views
0

私はAVRマイクロコントローラ(OS:Debian 32 bit)の以下のエラーを解決する方法をお手伝いします。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; 
} 

および関連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.01秒

AVRDUDE:デバイス署名= 0x1e9502

AVRDUDE:注:「フラッシュ」メモリが指定されているが、消去サイクルは、この機能を無効に-Dオプションを指定するには を実行されます。

AVRDUDE:消去チップ

AVRDUDE:警告:SCK期間を設定することはできません。 usbaspファームウェア アップデートを確認してください。

AVRDUDE:入力ファイル "checkio.hex" を読ん

AVRDUDE:ELF

AVRDUDEとして検出された入力ファイルcheckio.hex自動:ELFファイルcheckio.hexを扱うことができない、ELFファイルのサポートはありませんでした

AVRDUDEでコンパイル:ファイル 'checkio.hex' から読み取る

AVRDUDE行いませんでした。ありがとうございました。

+2

Typo:変数 'GFLAGS3'を設定しましたが、ルールで' CFLAGS3'を参照しています。 (個人的には、私は 'AVRDUDE_OPTS'と呼んでいます) – duskwuff

+1

objcopyコマンドは' CFLAGS3'を使いますが、定義されていません。代わりに 'GFLAGS3'を定義しました。 – Clifford

答えて

3

avrdudeがelfファイルを処理できないのではなく、.hexファイルが最初のインスタンスの16進ファイルではなくelfファイルであるというバグです。

あなたのobjcopyをコマンドは、出力ファイル形式を指定する必要があります。

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

はおそらく見かけタイプミス:GFLAGS3の代わりCFLAGS3は、この原因ですが、あなたはまだちょうどihexいうし-O ihexが必要になります。

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

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

うん!!問題が解決しました..通知するために感謝します。 –

+0

@PravinKamble:答えが受け入れられる解決策(またはいくつかの中であなたが選んだ答え)である場合のStackOverflowの「方法」は、コメントや感謝を投稿するのではなく、「受け入れ」とマークすることです。 – Clifford

関連する問題