PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : arduino-IDE, codeblocks und avrdude



inka
17.02.2016, 15:59
hallo allerseits,

folgendes problem:

ich bin nun soweit, dass codeblocks fehlerfrei meine sketches kompiliert, problem habe ich mit avrdude, der meldet mir unter codeblocks, dass alles gut gelaufen ist, löscht aber nur den atmega 2560, beschreibt ihn aber nicht. Ich habe hier zwei protokolle, eines von der arduino-IDE:

Der Sketch verwendet 8.692 Bytes (3%) des Programmspeicherplatzes. Das Maximum sind 253.952 Bytes.Globale Variablen verwenden 916 Bytes (11%) des dynamischen Speichers, 7.276 Bytes für lokale Variablen verbleiben. Das Maximum sind 8.192 Bytes.
/opt/arduino-1.6.6/hardware/tools/avr/bin/avrdude -C/opt/arduino-1.6.6/hardware/tools/avr/etc/avrdude.conf -v -patmega2560 -cwiring -P/dev/ttyACM0 -b115200 -D -Uflash:w:/tmp/build77a11ba429c78c51a089b623d0df28fc.tmp/linien_folger_2_1.ino.hex:i


avrdude: Version 6.0.1, compiled on Apr 14 2015 at 18:03:40
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch


System wide configuration file is "/opt/arduino-1.6.6/hardware/tools/avr/etc/avrdude.conf"
User configuration file is "/home/georg/.avrduderc"
User configuration file does not exist or is not a regular file, skipping


Using Port : /dev/ttyACM0
Using Programmer : wiring
Overriding Baud Rate : 115200
AVR Part : ATmega2560
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :


Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x00 0x00
flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00


Programmer Type : Wiring
Description : Wiring
Programmer Model: AVRISP
Hardware Version: 15
Firmware Version Master : 2.10
Vtarget : 0.0 V
SCK period : 173.7 us


avrdude: AVR device initialized and ready to accept instructions


Reading | ################################################## | 100% 0.01s


avrdude: Device signature = 0x1e9801
avrdude: reading input file "/tmp/build77a11ba429c78c51a089b623d0df28fc.tmp/linien_folger_2_1.ino.hex"
avrdude: writing flash (8692 bytes):


Writing | ################################################## | 100% 1.39s


avrdude: 8692 bytes of flash written
avrdude: verifying flash memory against /tmp/build77a11ba429c78c51a089b623d0df28fc.tmp/linien_folger_2_1.ino.hex:
avrdude: load data flash data from input file /tmp/build77a11ba429c78c51a089b623d0df28fc.tmp/linien_folger_2_1.ino.hex:
avrdude: input file /tmp/build77a11ba429c78c51a089b623d0df28fc.tmp/linien_folger_2_1.ino.hex contains 8692 bytes
avrdude: reading on-chip flash data:


Reading | ################################################## | 100% 1.04s


avrdude: verifying ...
avrdude: 8692 bytes of flash verified


avrdude done. Thank you.


und hier das protokoll von avrdude unter codeblocks:

Launching tool 'avrdude-arduino': avrdude -c wiring -P /dev/ttyACM0 -v -b 115200 -p m2560 -C/opt/arduino-1.6.6/hardware/tools/avr/etc/avrdude.conf -Uflash:w:bin/Release/linien_folger_2_1.hex (in /home/georg/Arduino/workspace/linien_folger/linien_folger_2_1)
stderr>
stderr> avrdude: Version 6.0.1, compiled on Oct 21 2013 at 17:07:18
stderr> Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
stderr> Copyright (c) 2007-2009 Joerg Wunsch
stderr>
stderr> System wide configuration file is "/opt/arduino-1.6.6/hardware/tools/avr/etc/avrdude.conf"
stderr> User configuration file is "/home/georg/.avrduderc"
stderr> User configuration file does not exist or is not a regular file, skipping
stderr>
stderr> Using Port : /dev/ttyACM0
stderr> Using Programmer : wiring
stderr> Overriding Baud Rate : 115200
stderr> AVR Part : ATmega2560
stderr> Chip Erase delay : 9000 us
stderr> PAGEL : PD7
stderr> BS2 : PA0
stderr> RESET disposition : dedicated
stderr> RETRY pulse : SCK
stderr> serial program mode : yes
stderr> parallel program mode : yes
stderr> Timeout : 200
stderr> StabDelay : 100
stderr> CmdexeDelay : 25
stderr> SyncLoops : 32
stderr> ByteDelay : 0
stderr> PollIndex : 3
stderr> PollValue : 0x53
stderr> Memory Detail :
stderr>
stderr> Block Poll Page Polled
stderr> Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
stderr> ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
stderr> eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x00 0x00
stderr> flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00
stderr> lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
stderr> hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
stderr> efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
stderr> lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
stderr> calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
stderr> signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
stderr>
stderr> Programmer Type : Wiring
stderr> Description : Wiring
stderr> Programmer Model: AVRISP
stderr> Hardware Version: 15
stderr> Firmware Version Master : 2.10
stderr> Vtarget : 0.0 V
stderr> SCK period : 104.2 us
stderr>
stderr> avrdude: AVR device initialized and ready to accept instructions
stderr>
stderr> Reading | ################################################## | 100% 0.01s
stderr>
stderr> avrdude: Device signature = 0x1e9801
stderr> avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
stderr> To disable this feature, specify the -D option.
stderr> avrdude: erasing chip
stderr> avrdude: reading input file "bin/Release/linien_folger_2_1.hex"
stderr> avrdude: input file bin/Release/linien_folger_2_1.hex auto detected as Intel Hex
stderr> avrdude: writing flash (5332 bytes):
stderr>
stderr> Writing | #######
stderr> ##
stderr> ##
stderr> ###
stderr> ##
stderr> #####
stderr> #####
stderr> ##
stderr> ##
stderr> ###
stderr> ##
stderr> ###
stderr> #######
stderr> ##### | 100% 0.86s
stderr>
stderr> avrdude: 5332 bytes of flash written
stderr> avrdude: verifying flash memory against bin/Release/linien_folger_2_1.hex:
stderr> avrdude: load data flash data from input file bin/Release/linien_folger_2_1.hex:
stderr> avrdude: input file bin/Release/linien_folger_2_1.hex auto detected as Intel Hex
stderr> avrdude: input file bin/Release/linien_folger_2_1.hex contains 5332 bytes
stderr> avrdude: reading on-chip flash data:
stderr>
stderr> Reading | ##
stderr> ##
stderr> #####
stderr> ##
stderr> ###
stderr> ##
stderr> ###
stderr> ####
stderr> ###
stderr> #######
stderr> #######
stderr> #######
stderr> ### | 100% 0.62s
stderr>
stderr> avrdude: verifying ...
stderr> avrdude: 5332 bytes of flash verified
stderr>
stderr> avrdude done. Thank you.
stderr>
stderr>
stdout>
Tool execution terminated with status 0


beim zweiten protokoll (codeblocks) wird gelöscht, der schreibvornang liesst sich im protokoll aber ganz anders als bei der arduino-IDE. Ich habe schon mit den avrdude parametern recht intensiv experimentiert, weiss aber nicht was da schiefläuft...

bitte an die avrdude-experten - wo liegt das problem?

Robotniks
29.03.2016, 21:06
Hi,

probier mal Programino aus, ist deutlich stressfreier :D

www.programino.com

inka
30.03.2016, 08:01
hi,

aus drei gründen ungeeignet:

- man muss es kaufen
- ist für windows
- wollte eigentlich nur eine IDE für arduino und RP6

Koertis
30.03.2016, 08:43
Hallo Inka,

ich verwende avrdude um einen Arduino MEGA in Linux zu programmieren und es funktioniert einwandfrei mit folgendem Befehl:

```
avrdude -pm2560 -cstk500v2 -P /dev/ttyACM0 -b115200 -D -V -U flash:w:file.hex
```

Probiere den Befehl mal aus und ich schaue am Abend noch mal genauer drauf.
Gruß

stecdose
31.03.2016, 10:32
Soweit sieht das log eigentlich gut aus. Ich denke der avrdude wird von deinem Build-Plugin im interactive-mode benutzt oder aber das -v (verbose), daher die andere Ausgabe.
Schau dir eventuell mal /opt/arduino-1.6.6/hardware/tools/avr/etc/avrdude.conf an, aber ich denke nicht, dass dort was im Argen liegt.

Benutzt du den avrdude aus einer IDE oder den deiner Distribution? Bei mir (Debian) funktioniert der aus den debian-repos problemlos mit wiring und m2560.

avrdude -c wiring -P /dev/ttyACM0 -v -b 115200 -p m2560 -C/opt/arduino-1.6.6/hardware/tools/avr/etc/avrdude.conf -Uflash:w:bin/Release/linien_folger_2_1.hex

Liest du den Chip nach dem schreiben aus oder woher weisst du, dass nicht geschrieben wurde? Lösche den Chip einmal, lies ihn aus. Beschreib ihn und lies ihn aus, dann Vergleiche.

avrdude -c wiring -P /dev/ttyACM0 -b 115200 -p m2560 -Uflash:r:readout.hex ---> eventuell -v anhängen und auf Ausgabe achten.

ein kleiner hexeditor (z.B. hexedit) zeigt die Dateien dann ordentlich an.

inka
01.04.2016, 09:11
hallo,

ich hatte nicht mehr darauf gehofft, dass sich noch jemand melden würde, habe also meine versuche mit code::blocks nicht nur eingestellt, sondern entfernt :-(

jetzt habe ich versucht meine bemühungen von damals wieder nachzuvollziehen, weiss nicht ob mir das gelungen ist. Die kompilierte datei ist eine andere (vor_und_zurueck_2.ino), liegt nach wie vor für die arduino-IDE und code:blocks in verschiedenen verzeichnissen damit sich die dateien und scripts nicht ins gehege kommen.

ich muss gestehen, dass ich so gut wie keine der meldungen verstehe. Das einzige was mir auffält ist die unterschiedliche größe der verfizierten flies: 13542 bytes (arduino IDE) und 5332 bytes (code::blocks) Vielleicht doch nicht ein problem des flashens, sondern der compiliervorgang von code::blocks? Auch wenn es keine fehlermeldungen, sondern "nur" warnungen gab...
Nach dem flashen über arduino-IDE läuft das programm, nach dem flaschen über code:blocks nicht - so viel zu meiner annahme, dass beim flashen etwas schiefläuft...

Ergebnis meiner neuen versuche:

Das hier ist das flashprotokoll der arduino IDE, es wird der arduino avrdude verwendet

Der Sketch verwendet13.542 Bytes (5%) des Programmspeicherplatzes. Das Maximum sind253.952 Bytes.
Globale Variablenverwenden 1.611 Bytes (19%) des dynamischen Speichers, 6.581 Bytes für lokale Variablen verbleiben. Das Maximum sind 8.192 Bytes.
/opt/arduino-1.6.8/hardware/tools/avr/bin/avrdude-C/opt/arduino-1.6.8/hardware/tools/avr/etc/avrdude.conf -v-patmega2560 -cwiring -P/dev/ttyACM0 -b115200 -D-Uflash:w:/tmp/buildbe2f8020554fcc44f69ca57f89b02053.tmp/vor_und_zurueck_2.ino.hex:i


avrdude: Version6.0.1, compiled on Apr 14 2015 at 18:03:40
Copyright(c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright(c) 2007-2009 Joerg Wunsch


System wideconfiguration file is"/opt/arduino-1.6.8/hardware/tools/avr/etc/avrdude.conf"
Userconfiguration file is "/home/georg/.avrduderc"
Userconfiguration file does not exist or is not a regular file, skipping


Using Port : /dev/ttyACM0
UsingProgrammer : wiring
OverridingBaud Rate : 115200
AVR Part : ATmega2560
Chip Erasedelay : 9000 us
PAGEL : PD7
BS2 : PA0
RESETdisposition : dedicated
RETRY pulse : SCK
serialprogram mode : yes
parallelprogram mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
MemoryDetail :


Block Poll Page Polled
MemoryType Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ---------- ---------
eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x000x00
flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x000x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x000x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x000x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x000x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x000x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x000x00


ProgrammerType : Wiring
Description : Wiring
ProgrammerModel: AVRISP
HardwareVersion: 15
FirmwareVersion Master : 2.10
Vtarget : 0.0 V
SCK period : 173.7 us


avrdude: AVR deviceinitialized and ready to accept instructions


Reading |################################################# # | 100% 0.01s


avrdude: Devicesignature = 0x1e9801
avrdude: readinginput file"/tmp/buildbe2f8020554fcc44f69ca57f89b02053.tmp/vor_und_zurueck_2.ino.hex"
avrdude: writingflash (13542 bytes):


Writing |################################################# # | 100% 2.17s


avrdude: 13542 bytesof flash written
avrdude: verifyingflash memory against/tmp/buildbe2f8020554fcc44f69ca57f89b02053.tmp/vor_und_zurueck_2.ino.hex:
avrdude: load dataflash data from input file/tmp/buildbe2f8020554fcc44f69ca57f89b02053.tmp/vor_und_zurueck_2.ino.hex:
avrdude: input file/tmp/buildbe2f8020554fcc44f69ca57f89b02053.tmp/vor_und_zurueck_2.ino.hexcontains 13542 bytes
avrdude: readingon-chip flash data:


Reading |################################################# # | 100% 1.67s


avrdude: verifying...
avrdude: 13542 bytes of flash verified


avrdude done. Thankyou.



das hier ist das kompiler protokoll von code::blocks:

||=== Build: ArduinoMega 2560/ADK in vor_und_zurueck_2 (compiler: GNU AVR GCC Compiler)===|
/home/georg/.codeblocks/arduino/hardware/arduino/cores/arduino/IPAddress.h||Inmember function 'IPAddress::operator uint32_t()':|
/home/georg/.codeblocks/arduino/hardware/arduino/cores/arduino/IPAddress.h|51|warning:dereferencing type-punned pointer will break strict-aliasing rules[-Wstrict-aliasing]|
/home/georg/.codeblocks/arduino/hardware/arduino/cores/arduino/IPAddress.h||Inmember function 'bool IPAddress::operator==(const IPAddress&)':|
/home/georg/.codeblocks/arduino/hardware/arduino/cores/arduino/IPAddress.h|52|warning:dereferencing type-punned pointer will break strict-aliasing rules[-Wstrict-aliasing]|
/home/georg/.codeblocks/arduino/hardware/arduino/cores/arduino/IPAddress.h|52|warning:dereferencing type-punned pointer will break strict-aliasing rules[-Wstrict-aliasing]|
||=== Buildfinished: 0 error(s), 3 warning(s) (0 minute(s), 2 second(s)) ===|




und hier das flashprotokol mit code::blocks:

Launching tool'avrdude-ubuntu': avrdude -c wiring -P /dev/ttyACM0 -D -v -b 115200-p m2560 -C /etc/avrdude.conf-Uflash:w:bin/Release/vor_und_zurueck_2.hex (in/home/georg/Arduino/workspace/stepper_motor/hindernisse/vor_und_zurueck_2)
stderr>
stderr> avrdude:Version 6.1, compiled on Nov 23 2014 at 21:15:40
stderr> Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
stderr> Copyright (c) 2007-2014 Joerg Wunsch
stderr>
stderr> System wide configuration file is "/etc/avrdude.conf"
stderr> User configuration file is "/home/georg/.avrduderc"
stderr> User configuration file does not exist or is not a regular file,skipping
stderr>
stderr> Using Port : /dev/ttyACM0
stderr> Using Programmer : wiring
stderr> Overriding Baud Rate : 115200
stderr> AVR Part : ATmega2560
stderr> Chip Erase delay : 9000 us
stderr> PAGEL : PD7
stderr> BS2 : PA0
stderr> RESET disposition : dedicated
stderr> RETRY pulse : SCK
stderr> serial program mode : yes
stderr> parallel program mode : yes
stderr> Timeout : 200
stderr> StabDelay : 100
stderr> CmdexeDelay : 25
stderr> SyncLoops : 32
stderr> ByteDelay : 0
stderr> PollIndex : 3
stderr> PollValue : 0x53
stderr> Memory Detail :
stderr>
stderr> Block Poll Page Polled
stderr> Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
stderr> ----------- ---- ----- ----- ---- ------ ------ ---- ------ ---------- ---------
stderr> eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x00 0x00
stderr> flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00
stderr> lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
stderr> hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
stderr> efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
stderr> lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
stderr> calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
stderr> signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
stderr>
stderr> Programmer Type : Wiring
stderr> Description : Wiring
stderr> Programmer Model: AVRISP
stderr> Hardware Version: 15
stderr> Firmware Version Master : 2.10
stderr> Vtarget : 0.0 V
stderr> SCK period : 104.2 us
stderr>
stderr> avrdude:AVR device initialized and ready to accept instructions
stderr>
stderr> Reading |################################################# # | 100% 0.01s
stderr>
stderr> avrdude:Device signature = 0x1e9801
stderr> avrdude:reading input file "bin/Release/vor_und_zurueck_2.hex"
stderr> avrdude:input file bin/Release/vor_und_zurueck_2.hex auto detected as IntelHex
stderr> avrdude:writing flash (5332 bytes):
stderr>
stderr> Writing |###########
stderr> #####
stderr> #####
stderr> ##
stderr> #####
stderr> #####
stderr> #######
stderr> #####
stderr> ##### |100% 0.86s
stderr>
stderr> avrdude:5332 bytes of flash written
stderr> avrdude:verifying flash memory against bin/Release/vor_und_zurueck_2.hex:
stderr> avrdude:load data flash data from input filebin/Release/vor_und_zurueck_2.hex:
stderr> avrdude:input file bin/Release/vor_und_zurueck_2.hex auto detected as IntelHex
stderr> avrdude:input file bin/Release/vor_und_zurueck_2.hex contains 5332 bytes
stderr> avrdude:reading on-chip flash data:
stderr>
stderr> Reading |####
stderr> #####
stderr> ##
stderr> #####
stderr> ###
stderr> #######
stderr> ##
stderr> #######
stderr> #######
stderr> ########| 100% 0.62s
stderr>
stderr> avrdude:verifying ...
stderr> avrdude:5332 bytes of flash verified
stderr>
stderr> avrdudedone. Thank you.
stderr>
stderr>
stdout>
Tool executionterminated with status 0

stecdose
05.04.2016, 13:06
ich muss gestehen, dass ich so gut wie keine der meldungen verstehe. Das einzige was mir auffält ist die unterschiedliche größe der verfizierten flies: 13542 bytes (arduino IDE) und 5332 bytes (code::blocks) Vielleicht doch nicht ein problem des flashens, sondern der compiliervorgang von code::blocks? Auch wenn es keine fehlermeldungen, sondern "nur" warnungen gab...

Versuche mal ein ganz einfach Testprogramm, welches nur eine LED blinken lässt, vorzugsweise ganz einfach mit for(;;) und _delay_ms(). Genau den selben Code in einem neuen Projekt in beiden IDEs, wenn möglich.

avrdude von Hand zu bedienen mit den hex-Files kann auch ganz praktisch sein, oben schrieb ich ja schon zwei Beispiele. Wenn du mehr brauchst, kann ich mehr posten...

- - - Aktualisiert - - -


ich muss gestehen, dass ich so gut wie keine der meldungen verstehe. Das einzige was mir auffält ist die unterschiedliche größe der verfizierten flies: 13542 bytes (arduino IDE) und 5332 bytes (code::blocks) Vielleicht doch nicht ein problem des flashens, sondern der compiliervorgang von code::blocks? Auch wenn es keine fehlermeldungen, sondern "nur" warnungen gab...

Versuche mal ein ganz einfach Testprogramm, welches nur eine LED blinken lässt, vorzugsweise ganz einfach mit for(;;) und _delay_ms(). Genau den selben Code in einem neuen Projekt in beiden IDEs, wenn möglich.

avrdude von Hand zu bedienen mit den hex-Files kann auch ganz praktisch sein, oben schrieb ich ja schon zwei Beispiele. Wenn du mehr brauchst, kann ich mehr posten...