Forum: Mikrocontroller und Digitale Elektronik Bootloader der Arduino pro micro ansprechen


von Rahul D. (rahul)


Lesenswert?

Moin,
ich versuche, den Bootloader des pro Micro (kompatibles Arduino Leonard) 
anzusprechen.
Mit der Arduino-IDE kann ich das Board problemlos programmieren.
Ich muss ein altes AtmelStudio-Projekt umbauen, das für ein Teensy 2.0 
gedacht ist. Das Teensy 2.0 ist angekündigt, und das "Folgemodell" 
verwendet einen anderen Controller.

Jetzt würde ich gerne den Programmierablauf der Arduino-IDE emulieren, 
um das Board zu programmieren

Wenn man das Board resettet (Reset per "Öffnen und Schließen der 
Schnittstelle mit 1200 Baud"), meldet sich der Bootloader für eine 
gewisse Zeit als weiteren Comport am Windows-Rechner an.

Ich bin inzwischen auch so weit, dass ich diese COM herausfinde.

Leider meckert AVRdude, dass es die Schnittstelle nicht mehr gibt.
Die Arduino-IDE hat da keine Probleme...

Wie kann ich AVRdude nun dazu bewegen, das Board doch zu programmieren?

Vielen Dank und viele Grüße
Rahul

von Steve van de Grens (roehrmond)


Lesenswert?

Rahul D. schrieb:
> Leider meckert AVRdude, dass es die Schnittstelle nicht mehr gibt.

Wie sieht die Meldung genau aus?
Und wie wird der COM Port vom Gerätemanager angezeigt?

Ich meine mich grob zu erinnern, dass es da mal ein Timing-Problem gab 
mit Workaround. Kann mich aber gerade nicht an eine gutes Stichwort 
erinnern, um den Beitrag hier zu finden.

: Bearbeitet durch User
von Wf88 (wf88)


Lesenswert?

Steve van de Grens schrieb:
> Ich meine mich grob zu erinnern, dass es da mal ein Timing-Problem gab
> mit Workaround. Kann mich aber gerade nicht an eine gutes Stichwort
> erinnern, um den Beitrag hier zu finden.

-b 57600 afaik war die Option, der alte Bootloader kann nur "langsam".

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Wf88 schrieb:
> 57600

Uninteressant!
Bei CDC, ist die Baudrate völlig irrelevant!
Außer um mit einer kurzen Umschaltung auf 1200 Baud denn Bootloader zu 
starten.

Was zu tun ist:
1. Alle COM Ports merken
2. Bootloader starten
3. Der neu hinzugekommene, ist der Bootloader Port.

von Rahul D. (rahul)


Lesenswert?

Steve van de Grens schrieb:
> Wie sieht die Meldung genau aus?

avrdude: ser_open(): can't open device "\\.\COM11:": Das System kann die 
angegebene Datei nicht finden.

Wf88 schrieb:
> -b 57600 afaik war die Option, der alte Bootloader kann nur "langsam".

Die Parameter habe ich von der Arduino-IDE übernommen (und sollten 
passen, da ich damit schon das Board programmiert habe - heute).

Steve van de Grens schrieb:
> Ich meine mich grob zu erinnern, dass es da mal ein Timing-Problem gab
> mit Workaround.

Das sehe ich auch so.

Im Gegensatz zu dem hier (gerade gefunden), arbeite ich mit temporären 
Dateien (ich wusste keine andere Lösung):
https://github.com/p1ne/arduino-leonardo-uploader

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Rahul D. schrieb:
> avrdude: ser_open(): can't open device "\\.\COM11:": Das System kann die
> angegebene Datei nicht finden.

Richtig so, der Com Port der Anwendung verschwindet, wenn der Bootloader 
seinen eigenen startet.

Rahul D. schrieb:
> 57600

Da kannst du jede beliebige Baudrate nutzen, ist voll egal welche.
Spielt keine Rolle.

: Bearbeitet durch User
von Rahul D. (rahul)


Lesenswert?

Arduino F. schrieb:
> Was zu tun ist:
> 1. Alle COM Ports merken
> 2. Bootloader starten
> 3. Der neu hinzugekommene, ist der Bootloader Port.

Genau so mache ich das.
Das ist auch nicht das Problem, sondern, dass der wieder weg ist, wenn 
avrdude auf ihn zugreifen will.


Ein python-script habe ich auch gefunden (und schon wieder verschlampt).
Da ging es aber AFAIR nur um das Reset.

Steve van de Grens schrieb:
> Und wie wird der COM Port vom Gerätemanager angezeigt?
"Arduino Leonardo bootloader"

von Rahul D. (rahul)


Lesenswert?

Arduino F. schrieb:
> Richtig so, der Com Port der Anwendung verschwindet, wenn der Bootloader
> seinen eigenen startet.

Das ist schon der Comport des Bootloaders :(
Der App-Comport ist COM6:

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Rahul D. schrieb:
> Das ist auch nicht das Problem, sondern, dass der wieder weg ist, wenn
> avrdude auf ihn zugreifen will.

Dann bist du zu langsam.
Soweit mir bekannt, bleibt der Bootloader 8 Sekunden in Wartestellung.

von Rahul D. (rahul)


Lesenswert?

Arduino F. schrieb:
> Soweit mir bekannt, bleibt der Bootloader 8 Sekunden in Wartestellung.

Sowas in der Richtung sehe ich im Geräte-Manager.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Dann: Nutze die Zeit.

von Rahul D. (rahul)


Angehängte Dateien:

Lesenswert?

Meine Batchdatei mit "Magic Numbers".

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Ich habe nach kleinen Änderungen keine Probleme mit deiner BAT Datei.
1
E:\bin>REM COM6: ├Âffnen und schli├ƒen
2
3
E:\bin>mode COM6: BAUD=1200
4
Die Voreinstellung für die Datenbits ist 7.
5
Die Voreinstellung für die Parität ist gerade.
6
7
Status von Gerät COM6:
8
----------------------
9
    Baudrate:        1200
10
    Parität:         Even
11
    Datenbits:       7
12
    Stoppbits:       1
13
    Timeout:       OFF
14
    XON/XOFF:        OFF
15
    CTS-Handshaking: OFF
16
    DSR-Handshaking: OFF
17
    DSR-Prüfung:     OFF
18
    DTR-Signal:      OFF
19
    RTS-Signal:      ON
20
21
22
E:\bin>REM kurze Pause
23
24
E:\bin>PING localhost -n 2  1>NUL
25
26
E:\bin>REM AVRdude aufrufen
27
28
E:\bin>E:\Programme\arduino\portable\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CE:\Programme\arduino\portable\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -v -patmega32u4 -cavr109 -PCOM7 -b57600 -D -Uflash:w:E:\temp\Arduino/sketch_feb08c001.ino.hex:i
29
30
avrdude: Version 6.3-20190619
31
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
32
         Copyright (c) 2007-2014 Joerg Wunsch
33
34
         System wide configuration file is "E:\Programme\arduino\portable\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"
35
36
         Using Port                    : COM7
37
         Using Programmer              : avr109
38
         Overriding Baud Rate          : 57600
39
         AVR Part                      : ATmega32U4
40
         Chip Erase delay              : 9000 us
41
         PAGEL                         : PD7
42
         BS2                           : PA0
43
         RESET disposition             : dedicated
44
         RETRY pulse                   : SCK
45
         serial program mode           : yes
46
         parallel program mode         : yes
47
         Timeout                       : 200
48
         StabDelay                     : 100
49
         CmdexeDelay                   : 25
50
         SyncLoops                     : 32
51
         ByteDelay                     : 0
52
         PollIndex                     : 3
53
         PollValue                     : 0x53
54
         Memory Detail                 :
55
56
                                  Block Poll               Page                       Polled
57
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
58
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
59
           eeprom        65    20     4    0 no       1024    4      0  9000  9000 0x00 0x00
60
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
61
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
62
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
63
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
64
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
65
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
66
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
67
68
         Programmer Type : butterfly
69
         Description     : Atmel AppNote AVR109 Boot Loader
70
71
Connecting to programmer: .
72
Found programmer: Id = "CATERIN"; type = S
73
    Software Version = 1.0; No Hardware Version given.
74
Programmer supports auto addr increment.
75
Programmer supports buffered memory access with buffersize=128 bytes.
76
77
Programmer supports the following devices:
78
    Device code: 0x44
79
80
avrdude: devcode selected: 0x44
81
avrdude: AVR device initialized and ready to accept instructions
82
83
Reading | ################################################## | 100% 0.01s
84
85
avrdude: Device signature = 0x1e9587 (probably m32u4)
86
avrdude: safemode: lfuse reads as FF
87
avrdude: safemode: hfuse reads as D8
88
avrdude: safemode: efuse reads as CB
89
avrdude: reading input file "E:\temp\Arduino/sketch_feb08c001.ino.hex"
90
avrdude: writing flash (3972 bytes):
91
92
Writing | ################################################## | 100% 0.67s
93
94
avrdude: 3972 bytes of flash written
95
avrdude: verifying flash memory against E:\temp\Arduino/sketch_feb08c001.ino.hex:
96
avrdude: load data flash data from input file E:\temp\Arduino/sketch_feb08c001.ino.hex:
97
avrdude: input file E:\temp\Arduino/sketch_feb08c001.ino.hex contains 3972 bytes
98
avrdude: reading on-chip flash data:
99
100
Reading | ################################################## | 100% 0.28s
101
102
avrdude: verifying ...
103
avrdude: 3972 bytes of flash verified
104
105
avrdude: safemode: lfuse reads as FF
106
avrdude: safemode: hfuse reads as D8
107
avrdude: safemode: efuse reads as CB
108
avrdude: safemode: Fuses OK (E:CB, H:D8, L:FF)
109
110
avrdude done.  Thank you.
111
112
113
E:\bin>pause
114
Drücken Sie eine beliebige Taste . . .

: Bearbeitet durch User
von Rahul D. (rahul)


Lesenswert?

Arduino F. schrieb:
> Ich habe nach kleinen Änderungen keine Probleme mit deiner BAT Datei.

Danke fürs Verifizieren.
Dann wird es wohl an meiner avrdude-Version liegen. Vielleicht ist die 
etwas alt.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Glaube ich nicht.
Eher ist dein ping zu kurz

von Rahul D. (rahul)


Lesenswert?

Arduino F. schrieb:
> Glaube ich nicht.

Ich habe jetzt in das Script von GitHub mal den Ping eingebaut:
Zack! War die COM6: weg - das funktioniert also.
Jetzt muss ich mir ein ISP-Adapter organisieren ;)
Oder zumindest eine USB-CDC-Funktion in meine Firmware einbauen.

Danke für die Unterstützung.

: Bearbeitet durch User
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.