Hallo, ich versuche, den Bootloader von Peter Dannegger auf einem 644P über Bluetooth zum Laufen zu bringen. Auf dem PC verwende ich den Loader von FBoot von Bernhard Michler / Andreas Butti. Über USB via FTDI funktioniert er, dort kann ich meine Hex-Files übertragen. Wenn ich jetzt den FTDI durch einen UART-Bluetooth-Adapter ersetze, dann bricht der Vorgang bei 22% (und zwar immer bei 22%) ab. Die Verbindung über Bluetooth klappt, ich kann mich mit einem Terminal-Programm mit meinem Atmega unterhalten. Ich habe auch shcon mit den Optionen herumgespielt (Baudrate, Blocksize, TCDrain), und ich habe das Timeout im Sourcecode hochgedreht. Aber auch wenn ich lange warte, bricht er immer bei 22% ab. Ich habe beobachtet, dass er auch beim Flashen via FTDI bei 22% jurz stehenbleibt, aber dann gleich weiterläuft. Hat jemand einen Tipp? Irgendwelche Sendepuffer, Flush(), ...? Warum kann ich über USB flashen aber über Bluetooth nicht? Zwischen Atmega und meinem PC-Bluetooth-Dongle ist 1m Distanz, daran sollte es nicht scheitern. Gruß Chris
Chris R. schrieb: > Ich habe beobachtet, dass er auch beim Flashen via FTDI bei 22% jurz > stehenbleibt, aber dann gleich weiterläuft. Hi, dann sind die 22% wahrscheinlich die Buffergröße (also das, was unter "Buffer :" angegeben ist), danach erwartet der Bootloader eine Antwort des Controllers. Hast Du schon mal (mit source Änderung) die Daten, die vom Controller kommen, ausgeben lassen? Kommt da die Antwort nach den 22% (also hex 0xA9)? Gruß, Bernhard P.S.: welche version des bootloaders verwendest Du? Die aktuelle aus github: https://github.com/Boregard/FBoot-Linux
Hallo, ich habe den Master aus deinem github-Repo geladen. Per USB geflasht sieht es so aus:
1 | christian@christian:~/Basteln/Atmega/Himmel$ ./bootloader -b 38400 Release/Himmel.hex -d /dev/ttyUSB0 -p -v |
2 | |
3 | ================================================= |
4 | | BOOTLOADER, Target: V2.1 | |
5 | | (Jan 6 2013 15:23:36) | |
6 | ================================================= |
7 | Now program, verify device. |
8 | Port : /dev/ttyUSB0 |
9 | Baudrate : 38400 |
10 | File : Release/Himmel.hex |
11 | Reading : Release/Himmel.hex... File read. |
12 | Size : 15842 Bytes |
13 | ------------------------------------------------- |
14 | Waiting for device... /Rx: 166 (0xA6) |
15 | connectedRx: 166 (0xA6) |
16 | Rx: 170 (0xAA) |
17 | ! |
18 | Rx: 171 (0xAB) |
19 | Rx: 168 (0xA8) |
20 | Rx: 3 (0x3) |
21 | Rx: 2 (0x2) |
22 | Rx: 1 (0x1) |
23 | Rx: 170 (0xAA) |
24 | Bootloader : V2.1 |
25 | Rx: 168 (0xA8) |
26 | Rx: 4 (0x4) |
27 | Rx: 30 (0x1E) |
28 | Rx: 150 (0x96) |
29 | Rx: 10 (0xA) |
30 | Rx: 170 (0xAA) |
31 | Target : 1E960A ATmega644P |
32 | Rx: 168 (0xA8) |
33 | Rx: 3 (0x3) |
34 | Rx: 14 (0xE) |
35 | Rx: 0 (0x0) |
36 | Rx: 170 (0xAA) |
37 | Buffer : 3584 Byte |
38 | Rx: 168 (0xA8) |
39 | Rx: 4 (0x4) |
40 | Rx: 0 (0x0) |
41 | Rx: 252 (0xFC) |
42 | Rx: 0 (0x0) |
43 | Rx: 170 (0xAA) |
44 | Size available: 64512 Byte |
45 | Rx: 170 (0xAA) |
46 | CRC enabled and OK. |
47 | Programming : 0x00000 - 0x03DE1 |
48 | Rx: 169 (0xA9)############## ] 22% |
49 | Rx: 169 (0xA9)################################# ] 45% |
50 | Rx: 169 (0xA9)#################################################### ] 67% |
51 | Rx: 169 (0xA9)####################################################################### ] 90% |
52 | Writing [#####################################################################################] 100% |
53 | Elapsed time : 4.61 seconds, 3436 Bytes/sec. |
54 | Rx: 170 (0xAA) |
55 | Rx: 170 (0xAA) |
56 | |
57 | ++++++++++ Device successfully programmed! ++++++++++ |
58 | |
59 | Verify : 0x00000 - 0x03DE1 |
60 | Verifying [###################################################################################] 100% |
61 | Elapsed time : 4.40 seconds, 3600 Bytes/sec. |
62 | Rx: 170 (0xAA) |
63 | Rx: 170 (0xAA) |
64 | |
65 | ++++++++++ Device successfully verified! ++++++++++ |
66 | |
67 | ...starting application |
Wenn ich deinen Loader ohne mein Debug-printf() betreibe, dann hängt er wie gesagt bei den 22%. Wenn ich aber das printf() einbaue, dann stirbt er lange vorher: Bluetooth und Debug-printf():
1 | christian@christian:~/Basteln/Atmega/Himmel$ ./bootloader -b 38400 Release/Himmel.hex -d /dev/rfcomm0 -p -v |
2 | |
3 | ================================================= |
4 | | BOOTLOADER, Target: V2.1 | |
5 | | (Jan 6 2013 15:23:36) | |
6 | ================================================= |
7 | Now program, verify device. |
8 | Port : /dev/rfcomm0 |
9 | Baudrate : 38400 |
10 | File : Release/Himmel.hex |
11 | Reading : Release/Himmel.hex... File read. |
12 | Size : 15842 Bytes |
13 | ------------------------------------------------- |
14 | Waiting for device... |Rx: 166 (0xA6) |
15 | connectedRx: 166 (0xA6) |
16 | Rx: 166 (0xA6) |
17 | Rx: 166 (0xA6) |
18 | Rx: 166 (0xA6) |
19 | Rx: 166 (0xA6) |
20 | Rx: 166 (0xA6) |
21 | Rx: 166 (0xA6) |
22 | Rx: 166 (0xA6) |
23 | Rx: 166 (0xA6) |
24 | Rx: 166 (0xA6) |
25 | Rx: 166 (0xA6) |
26 | Rx: 166 (0xA6) |
27 | Rx: 166 (0xA6) |
28 | Rx: 166 (0xA6) |
29 | Rx: 166 (0xA6) |
30 | Rx: 166 (0xA6) |
31 | Rx: 166 (0xA6) |
32 | Rx: 166 (0xA6) |
33 | Rx: 170 (0xAA) |
34 | ! |
35 | Rx: 171 (0xAB) |
36 | Rx: 168 (0xA8) |
37 | Rx: 3 (0x3) |
38 | Rx: 2 (0x2) |
39 | Rx: 1 (0x1) |
40 | Rx: 170 (0xAA) |
41 | Bootloader : V2.1 |
42 | Rx: 168 (0xA8) |
43 | Rx: 4 (0x4) |
44 | Rx: 30 (0x1E) |
45 | Rx: 150 (0x96) |
46 | Rx: 10 (0xA) |
47 | Rx: 170 (0xAA) |
48 | Target : 1E960A ATmega644P |
49 | Rx: 168 (0xA8) |
50 | Rx: 3 (0x3) |
51 | Rx: 14 (0xE) |
52 | Rx: 0 (0x0) |
53 | Rx: 170 (0xAA) |
54 | Buffer : 3584 Byte |
55 | Rx: 168 (0xA8) |
56 | Rx: 4 (0x4) |
57 | Rx: 0 (0x0) |
58 | Rx: 252 (0xFC) |
59 | Rx: 0 (0x0) |
60 | readval: ...Device does not answer! |
61 | Reading FLASHSIZE failed! |
Bluetooth OHNE printf
1 | christian@christian:~/Basteln/Atmega/Himmel$ ./bootloader -b 38400 Release/Himmel.hex -d /dev/rfcomm0 -p -v |
2 | |
3 | ================================================= |
4 | | BOOTLOADER, Target: V2.1 | |
5 | | (Jan 6 2013 15:23:36) | |
6 | ================================================= |
7 | Now program, verify device. |
8 | Port : /dev/rfcomm0 |
9 | Baudrate : 38400 |
10 | File : Release/Himmel.hex |
11 | Reading : Release/Himmel.hex... File read. |
12 | Size : 15842 Bytes |
13 | ------------------------------------------------- |
14 | Waiting for device... connected! |
15 | Bootloader : V2.1 |
16 | Target : 1E960A ATmega644P |
17 | Buffer : 3584 Byte |
18 | Size available: 64512 Byte |
19 | CRC enabled and OK. |
20 | Programming : 0x00000 - 0x03DE1 |
21 | Writing [################### ] 22% |
22 | ---------- Failed! ---------- |
23 | |
24 | ---------- Programming failed! ---------- |
Gibt es da evtl. ein Timing-Problem? Ich verstehe aber grade nicht, wieso. Das printf() habe ich in die com_getc eingebaut (Z.313). Das sollte aber keinen großen Einfluss auf den weiteren Programmablauf haben. Interessanterweise ist der Puffer in beiden Fällen gleich groß, bei der Verbindung per USB bekommt dein Loader aber ein Antwort vom Chip. Wenn ich mich mit einem Terminalprogramm mit meinem Baustein verbinde, erhalte ich aber auch Antworten über Bluetooth. Der Bootlader von Peter Dannegger merkt doch aber überhaupt nicht, welches Übertragungsmedium ihn mit Daten versorgt...? Gruß Mr.Green
Chris R. schrieb: > Interessanterweise ist der Puffer in beiden Fällen gleich groß die Buffer größe kommt ja von Peters Code vom ATMega, das ist der verfügbare Pufferspeicher. Mein Verdacht ist auch ein Timingproblem, und daß sich der Bluetooth Adapter anders verhält bzgl. der IOCTLs. Probiere das mal mit den Extremwerten: -t 1 -w 64 -r Gruß, Bernhard
Er läuft dann zwar bis 100% durch, aber es einen CRC Fehler, das Verify schlägt fehl und das Programm startet nicht :(
Hallo Bernhard, muss ich davon ausgehen, dass du keine Idee mehr hast...? Gruß Chris
Hi, sitze grade vor dem selben Problem. Schön eine Lösung gefunden? Grüße, Kille
So hab jetzt einen client gefunden mit dem es geht. Zwar langsam aber es geht: Der ist hier zu finden: http://www.mikrocontroller.net/articles/Diskussion:Word_Clock_Variante_1 Wäre aber schön wenn es FBoot-Linux auch geht... Grüße
Hallo, sorry, ich habe die letzten Postings hier übersehen... Das Problem scheint immer das gleiche zu sein. Es geht, wenn die Bytes einzeln über Bluetooth geschickt werden, also kein Puffer benutzt wird. Damitwird die maximale Übertragungsgeschwindikeit natürlich sehr langsam. Man könnte die Wartezeit noch hochsetzen, z.B. -w 128... Ich muß mir jetzt mal bluetooth adapter besorgen, um es zu testen, was verwendet ihrdenn so? Gruß, Bernhard
Hi Bernhard, danke für das Feadback. Also ich verwende den HC-05. Z.B. http://www.aliexpress.com/item/2-4G-GHz-Serial-Port-Bluetooth-Module-HC-05-Master-Slave-For-GPS-Receiver-MCU-Free/689579631.html Ich werde das mit der Wartezeit testen! Grüße
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.