Forum: Compiler & IDEs Programmierung von Butterfly per COM-Port klappt nicht


von Daniel H. (Gast)


Lesenswert?

Hallo allerseits,

ich sehe mich momentan mit dem Problem konfrontiert, dass sich mein AVR 
Butterfly nicht mehr programmieren lässt.

Wir haben von der Uni aus diverse Programmieraufgaben mit dem 
Butterfly-Board aufbekommen, die, an sich, auch kein Problem für mich 
darstellen.
Eine Aufgabe umfasste, mit Hilfe des Piezo-Lautsprechers einen Dauerton 
zu erzeugen, eine zweite, eine Funktion zu schreiben, die einfach eine 
50ms Pause erzeugt.

Soweit so gut. Den Dauerton habe ich programmiert, und (nach einigen 
Problem wegen korridierter Batteriekontakte) aufs Board laden können. 
Klappt auch super.

Nun habe ich die Funktion für die Pause programmiert, und lade sie 
genauso auf das Board.
Nachdem ich dann aber einen Reset durchgeführt habe, ist erneut der 
Piepton zu hören.
Ich bin so ziemlich mit meinem Latein am Ende und weiß nicht mehr 
weiter.

Die Programmierung mache ich mittels WinAVR (Programmiers Notepad) und 
avrdude in C. Die Verbindung erfolgt dabei mit Hilfe eines 
USB-Seriell-Adapters am UART.

Als Bootloader müsste der Standard-Bootloader von AVR drauf sein. Was 
mir noch aufgefallen ist ist, dass beim Versuch, den aktuellen 
Bootloader mit Hilfe von AVRStudio einzuspielen beim Verifizieren 
angezeigt wird:
1
Address 0x0000, Expected 0xFFFF, Received 0x0100
Dazu kommt, dass die Verbindung in AVRStudio per "Tools" -> "AVR 
Prog..." ein Glücksspiel ist. Mal klappt es, mal klappt es nicht, ich 
kann kein Muster erkennen, unter welchen Voraussetzungen sie zustande 
kommt.

Aufrufparameter von avrdude:
1
avrdude -p atmega169 -P com3 -c butterfly -V -v -v -v -v -U flash:w:teil1.hex

Ausgabe beim kompilieren des zweiten Programms:
1
> "make.exe" program
2
3
Creating load file for EEPROM: teil1.eep
4
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
5
--change-section-lma .eeprom=0 -O ihex teil1.elf teil1.eep
6
c:\WinAVR\bin\avr-objcopy.exe: there are no sections to be copied!
7
c:\WinAVR\bin\avr-objcopy.exe: --change-section-lma .eeprom=0x00000000 never used
8
make.exe: [teil1.eep] Error 1 (ignored)
9
avrdude -p atmega169 -P com3 -c butterfly -V -v -v -v -v -U flash:w:teil1.hex 
10
11
avrdude: Version 5.3.1, compiled on Jan  1 2007 at 14:25:19
12
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
13
14
         System wide configuration file is "C:\WinAVR\bin\avrdude.conf"
15
16
         Using Port            : com3
17
         Using Programmer      : butterfly
18
         AVR Part              : ATMEGA169
19
         Chip Erase delay      : 9000 us
20
         PAGEL                 : P00
21
         BS2                   : P00
22
         RESET disposition     : dedicated
23
         RETRY pulse           : SCK
24
         serial program mode   : yes
25
         parallel program mode : yes
26
         Timeout               : 200
27
         StabDelay             : 100
28
         CmdexeDelay           : 25
29
         SyncLoops             : 32
30
         ByteDelay             : 0
31
         PollIndex             : 3
32
         PollValue             : 0x53
33
         Memory Detail         :
34
35
                                  Block Poll               Page                       Polled
36
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
37
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
38
           eeprom        65    20     4    0 no        512    4      0  9000  9000 0xff 0xff
39
                                  Block Poll               Page                       Polled
40
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
41
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
42
           flash         65     6   128    0 yes     16384  128    128  4500  4500 0xff 0xff
43
                                  Block Poll               Page                       Polled
44
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
45
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
46
           lfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
47
                                  Block Poll               Page                       Polled
48
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
49
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
50
           hfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
51
                                  Block Poll               Page                       Polled
52
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
53
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
54
           efuse          0     0     0    0 no          1    0      0     0     0 0x00 0x00
55
                                  Block Poll               Page                       Polled
56
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
57
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
58
           lock           0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
59
                                  Block Poll               Page                       Polled
60
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
61
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
62
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
63
                                  Block Poll               Page                       Polled
64
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
65
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
66
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
67
68
         Programmer Type : avr910
69
         Description     : Atmel Butterfly Development Board
70
71
Connecting to programmer: .avrdude: Send: . [1b] 
72
avrdude: Send: S [53] 
73
avrdude: Recv: 
74
.avrdude: Send: . [1b] 
75
avrdude: Send: S [53] 
76
avrdude: Recv: 
77
78
avrdude: Recv: 
79
avrdude: Send: V [56] 
80
avrdude: Recv: 
81
avrdude: Send: v [76] 
82
avrdude: Recv: 
83
avrdude: Send: p [70] 
84
avrdude: Recv: 
85
Found programmer: Id = "AVRBOOT"; type = S
86
    Software Version = 1.4; No Hardware Version given.
87
avrdude: Send: a [61] 
88
avrdude: Recv: 
89
Programmer supports auto addr increment.
90
avrdude: Send: b [62] 
91
avrdude: Recv: 
92
avrdude: Recv: 
93
avrdude: Recv: 
94
Programmer supports buffered memory access with buffersize=128 bytes.
95
avrdude: Send: t [74] 
96
97
Programmer supports the following devices:
98
avrdude: Recv: 
99
    Device code: 0x75
100
avrdude: Recv: 
101
102
avrdude: Send: T [54] y [79] 
103
avrdude: Recv: 
104
avrdude: Send: P [50] 
105
avrdude: Recv: 
106
avrdude: AVR device initialized and ready to accept instructions
107
108
Reading | avrdude: Send: s [73] 
109
avrdude: Recv: 
110
################################################## | 100% 0.00s
111
112
avrdude: Device signature = 0x1e9405
113
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
114
         To disable this feature, specify the -D option.
115
avrdude: Send: A [41] . [01] . [fc] 
116
avrdude: Recv: 
117
avrdude: Send: g [67] . [00] . [01] E [45] 
118
avrdude: Recv: 
119
avrdude: Send: A [41] . [01] . [fd] 
120
avrdude: Recv: 
121
avrdude: Send: g [67] . [00] . [01] E [45] 
122
avrdude: Recv: 
123
avrdude: Send: A [41] . [01] . [fe] 
124
avrdude: Recv: 
125
avrdude: Send: g [67] . [00] . [01] E [45] 
126
avrdude: Recv: 
127
avrdude: Send: A [41] . [01] . [ff] 
128
avrdude: Recv: 
129
avrdude: Send: g [67] . [00] . [01] E [45] 
130
avrdude: Recv: 
131
avrdude: erasing chip
132
avrdude: Send: e [65] 
133
avrdude: Recv: 
134
avrdude: reading input file "teil1.hex"
135
avrdude: input file teil1.hex auto detected as Intel Hex
136
avrdude: writing flash (166 bytes):
137
138
Writing | avrdude: Send: A [41] . [00] . [00] 
139
avrdude: Recv: 
140
avrdude: Send: B [42] . [00] . [80] F [46] . [0c] . [94] . [2e] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [0c] . [94] I [49] . [00] . [11] $ [24] . [1f] . [be] . [cf] . [ef] . [d4] . [e0] . [de] . [bf] . [cd] . [bf] . [11] . [e0] . [a0] . [e0] . [b1] . [e0] . [e6] . [ea] . [f0] . [e0] . [02] . [c0] . [05] . [90] . [0d] . [92] . [a0] 0 [30] . [b1] . [07] . [d9] . [f7] . [11] . [e0] 
141
avrdude: Recv: 
142
######################################avrdude: Send: B [42] . [00] & [26] F [46] . [a0] . [e0] . [b1] . [e0] . [01] . [c0] . [1d] . [92] . [a0] 0 [30] . [b1] . [07] . [e1] . [f7] . [0c] . [94] K [4b] . [00] . [0c] . [94] . [00] . [00] . [0e] . [94] N [4e] . [00] . [fd] . [cf] . [88] . [ea] . [91] . [e6] . [01] . [97] . [f1] . [f7] . [08] . [95] 
143
avrdude: Recv: 
144
############ | 100% 0.13s
145
146
avrdude: 166 bytes of flash written
147
avrdude: Send: L [4c] 
148
avrdude: Recv: 
149
avrdude: Send: E [45] 
150
avrdude: Recv: 
151
152
avrdude done.  Thank you.
153
154
155
> Process Exit Code: 0

Das Makefile ist so vom Dozenten vorgegeben, einige Anpassung war 
Einstellung von COM3 (USB->Seriell-Adapter).

Es tut mir leid, wenn ich das etwas wirr ist und ich nicht so viel 
Ahnung habe, das sind meine ersten Schritte mit Mikrocontrollern, wenn 
ihr noch irgendwelche Angaben braucht, fragt ruhig, ich werde dann 
versuchen, nach bestem Gewissen zu antworten.

von Daniel H. (Gast)


Lesenswert?

Hallo,

nachdem ich nochmal ausführlich, auch nach dem Code (0x940c) von 
Avr-Prog gegooglet habe scheine ich eins der Butterflymodule erwischt zu 
haben, bei dem sich auch während der normalen Programmierung 
versehentlich die Lock-/Fuse-Bits setzen lassen. Genau dies ist nun wohl 
geschehen.
Habe mir nun den Atmel AVRISP mkII bestellt und werde dann versuchen, 
ihn über den ISP wieder hinzukriegen.

Gruß,
Daniel

von Frank J. (frajo)


Lesenswert?

Der Butterfly wir doch mit dem eingebauten Bootloader über die serielle 
Schnittstelle programmiert. Da braucht man gar keinen ISP Programmer. 
Ich habe den Bootloader von ATMEL gegen den von MEGALOAD ausgetauscht. 
Ist nur halb so groß. Nach dem Programmieren macht er selbst einen Reset 
und startet das Programm. Einzige Hardwareänderung ist ein mini 
Resettaster am ISP Anschluß vom Butterfly.

von Daniel H. (Gast)


Lesenswert?

Hi,

das ist schon richtig, es gibt aber wohl eine Charge Butterfly-Module, 
die einen fehlerhaften Bootloader haben, wodurch sich versehentlich bzw. 
sogar von alleine die Lock-Bits setzen lassen.
Sprich, man lädt nur ein Programm über die serielle Schnittstelle drauf, 
und danach ist das Teil unter Umständen gelocked und nicht mehr 
beschreibbar.
Einzige Möglichkeit, ihn dann wieder flott zu bekommen ist, per ISP den 
kompletten Chip zu löschen und dann den Bootloader wiederherzustellen.

Zumindest finde ich dazu hunderte Treffer bei Google, wenn ich die 
Meldung von AVR-Pro eingebe (Address 0x0000, Expected 0x940c, received 
0x0100).

Google mal nach 0x940c, da findest du das. Als einzige Lösung wird immer 
wieder angegeben, per ISP den Chip zu löschen und dann den Bootloader 
neu zu schreiben.

Gruß,
Daniel

von Daniel H. (Gast)


Lesenswert?

Halo,

ich nochmal, das Problem wird auch hier erörtert:
Beitrag "Programmierung von AVR Butterfly - geht nicht"

Gruß,
Daniel

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
Noch kein Account? Hier anmelden.