Forum: Compiler & IDEs Fehler beim Schreiben auf AVR (Ubuntu)


von Rainer Z. (razu)


Lesenswert?

Hallo liebe uCler,

ich hab ein Problem beim Beschreiben meines Attiny2313 und dazu bin ich 
noch ein echter Neuing was uCs angeht.
Die Hardware die ich benutze (Pollin-Eva-Board und 
Pollin-RS232-Konverter PL2303) hat mich gezwungen auf Ubuntu 
auszuweichen (dort bin ich ebenfalls etwas ungeübt). Ich habe avr-gcc, 
avrdude, binutils und avr-libc installiert und (wie ich meine) mit "sudo 
apt-get update" auf den neusten Stand gebracht.
Nun wollte ich erstmal irgendein Zeichen dafür finden, dass die 
Kommunikation überhaupt zustande kommt. Dazu hab ich mir auf 
http://derf.homelinux.org/interblag/entry/mikrocontroller-intro/ ein 
Testprogramm geholt.
Ich hab das überarbeitete Makefile mit
1
MCU = attiny2313
2
AVRDUDE_PROGRAMMER = ponyser
3
AVRDUDE_PORT = /dev/ttyUSB0
versehen. ttyUSB0 deshalb, weil mit ein- und ausgestecktem Adapter der 
Befehl "ls /dev/tty*" diesen als einzigen Unterschied der jeweils 
erzeugten Liste ausgespuckt hat.

Außerdem hab ich im Terminal (nach dieser Anleitung 
http://www.henrykoch.de/pages/programmieren/Pollin_Evaluations_Board/Pollin_Board_mit_ATTiny2313_kennen_lernen.php) 
noch folgendes eingegeben:
1
lsusb | grep Serial
2
dmesg | grep pl2303
3
ls /dev/ttyU*
Die Antwort:
1
/dev/ttyUSB0
 Damit ist der Adapter installiert ?!?
Die zugehörige main.c hab ich dann mit dem Makefile in einen Ordner 
getan und wollte nun zur Tat schreiten; im Terminal hab ich diesen 
Ordner gewählt und den make-Befehl eingegeben. Fehlermeldung:
1
unrecognized command line option --combine
2
make: *** [obj/main.o] Fehler 1
Im Makefile hab ich dann die wahrscheinlich verantwortliche Zeile 
gefunden
1
CFLAGS+= --combine -fwhole-program
 und nachdem ich das
1
--combine
 gelöscht hab neu probiert. Es gab keinen Fehler sondern nur diesen 
Absatz:
1
-------- begin --------
2
avr-gcc (GCC) 4.7.2
3
Copyright (C) 2012 Free Software Foundation, Inc.
4
This is free software; see the source for copying conditions.  There is NO
5
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
6
7
8
Compiling C: main.c
9
avr-gcc -c -mmcu=attiny2313 -I. -gdwarf-2 -DF_CPU=UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=obj/main.lst  -std=gnu99 -fwhole-program -Wundef -MD -MP -MF .dep/main.o.d main.c -o obj/main.o
10
11
Linking: main.elf
12
avr-gcc -mmcu=attiny2313 -I. -gdwarf-2 -DF_CPU=UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=obj/main.o  -std=gnu99 -fwhole-program -Wundef -MD -MP -MF .dep/main.elf.d obj/main.o --output main.elf -Wl,-Map=main.map,--cref    -lm
13
14
Creating load file for Flash: main.hex
15
avr-objcopy -O ihex -R .eeprom main.elf main.hex
16
17
Creating load file for EEPROM: main.eep
18
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
19
--change-section-lma .eeprom=0 -O ihex main.elf main.eep
20
avr-objcopy: --change-section-lma .eeprom=0x00000000 never used
21
22
Creating Extended Listing: main.lss
23
avr-objdump -h -S main.elf > main.lss
24
25
Creating Symbol Table: main.sym
26
avr-nm -n main.elf > main.sym
27
28
Size after:
29
main.elf  :
30
section          size   addr
31
.text              64      0
32
.stab            1716      0
33
.stabstr           84      0
34
.comment           17      0
35
.debug_aranges     32      0
36
.debug_info       135      0
37
.debug_abbrev      83      0
38
.debug_line       107      0
39
.debug_frame       36      0
40
.debug_str        118      0
41
.debug_ranges      16      0
42
Total            2408
43
44
45
46
-------- end --------

Nach Anleitung sollte man nun mit "sudo make program" abschließen, doch 
da kommt der Fehler, wegen dem ich mich an euch richte:
1
avrdude -p attiny2313 -P /dev/ttyUSB0 -c ponyser    -U flash:w:main.hex
2
3
avrdude: AVR device not responding
4
avrdude: initialization failed, rc=-1
5
         Double check connections and try again, or use -F to override
6
         this check.
7
8
9
avrdude done.  Thank you.
10
11
make: *** [program] Fehler 1

Ich hab die Kabel gecheckt und Strom ist auch da. Und bis jetzt weiß ich 
nicht wie ich das in den Griff bekomm. Kann es überhaupt an der Software 
liegen? Wie kann ich mit 100%iger Sicherheit sagen, ob mein Board kaputt 
(oder nicht) ist?


Kann jemand Hilfe leisten? Sobald ich anfangen kann, meine Programme zu 
schreiben mach ich Luftsprünge!
Grüße RaZu

von Klaus W. (mfgkw)


Lesenswert?

Ist das Kabel auch an der richtigen Buchse des Eval-Boards angeklemmt?
Das Ding hat ja zwei, und der eine ist zum Programmieren des AVR da, 
während die andere für die UART des AVR ist.

Ansonsten hatte ich mit dieser Konstruktion ohnehin immer Probleme und 
habe immer mit einem richtigen Programmer gearbeitet, auch bei dem 
Eval-Board.

von Simon S. (-schumi-)


Lesenswert?

Rainer Z. schrieb:
> ... und (wie ich meine) mit "sudo apt-get update" auf den neusten Stand 
gebracht.

Noch eine Anmerkung dazu:
 - "sudo apt-get update": Aktualisiert die Liste der aktuell verfügbaren 
Software, die installierte Software wird dabei aber noch nicht auf den 
aktuellen Stand gebracht!
 - "sudo apt-get upgrade": Aktualisiert (nach der Liste vom vorherigen 
Punkt) die installierte Software ("Pakete"), also sinnvollerweise erst 
"update" und dann "upgrade" ausführen
 - "sudo apt-get dist-upgrade": Das selbe wie "upgrade", nur dass dieses 
mal auch Pakete entfernt und neue installiert werden können. Das 
passiert automatisch und wird von einem Konfliktlösungssystem im 
Hintergrund gemanaged. (Du musst jetzt aber nicht befürchten, dass du 
plötzlich keinen Browser mehr hast o.ä)

Wenn du also dein System updaten willst am besten:
1
sudo su
2
apt-get update
3
apt-get dist-upgrade
oder zusammengefasst:
1
sudo su
2
apt-get update && apt-get dist-upgrade

von RaZu (Gast)


Lesenswert?

Mein Adapter ist am ISP angeschlossen; der RS232 ist frei.

von Klaus W. (mfgkw)


Lesenswert?

Mir ist immer noch nicht klar, wie du das Board am PC angeschlossen 
hast.
Mit ISP ist sowohl der eine der beiden 9-pol. DSUB bezeichnet, als auch 
der viereckige 2x5-polige.

Für ersteren bräuchte man ein serielles Kabel (1:1), bei mir hat das nie 
zuverlässig funktioniert. Ich vermute, daß du es damit versuchst.

Für letzteres muß man noch einen Programmieradapter haben, z.B. 
avrispmkii.
Dazu würde ich dringend raten, es geht wesentlich unkomplizierter und 
nicht nur mit dem Eval-Board, sondern auch mit eigenen Schaltungen.
Diese 40.00 sind gut investiert.

von c.m. (Gast)


Lesenswert?

Simon S. schrieb:

> Wenn du also dein System updaten willst am besten:
>
1
> sudo su
2
> apt-get update
3
> apt-get dist-upgrade
4
>
> oder zusammengefasst:
>
1
> sudo su
2
> apt-get update && apt-get dist-upgrade
3
>

mach daraus ein
1
sudo su -
2
...

von wendelsberg (Gast)


Lesenswert?

RaZu schrieb:
> Mein Adapter ist am ISP angeschlossen; der RS232 ist frei.

ISP Bitwackeladapter (wie hier auf dem Pollin-Eval-Board) funktionieren 
am USB-RS232-Adapter extrem schlecht bis gar nicht.

wendelsberg

von Karl (Gast)


Lesenswert?

Ich hatte das Evalboard auch mal über Bitbanging programmiert.
Das ging, allerdings hatte der PC noch eine native RS232-Schnittstelle. 
Und trotzdem wars schnarchlangsam.

Wenn du dir sicher bist dass die Hardware IO ist (immerhin muss man die 
ja selber löten) dann würde ich vermuten liegts am RS232-USB Umsetzer.
Vielleicht findest du ja irgendwo einen PC mit "richtiger" RS232? Wenns 
damit klappt könntest du Hardwareprobleme schon mal ausschließen.

Ansonsten, leg dir bitte einen Programmierer zu, z.B. den AVR-Dragon. Da 
hast du auch gleich JTAG.
Glaub mir, du wirst glücklicher damit. Ich benutze immer noch mein 
uraltes Pollinboard + Dragon für erste Versuche bei einem neuen Projekt.

von Rainer Z. (razu)


Lesenswert?

Vielen Dank für eure Posts.
Der Adapter (USB->Seriell) steckt an dem Sub-D-Stecker, der mit ISP 
beschriftet ist.
Ich wusste von Anfang an das meine Hardware wohl maximal ungeeignet ist, 
aber ich weiß, dass es funktionieren kann. Ein Bekannter hat mir mal 
geholfen und dann hat es in genau dieser Hardware-Software-Kombi 
geklappt. Ich hab den PC aber zwischendurch plattgemacht und jetzt war 
nätürlich alles weg. Viel hab ich seitdem nicht mit dem Eva-Board 
gemacht, es sollte also keine Schäden haben. Und zum Adapter: Wenn ich 
den ausstecke bekomm ich andere Fehlermeldungen, was doch heißen sollte, 
dass er funktioniert (bedingt).

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rainer Z. schrieb:
> aber ich weiß, dass es funktionieren kann.

Naja, manchmal, bei Vollmond, wenn gerade drei heilige Jungfrauen
vor der Tür tanzen. ;-)

Ganz ehrlich: bau dir einen USBasp oder sowas.  Kann ja sein, dass das
mit dem Bitbanger tatsächlich irgendwann irgendwie schnarchlangsam
geht, aber RS-232-Bitbanger sind nach meiner Erfahrung schon immer
etwas „launig“, und hinter einem USB-Seriell-Wandler wirklich in der
Praxis selbst dann nicht mehr benutzbar, falls du die Kombination
in der Tat (wieder) zum Laufen bekommst.

Wenn du für die Lösung des Henne-und-Ei-Problems (wie programmiert
man den ATmega8 für den USBasp initial?) jemanden brauchst, der dir
den Chip programmiert, findest du garantiert hier im Forum Hilfe.
Ansonsten kann man so ein Teil auf einem Stück Lochraster innerhalb
von einer halben Stunde aufbauen (ich habe meinen „freifliegend“
gebaut, aber ich benutze ihn nicht routinemäßig, sondern nur für
AVRDUDE-Tests).

von Uwe (Gast)


Lesenswert?

Bitte Schaltplan zwischen DSUB und ISP.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Uwe schrieb:
> Bitte Schaltplan zwischen DSUB und ISP.

DSUB ist ISP bei diesem Board (der DSUB-Verbinder ist mit „ISP“
bezeichnet).

Den Schaltlplan des Boards findest du bei Max & Max in der Anleitung
zum Board.  Das ist ein klassischer “ponyser”-Programmer, so wie das
auch in der Kommandozeile angegeben worden ist.

von Rainer Z. (razu)


Lesenswert?

Hmm, es ist wohl das beste, wenn ich die Hardwarekombi fallen lasse.
Wäre es denn nicht auch eine gute Alternative, wenn ich mir den Arduino 
UNO R3 zuleg? Mit dem soll es ziemlich unkompliziert gehen, was mir den 
Einstieg vielleicht erleichtert. Und Attinys kann man mit simplem Umbau 
doch auch flashen, oder?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rainer Z. schrieb:
> Wäre es denn nicht auch eine gute Alternative, wenn ich mir den Arduino
> UNO R3 zuleg?

Da habe ich keine Ahnung davon, das müssen diejenigen beantworten, die
damit schon mal gearbeitet haben.

von Uwe (de0508)


Lesenswert?

Hallo Rainer,

Hannes hat hier:

http://www.ehajo.de/Bausaetze/Programmieradapter

verschiedene ISP Programmer im Vertrieb, wobei der µC schon programmiert 
ist.

Seit kurzem auch diesen hier:

http://www.ehajo.de/Bausaetze/Programmieradapter/USP-Stick

von T.roll (Gast)


Lesenswert?

Uwe S. schrieb:
> Seit kurzem auch diesen hier:
>
> http://www.ehajo.de/Bausaetze/Programmieradapter/USP-Stick

Das Ding sieht ja sehr interessant aus, aber funktioniert der auch unter 
Linux?

Langsam muss ich von einem Parallel-Programmer doch mal auf USB 
umsteigen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

T.roll schrieb:
> Das Ding sieht ja sehr interessant aus, aber funktioniert der auch unter
> Linux?

Da er ausdrücklich von AVRDUDE schreibt (im Wiki-Eintrag, auf den
er da verlinkt), sollte das kein Problem sein.  Du musst dich nur
per udev-Regel um die Zugriffsrechte kümmern.

von T.roll (Gast)


Lesenswert?

Naja, bei den Diamex-Programmern steht auch avrdude dabei, trotzdem 
haben hier mehrere Probleme bei Verwendung mit Linux. Deswegen war ich 
mir unsicher.

von Uwe (de0508)


Lesenswert?

Guten Morgen,

ich habe einige ISP Programmer unter Linux im Einsatz und mit den 
richtigen Rechten auf die USB Device geht es.
Siehe Beitrag von Jörg.

Programmer
# usbasp
# tinyisp
# avrisp mk2 clone

# bootloader -> usbasp
# lufa cdc bootloader
# fastboot von Peter / PeDa

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

T.roll schrieb:
> Naja, bei den Diamex-Programmern steht auch avrdude dabei

Für diesen hier scheint es aber nur AVRDUDE zu geben.

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.