Moin, ich hab eine selbstgebastelte Hardware, auf Basis eines ATMega8A und eines FTDI232RL Chips. Die serielle Kommunikation habe ich mit einem kleinen Programm getestet. Das funktioniert gut. Jetzt hab ich den Bootloader von Peter Fleury aufgespielt http://homepage.hispeed.ch/peterfleury/avr-software.html Hab ne Led und nen Taster angehängt und die entsprechenden Pins konfiguriert. Wenn ich die Taste drücke leuchtet die LED. Alles klar! Der bootloader ist bereit. Als Baudrate hab ich die 115200 gelassen und die F_CPU hab ich auf meine 16MHz eingestellt. Jetzt hatte ich es aber so verstanden, dass der BL mit dem Atmel Studio zusammenarbeitet, weil er sich genauso wie ein STK500 verhält. Wenn ich aber im aktuellen Atmel Studio 6.1 das STK500 auswähle, den richtigen Atmel noch, dann kommt immer die Fehlermeldung: Keine Kommunikation möglich. Was mach ich denn falsch? Hat sich mittlerweile was an den Protokollen geändert? Wie kann ich die Kommunikation mit dem µC testen? Muss der auf ein 0x1B (das sendet das Atmel Studio als erstes) schon etwas zurückschicken? Ich bin grad ein bisschen ratlos und hoffe auf etwas Input, vielen Dank schonmal. Data
Na dann schau mal in das Datenblatt deines µC ! Wie groß ist den der Fehler der Baudrate bei 16MHz und 115200 Baud ? In Programmen findet man solche Berechnungen des USART Configurationsregisters UBRR:
1 | #define BAUDRATE 115200
|
2 | const uint16_t UBRR = (uint16_t)(1.0 * F_CPU / 16 / BAUDRATE -0.5); |
Durch Umstellung kann man dann den Fehler ausrechnen:
1 | const uint16_t BAUDRATE = 115200; |
2 | const uint16_t UBBR = 8u; // aus obiger Rechnung ! |
3 | const float Taktfehler = (1.0 * F_CPU) / (16ul * BAUDRATE * (UBBR +1)) -1; // 8,50% |
Und? Scherzkeks! U2X ist mit gesetzt. Ist von Herrn Fleury sehr gut als define gemacht. Datenblatt S. 156 sagt dazu 2,1% Fehler. (Bei U2X=0 übrigens -3.5% -> Entweder hat sich Atmel oder du verrechnet). Es ist mir bewusst, dass ein Baudratenquarz hier sicherlich besser ist. Wahrscheinlich kann es auch mal einen Übertragungsfehler geben, wenn viele Daten übertragen werden. Ein paar Steuerbefehle werden wohl trotzden funktionieren. Hier liegt ein grundsätzliches Problem vor. Hat noch jemand eine Idee? Data
Ich nochmal, hab ein bisschen rumgelesen und der Baudratenfehler scheint schon einen gewissen Einfluss zu haben. Es kann mal passieren, dass es nicht klappt. Nur dass bei X Versuchen gar nichts zurückgesendet wird. Das kann ich mir wirklich nicht vorstellen. Zumal ich bei der Frequenz und der Baudrate schon kilobyteweise Daten hin- und hergeschickt habe. Zum Beispiel die Farbwerte für ein S65 Display, Steuerungsbefehle für eine Maschine, die tagelang durchgelaufen ist, bootloader mit eigenem Windowsprogramm usw. Ich find irgendwie auch keine weiteren Infos zu dem Bootloader. Direkte Frage funktioniert das mit dem Atmel Studio 6? Hat das jemand am Laufen? Data
Okay, ich dachte, dass die Fleury Sachen mittlerweile schon so eine Art Standard sind (Display, Uart). Was ist denn nun das mit dem Bootloader? Wenn das Atmel Studio mit STK500 als Programmer eine Verbindung versucht kommt
1 | Timestamp: 2013-05-27 22:41:21.985 |
2 | Severity: ERROR |
3 | ComponentId: 20100 |
4 | StatusCode: 1 |
5 | ModuleName: TCF (TCF command: Tool:connect failed.) |
6 | |
7 | The signature of the attached tool is AVRISP_2, which is unexpected." |
Wenn ich mit avrdude versuche avrdude.exe -p atmega8 -P COM3 -c STK500v2 -U flash:w:main.hex
1 | avrdude.exe: AVR device initialized and ready to accept instructions |
2 | |
3 | Reading | | 0% 0.00savrdude.e |
4 | xe: stk500v2_command(): command failed |
5 | avrdude.exe: stk500v2_cmd(): failed to send command |
6 | avrdude.exe: stk500v2_command(): command failed |
7 | avrdude.exe: stk500v2_cmd(): failed to send command |
8 | Reading | ################# | 33% 0.04savrdude. |
9 | exe: stk500v2_command(): command failed |
10 | avrdude.exe: stk500v2_cmd(): failed to send command |
11 | Reading | ################################################## | 100% 0.06s |
12 | |
13 | avrdude.exe: Device signature = 0x010101 |
14 | avrdude.exe: Expected signature for ATMEGA8 is 1E 93 07 |
15 | Double check chip, or use -F to override this check. |
16 | |
17 | avrdude.exe done. Thank you. |
Mach ich ein -vvvv noch mit rein, zeigt er, dass die Kommunikation ansich funktioniert.
1 | avrdude.exe: Version 5.10, compiled on Jan 19 2010 at 10:45:23 |
2 | Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ |
3 | Copyright (c) 2007-2009 Joerg Wunsch |
4 | |
5 | System wide configuration file is "C:\WinAVR-20100110\bin\avrdude.c |
6 | onf"
|
7 | |
8 | Using Port : COM3 |
9 | Using Programmer : STK500v2 |
10 | avrdude.exe: Send: . [1b] . [01] . [00] . [01] . [0e] . [01] . [14] |
11 | avrdude.exe: Recv: . [1b] |
12 | avrdude.exe: Recv: . [01] |
13 | avrdude.exe: Recv: . [00] |
14 | avrdude.exe: Recv: . [0b] |
15 | avrdude.exe: Recv: . [0e] |
16 | avrdude.exe: Recv: . [01] |
17 | avrdude.exe: Recv: . [00] |
18 | avrdude.exe: Recv: . [08] |
19 | avrdude.exe: Recv: A [41] |
20 | avrdude.exe: Recv: V [56] |
21 | avrdude.exe: Recv: R [52] |
22 | avrdude.exe: Recv: I [49] |
23 | avrdude.exe: Recv: S [53] |
24 | avrdude.exe: Recv: P [50] |
25 | avrdude.exe: Recv: _ [5f] |
26 | avrdude.exe: Recv: 2 [32] |
27 | avrdude.exe: Recv: t [74] |
28 | avrdude.exe: stk500v2_getsync(): found AVRISP programmer |
29 | AVR Part : ATMEGA8 |
30 | Chip Erase delay : 10000 us |
31 | PAGEL : PD7 |
32 | BS2 : PC2 |
33 | RESET disposition : dedicated |
34 | RETRY pulse : SCK |
35 | serial program mode : yes |
36 | parallel program mode : yes |
37 | Timeout : 200 |
38 | StabDelay : 100 |
39 | CmdexeDelay : 25 |
40 | SyncLoops : 32 |
41 | ByteDelay : 0 |
42 | PollIndex : 3 |
43 | PollValue : 0x53 |
44 | Memory Detail : |
45 | |
46 | Block Poll Page |
47 | Polled
|
48 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW |
49 | MaxW ReadBack |
50 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- |
51 | ----- --------- |
52 | eeprom 4 20 128 0 no 512 4 0 9000 |
53 | 9000 0xff 0xff |
54 | Block Poll Page |
55 | Polled
|
56 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW |
57 | MaxW ReadBack |
58 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- |
59 | ----- --------- |
60 | flash 33 10 64 0 yes 8192 64 128 4500 |
61 | 4500 0xff 0x00 |
62 | Block Poll Page |
63 | Polled
|
64 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW |
65 | MaxW ReadBack |
66 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- |
67 | ----- --------- |
68 | lfuse 0 0 0 0 no 1 0 0 2000 |
69 | 2000 0x00 0x00 |
70 | Block Poll Page |
71 | Polled
|
72 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW |
73 | MaxW ReadBack |
74 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- |
75 | ----- --------- |
76 | hfuse 0 0 0 0 no 1 0 0 2000 |
77 | 2000 0x00 0x00 |
78 | Block Poll Page |
79 | Polled
|
80 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW |
81 | MaxW ReadBack |
82 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- |
83 | ----- --------- |
84 | lock 0 0 0 0 no 1 0 0 2000 |
85 | 2000 0x00 0x00 |
86 | Block Poll Page |
87 | Polled
|
88 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW |
89 | MaxW ReadBack |
90 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- |
91 | ----- --------- |
92 | calibration 0 0 0 0 no 4 0 0 0 |
93 | 0 0x00 0x00 |
94 | Block Poll Page |
95 | Polled
|
96 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW |
97 | MaxW ReadBack |
98 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- |
99 | ----- --------- |
100 | signature 0 0 0 0 no 3 0 0 0 |
101 | 0 0x00 0x00 |
102 | |
103 | Programmer Type : STK500V2 |
104 | Description : Atmel STK500 Version 2.x firmware |
105 | Programmer Model: AVRISP |
106 | avrdude.exe: Send: . [1b] . [02] . [00] . [02] . [0e] . [03] . [90] . [86] |
107 | avrdude.exe: Recv: . [1b] |
108 | avrdude.exe: Recv: . [02] |
109 | avrdude.exe: Recv: . [00] |
110 | avrdude.exe: Recv: . [03] |
111 | avrdude.exe: Recv: . [0e] |
112 | avrdude.exe: Recv: . [03] |
113 | avrdude.exe: Recv: . [00] |
114 | avrdude.exe: Recv: . [0f] |
115 | avrdude.exe: Recv: . [18] |
116 | avrdude.exe: Send: . [1b] . [03] . [00] . [02] . [0e] . [03] . [91] . [86] |
117 | avrdude.exe: Recv: . [1b] |
118 | avrdude.exe: Recv: . [03] |
119 | avrdude.exe: Recv: . [00] |
120 | avrdude.exe: Recv: . [03] |
121 | avrdude.exe: Recv: . [0e] |
122 | avrdude.exe: Recv: . [03] |
123 | avrdude.exe: Recv: . [00] |
124 | avrdude.exe: Recv: . [02] |
125 | avrdude.exe: Recv: . [14] |
126 | avrdude.exe: Send: . [1b] . [04] . [00] . [02] . [0e] . [03] . [92] . [82] |
127 | avrdude.exe: Recv: . [1b] |
128 | avrdude.exe: Recv: . [04] |
129 | avrdude.exe: Recv: . [00] |
130 | avrdude.exe: Recv: . [03] |
131 | avrdude.exe: Recv: . [0e] |
132 | avrdude.exe: Recv: . [03] |
133 | avrdude.exe: Recv: . [00] |
134 | avrdude.exe: Recv: . [0a] |
135 | avrdude.exe: Recv: . [1b] |
136 | Hardware Version: 15 |
137 | Firmware Version Master : 2.10 |
138 | avrdude.exe: Send: . [1b] . [05] . [00] . [02] . [0e] . [03] . [94] . [85] |
139 | avrdude.exe: Recv: . [1b] |
140 | avrdude.exe: Recv: . [05] |
141 | avrdude.exe: Recv: . [00] |
142 | avrdude.exe: Recv: . [03] |
143 | avrdude.exe: Recv: . [0e] |
144 | avrdude.exe: Recv: . [03] |
145 | avrdude.exe: Recv: . [00] |
146 | avrdude.exe: Recv: . [00] |
147 | avrdude.exe: Recv: . [10] |
148 | Vtarget : 0.0 V |
149 | SCK period : 80.3 us |
150 | |
151 | avrdude.exe: Send: . [1b] . [06] . [00] . [0c] . [0e] . [10] . [c8] d [64] . [19 |
152 | ] [20] . [00] S [53] . [03] . [ac] S [53] . [00] . [00] 5 [35] |
153 | avrdude.exe: Recv: . [1b] |
154 | avrdude.exe: Recv: . [06] |
155 | avrdude.exe: Recv: . [00] |
156 | avrdude.exe: Recv: . [02] |
157 | avrdude.exe: Recv: . [0e] |
158 | avrdude.exe: Recv: . [10] |
159 | avrdude.exe: Recv: . [00] |
160 | avrdude.exe: Recv: . [01] |
161 | avrdude.exe: AVR device initialized and ready to accept instructions |
162 | |
163 | Reading | | 0% 0.00savrdude.e |
164 | xe: Send: . [1b] . [07] . [00] . [08] . [0e] . [1d] . [04] . [04] . [00] 0 [30] |
165 | . [00] . [00] . [00] 7 [37] |
166 | avrdude.exe: Recv: . [1b] |
167 | avrdude.exe: Recv: . [07] |
168 | avrdude.exe: Recv: . [00] |
169 | avrdude.exe: Recv: . [02] |
170 | avrdude.exe: Recv: . [0e] |
171 | avrdude.exe: Recv: . [1d] |
172 | avrdude.exe: Recv: . [c0] |
173 | avrdude.exe: Recv: . [cd] |
174 | avrdude.exe: stk500v2_command(): command failed |
175 | avrdude.exe: stk500v2_cmd(): failed to send command |
176 | avrdude.exe: Send: . [1b] . [08] . [00] . [08] . [0e] . [1d] . [04] . [04] . [00 |
177 | ] 0 [30] . [00] . [01] . [00] 9 [39] |
178 | avrdude.exe: Recv: . [1b] |
179 | avrdude.exe: Recv: . [08] |
180 | avrdude.exe: Recv: . [00] |
181 | avrdude.exe: Recv: . [02] |
182 | avrdude.exe: Recv: . [0e] |
183 | avrdude.exe: Recv: . [1d] |
184 | avrdude.exe: Recv: . [c0] |
185 | avrdude.exe: Recv: . [c2] |
186 | avrdude.exe: stk500v2_command(): command failed |
187 | avrdude.exe: stk500v2_cmd(): failed to send command |
188 | Reading | ################# | 33% 0.06savrdude. |
189 | exe: Send: . [1b] . [09] . [00] . [08] . [0e] . [1d] . [04] . [04] . [00] 0 [30] |
190 | . [00] . [02] . [00] ; [3b] |
191 | avrdude.exe: Recv: . [1b] |
192 | avrdude.exe: Recv: . [09] |
193 | avrdude.exe: Recv: . [00] |
194 | avrdude.exe: Recv: . [02] |
195 | avrdude.exe: Recv: . [0e] |
196 | avrdude.exe: Recv: . [1d] |
197 | avrdude.exe: Recv: . [c0] |
198 | avrdude.exe: Recv: . [c3] |
199 | avrdude.exe: stk500v2_command(): command failed |
200 | avrdude.exe: stk500v2_cmd(): failed to send command |
201 | Reading | ################################################## | 100% 0.09s |
202 | |
203 | avrdude.exe: Device signature = 0x010101 |
204 | avrdude.exe: Expected signature for ATMEGA8 is 1E 93 07 |
205 | Double check chip, or use -F to override this check. |
206 | avrdude.exe: Send: . [1b] . [0a] . [00] . [03] . [0e] . [11] . [01] . [01] . [0d |
207 | ]
|
208 | avrdude.exe: Recv: . [1b] |
209 | avrdude.exe: Recv: . [0a] |
210 | avrdude.exe: Recv: . [00] |
211 | avrdude.exe: Recv: . [02] |
212 | avrdude.exe: Recv: . [0e] |
213 | avrdude.exe: Recv: . [11] |
214 | avrdude.exe: Recv: . [00] |
215 | avrdude.exe: Recv: . [0c] |
216 | |
217 | avrdude.exe done. Thank you. |
Anscheinend hat er die Signatur nicht, obwohl ich im Makefile mit MCU = atmega8 den richtigen Controller definiert. Ich komm echt nicht weiter. Und die einzige Hilfe vom "Fachpublikum" ist der 3% UART Fehler, echt schade!
Start AVRISP Programmer (AVRStudio/Tools/Program AVR) - AVRISP will detect the bootloader - Program your application FLASH file and optional EEPROM file using AVRISP Solltest du nicht AVRISP einstellen anstelle von STK500?
>Jetzt hatte ich es aber so verstanden, dass der BL mit dem Atmel Studio >zusammenarbeitet, weil er sich genauso wie ein STK500 verhält. Nur wo STK500 draufsteht ist auch STK500 drinnen. Ich würde davon ausgehen, dass Peter nicht das ganze Antwortverhalten, des STK500, in den Treiber übernommen hat. Aber das Studio 6 ein paar Tests macht, um festzustellen, werden denn da lauscht.
Genau das geht ja nicht im Atmel Studio. AVRStudio/Tools/Program AVR gibt es nicht (mehr). Unter tools ist die einzige Möglichkeit "Add Target" das "STK500" auszuwählen (Dropdown mit einem! Eintrag) und die Schnittstelle. Unter Tools / Device Programming kann ich entweder den Simulator, das vorhin angelegte STK500 oder meinen MKII (wenn angesteckt) auswählen. Sonst nichts. Im avrdude mit der Option -c AVRISP:
1 | avrdude.exe: Version 5.10, compiled on Jan 19 2010 at 10:45:23 |
2 | Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ |
3 | Copyright (c) 2007-2009 Joerg Wunsch |
4 | |
5 | System wide configuration file is "C:\WinAVR-20100110\bin\avrdude.c |
6 | onf"
|
7 | |
8 | Using Port : COM3 |
9 | Using Programmer : AVRISP |
10 | avrdude.exe: Send: 0 [30] [20] |
11 | avrdude.exe: Send: 0 [30] [20] |
12 | avrdude.exe: Send: 0 [30] [20] |
13 | avrdude.exe: Recv: |
14 | avrdude.exe: stk500_getsync(): not in sync: resp=0x00 |
15 | |
16 | avrdude.exe done. Thank you. |
Heißt "stk500v2 kompatibel" nicht, dass sich der Bootloader so verhält als wäre ein STK500 in Hardware dran?
@datasheet Ich kann auf die Schnelle nicht feststellen, was ich an meinem System (Studio 6) eingestellt habe, aber ich glaube dass das egal ist. Wichtig ist, dass Du die passenden Header einbindest. Ich produziere ein Hex-File und schubse es ebenfalls in einen Nicht-Atmel-Bootloader. Hierzu verwende ich das FLIP-System. Die Erstellung des dazu nötigen Batch-Jobs war zwar etwas tricky, aber das Teil läuft problemlos.
amateur schrieb: > Ich kann auf die Schnelle nicht feststellen, was ich an meinem System > (Studio 6) eingestellt habe, aber ich glaube dass das egal ist. Ähh, Danke :-~ > Wichtig ist, dass Du die passenden Header einbindest. Welche Header? #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/boot.h> #include <avr/pgmspace.h> #include "command.h" Sind eingebunden. Wenn was wichtiges fehlen würde, hätte er auch nicht compiliert. > Ich produziere ein Hex-File und schubse es ebenfalls in einen > Nicht-Atmel-Bootloader. > Hierzu verwende ich das FLIP-System. Die Erstellung des dazu nötigen > Batch-Jobs war zwar etwas tricky, aber das Teil läuft problemlos. Mit anderen Worten, du rufst ein externes Programm auf, was das Flashen übernimmt. Die Erstellung eines eigenen Programmes wollte ich mir eigentlich ersparen und dafür das Atmel Studio / avrdude nehmen. Hätt ich gleich mein eigenes Ding gemacht, wärs schon fertig. Danke an alle, die versucht haben mir zu helfen, war aber wohl nix.
Hallo zusammen, Frage: Funktioniert der Original-Bootloader von Peter Fleury mit den Atmel Studio 5&6? Antwort: Nein Warum nicht? Nun, der Original-Bootloader meldet sich als AVRISP.
1 | avrdude.exe: Send: . [1b] . [01] . [00] . [01] . [0e] . [01] . [14] |
2 | avrdude.exe: Recv: . [1b] |
3 | avrdude.exe: Recv: . [01] |
4 | avrdude.exe: Recv: . [00] |
5 | avrdude.exe: Recv: . [0b] |
6 | avrdude.exe: Recv: . [0e] |
7 | avrdude.exe: Recv: . [01] |
8 | avrdude.exe: Recv: . [00] |
9 | avrdude.exe: Recv: . [08] |
10 | avrdude.exe: Recv: A [41] |
11 | avrdude.exe: Recv: V [56] |
12 | avrdude.exe: Recv: R [52] |
13 | avrdude.exe: Recv: I [49] |
14 | avrdude.exe: Recv: S [53] |
15 | avrdude.exe: Recv: P [50] |
16 | avrdude.exe: Recv: _ [5f] |
17 | avrdude.exe: Recv: 2 [32] |
18 | avrdude.exe: Recv: t [74] |
Und eben dieser wird im Atmel Studio 5&6 nicht mehr unterstützt. datasheet schrieb: > Direkte Frage funktioniert das mit dem Atmel Studio 6? Hat das jemand am > Laufen? Ja, wenn man an ein paar Stellen den Bootloader ändert funktioniert er auch mit dem Atmel Studio 5&6 wieder. Dazu muss er sich als STK500 melden. Hier findest du die gefixte Version: http://www.ags.tu-bs.de/?id=e.lab:projekte:stk500v2_bootloader_fixed Nun aber noch mal zurück zu deinem Problem mit der Kommunikation: datasheet schrieb: > avrdude.exe: stk500v2_command(): command failed > avrdude.exe: stk500v2_cmd(): failed to send command Das bedeutet nicht, dass die Kommunikation zwischen AVRDUDE und BOOTLOADER nicht funktioniert! Sondern, dass der BOOTLOADER den Befehl nicht kennt. Wenn man den BOOTLOADER mit dem AVRDUDE nutzen möchte, muss die folgende Zeile auskommentiert werden.
1 | #define REMOVE_CMD_SPI_MULTI
|
Achtung! Der Bootloader passt dann aber wahrscheinlich nicht mehr in die voreingestellten 1024 Byte (512 WORD). Gruß, Martin
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.