Hallo,
ich habe ein Problem mit AVRDUDE. Ich habe einen neuen AVR ATmega8 in
meine bereits funktionierende Schaltung gewechselt und ihn mit AVRDUDE
zu programmieren versucht, doch leider bricht das Programm mit folgender
Fehlermeldung ab:
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0x12 != 0xff
avrdude: verification error; content mismatch
avrdude: safemode: Fuses OK
avrdude done. Thank you.
*** Error code 1
Mein Makefile sieht folgendermaßen aus:
MCU=atmega8
all: logger.S
avr-gcc -mmcu=${MCU} logger.S -o logger.elf
avr-objcopy -O ihex logger.elf logger.hex
install:
sudo avrdude -p m8 -P /dev/ttyU0 -b 115200 -c avr109 -U
flash:w:logger.hex
Das Assemblerfile sieht so aus:
;
; $Id: logger.S,v 1.2 2009/07/09 09:52:58 wolfram Exp $
;
#define ASSEMBLER 1
#define __SFR_OFFSET 0
#include <avr/io.h>
.text
; was nun folgt, gehört in den
FLASH-Speicher
.global main
; main ist auch in anderen
Modulen bekannt
main:
;.INCLUDE "../include/m8def.inc"
;.CSEG
;.ORG 0x0000
rjmp reset ; RESET 0x0000
reti ; INT0 0x0001
reti ; INT1 0x0002
reti ; TIMER2 COMP 0x0003
reti ; TIMER2 OVF 0x0004
reti ; TIMER1 CAPT 0x0005
rjmp timer1_compare ; TIMER1 COMP A 0x0006
reti ; TIMER1 COMP B 0x0007
reti ; TIMER1 OVF 0x0008
rjmp timer_0_overfl ; TIMER0 OVF 0x0009
reti ; SPI, STC 0x000A
rjmp receive_byte ; USART RXC 0x000B
reti ; USART URDE 0x000C
reti ; USART TXC 0x000D
rjmp ADC_complete ; ADC 0x000E
reti ; EE_RDY 0x000F
reti ; ANA_COMP 0x0010
reti ; TWI 0x0011
reti ; SPM_RDY 0x0012
reset:
Für Eure Hilfe bedanke ich mich im voraus.
HUE
Hallo,
leider hat -B10 keine Auswirkung auf das Ergebnis. Der Fehler ist immer
noch der gleiche.
Hat noch jemand eine Idee?
Mit freundlichen Grüßen
HUE
Dann musst du wohl mal dein Programmiergerät befragen. Ich sehe
gerade, dass es ja ein AVR109 ist, da wirkt der Parameter -B10
auch nicht, da es bei AVR109 keine im Protokoll vorgesehene
Methode gibt, den ISP-Takt zu modifizieren.
Hallo,
ich habe schon verschiedene Settings probiert, doch keinen Erfolg. Mir
ist auch ein Rätsel, warum vorher die Schaltung programmiert werden
konnte, jetzt nach dem Chipwechsel nicht mehr.
Ich habe auf dem Board einen 16Mhz Quartz verbaut. Kann dies das Problem
für die fehlschlagende Kommunikation sein?
MfG
HUE
HUE schrieb:
> Ich habe auf dem Board einen 16Mhz Quartz verbaut. Kann dies das Problem> für die fehlschlagende Kommunikation sein?
Die Kommunikation (mit dem Programmer) schlägt ja gar nicht fehl.
Wo ist der 16-MHz-Quarz drauf, auf dem Programmer oder auf dem
Targetboard?
Ein frischer AVR wird mit 1 MHz getaktet und muss mit weniger als
250 kHz ISP-Takt programmiert werden. Das muss den Programmer
beherzigen -- AVRDUDE kann (beim AVR109-Protokoll) da nichts dran
ändern.
Hallo und guten Abend,
ich habe soeben die Fuse Bytes High and Low gelesen und festgestellt,
daß sie den Werkseinstellungen entsprechen. Dies ging ohne Probleme zu
Lesen, wenn ich aber diese Bytes schreiben will, geht es wieder schief?
Was soll denn das sein, das ich hier so mit Mißerfolg verwöhnt werde.
;-)
MfG
HUE
Hallo,
ich konnte die Fuse Bytes doch noch setzen, ich hatte nur einen Fehler
in der Anweisung zum Setzen. Leider bleibt das Problem des Flashens von
Programmen ein Problem.
Fazit: Die Einstellungen von AVRDUDE sind in Ordnung, da die Fuse Bytes
ordnungsgemäß gelesen und geschrieben werden.
Nur das Updaten des Flash funktioniert nicht.
Hat jemand noch einen Tip zum Schluß?
Mit freundlichen Grüßen
HUE
HUE schrieb:
> Hat jemand noch einen Tip zum Schluß?
Ja, den, den ich dir die ganze Zeit schon gebe und den du beharrlich
ignorierst: bring deinen Programmer dazu, den ISP-Takt runterzudrehen.
Ja, man kann mit etwas zu viel Takt trotzdem noch fuses lesen, aber
beim Programmieren von Massendaten kracht es dann.
Alternativ kannst du die Fuses so stellen, dass der AVR höher getaktet
wird (vom externen Quarz betreiben oder schnelleren RC-Oszillator
wählen).
Falls es das nicht ist (d. h., du hast es nachgemessen), dann müsstest
du deinen Programmer überprüfen. Welchen du genau benutzt, hast du
uns bislang sowieso noch nicht verraten.
Hallo nochmals,
ich habe, da ich sehr unter Zeitdruck stand, die Stategie geändert und
meine Schaltung mit GAVRASM und PONYPROG zum laufen gebracht. Ich habe
echt Nerven gelassen, da ich auch noch die Rechner und das OS wechseln
mußte.
Doch nun zum alten Problem:
Ich habe eine Testschaltung mit einem Mega8 ohne ext. Oszillator oder
Quartz. Zum Flashen nehme ich einen Programmer aus dem Internetshop:
www.myirshop.de, welcher heißt: 'ISP USB Programmer für Atmel AVR
Studio'.
Dann habe ich meine Quellen mit folgendem Makefile erzeugt und geflasht:
MCU=atmega8
all: logger.S
avr-gcc -mmcu=${MCU} -c logger.S
avr-ld -mavr2 logger.o -o logger.elf
avr-objcopy -O ihex logger.elf logger.hex
install:
sudo avrdude -p m8 -P /dev/ttyU0 -b 115200 -c avr109 -U
flash:w:logger.hex:i
Die Assembler Datei habe ich angehängt. Der Fehler ist immer der
gleiche:
avrdude: 244 bytes of flash written
avrdude: verifying flash memory against logger.hex:
avrdude: load data flash data from input file logger.hex:
avrdude: input file logger.hex contains 244 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100%
0.14s
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0x12 != 0xff
avrdude: verification error; content mismatch
avrdude: safemode: Fuses OK
avrdude done. Thank you.
*** Error code 1
Stop in /home/wolfram/source/avr/logger_mega8 (line 9 of Makefile).
Für Eure Hilfe danke ich im Voraus.
MfG
HUE