Also nachdem meine Frau ihren alten Laptop nicht mehr braucht, hab ich
endlich einen mit LPT.
Jetzt wollte ich ein einfaches Programm in meinen Tiny25 laden, für den
ich eigens nen kleinen Programmer gebastelt hab (stk200)
#include <avr/io.h>
int main (int argc, char **argv) {
int i = 0;
while (1) {
i ++;
}
return 0;
}
mein Makefile sieht so aus:
TARGET = main
MCU = attiny25
CC = avr-gcc
OBJCOPY=avr-objcopy
CFLAGS =-g -mmcu=$(MCU) -Wall -Wstrict-prototypes -Os -mcall-prologues
-save-temps -fno-common
all: $(TARGET).hex
$(TARGET).hex : $(TARGET).o
$(OBJCOPY) -j .data -j .text -O ihex $^ $@
$(TARGET).elf: $(TARGET).o
$(CC) $(CFLAGS) -o $@ -Wl,-Map,$(TARGET).map $^
$(TARGET).o : $(TARGET).c
$(CC) $(CFLAGS) -c $^ -o $@
program: $(TARGET).hex
install_giveio.bat
avrdude -p t25 -c stk200 -U flash:w:$(TARGET).hex -v
uninstall_giveio.bat
clean:
rm -f *.o *.map *.elf *.hex *.s *.i
ist mehr oder weniger abgetippt aus der Roboternetz-Wiki. Allerdings war
da ein Werwechlser der Parameter $^ $@ in der Zeile ${OBJCOPY}
Beim Programmieren hab ich jetzt folgendes Protokoll..
install_giveio.bat
Copying the driver to the windows directory
target file: C:\WINDOWS\giveio.sys
Das System kann die angegebene Datei nicht finden.
Remove a running service if needed...
Installing Windows NT/2k/XP driver: giveio
installing giveio from C:\WINDOWS\giveio.sys... ok.
starting giveio... ok.
set start type of giveio to auto... ok.
Success
avrdude -p t25 -c stk200 -U flash:w:main.hex -v
avrdude: Version 5.1
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
System wide configuration file is "C:\WinAVR\bin\avrdude.conf"
Using Port : lpt1
Using Programmer : stk200
AVR Part : ATtiny25
Chip Erase delay : 4500 us
PAGEL : P00
BS2 : P00
RESET disposition : possible i/o
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page
Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages
MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------
----- ----- ---------
eeprom 65 6 4 0 no 128 0 0
4000 4500 0xff 0xff
flash 65 6 32 0 yes 2048 32 64
4500 4500 0xff 0xff
signature 0 0 0 0 no 3 0 0
0 0 0x00 0x00
lock 0 0 0 0 no 1 0 0
0 0 0x00 0x00
lfuse 0 0 0 0 no 1 0 0
0 0 0x00 0x00
hfuse 0 0 0 0 no 1 0 0
0 0 0x00 0x00
efuse 0 0 0 0 no 1 0 0
0 0 0x00 0x00
calibration 0 0 0 0 no 1 0 0
0 0 0x00 0x00
Programmer Type : PPI
Description : STK200
VCC = 0x00 (not used)
BUFF = 0x0c = pins 4,5
RESET = 9
SCK = 6
MOSI = 7
MISO = 10
ERR LED = 0
RDY LED = 0
PGM LED = 0
VFY LED = 0
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100%
0.00s
avrdude: Device signature = 0x1e9108
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be
performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: input file main.hex auto detected as Intel Hex
avrdude: writing flash (2 bytes):
Writing | ################################################## | 100%
0.00s
avrdude: 2 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex auto detected as Intel Hex
avrdude: input file main.hex contains 2 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100%
0.00s
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0001
0xc0 != 0x31
avrdude: verification error; content mismatch
avrdude done. Thank you.
make.exe: *** [program] Error 1
> Process Exit Code: 2
kann mir wer erklären, was da falsch läuft?
Das MAKEFILE geht bei mir nicht... Es läuft zwar ohne Fehlermeldung, das erzeugte HEX-File ist allerdings leer. Das scheint bei dir auch so zu sein, denn AVRDUDE sagt was von "avrdude: writing flash (2 bytes):". Erzeuge mal ein MAKEFILE mit mfile oder nimm das aus dem Anhang, das funktioniert. Allerdings hat es das Programm komplett wegoptimiert... Das ist auch richtig so, denn es macht icht wirklich etwas. Die Variable i wird nicht weiterverwendet, also braucht sie auch nicht hochgezählt werden. Das ganze erzeugte Programm besteht aus Initialisierung und einer leeren Endlosschleife. Zweitens hat AVRDUDE beim verify einen Fehler entdeckt: An Adresse 0x001 steht 0x31 statt 0xc0. Das könnte allerdings eine Folge des leeren HEX-Files sein.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.