Forum: Mikrocontroller und Digitale Elektronik Fleury Bootloader und das aktuelle Atmel Studio


von datasheet (Gast)


Lesenswert?

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

von Uwe (de0508)


Lesenswert?

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%

von datasheet (Gast)


Lesenswert?

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

von datasheet (Gast)


Lesenswert?

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

von datasheet (Gast)


Lesenswert?

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!

von Hubert G. (hubertg)


Lesenswert?

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?

von amateur (Gast)


Lesenswert?

>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.

von datasheet (Gast)


Angehängte Dateien:

Lesenswert?

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?

von amateur (Gast)


Lesenswert?

@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.

von datasheet (Gast)


Lesenswert?

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.

von Martin W. (wollis)


Lesenswert?

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

von Hotze (Gast)


Lesenswert?

Vielen Dank, Martin!

Hat mir weiter geholfen!

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.