Forum: Mikrocontroller und Digitale Elektronik Atmegas programmieren ohne AVR Studio und ohne Windows.


von mx (Gast)


Lesenswert?

Hi Community,...

bin seit ca. 4 Monaten stolzer Linuxanwender,...
nun ja, kleine Einschränkungen hat es, ich bekomm AVR- studio einfach 
nich zum laufen,... aber das soll nicht Inhalt des Beitrags sein!

Meine Frage(n):

1:
Was für Programme brauch ich um einen Atmega 8 ohne AVR Studio und ohne 
Programmer zu Proggen (Frage 2),...
Hatte schonmal einen selbstversuch gestartet, der aber mein System 
ziemlich zerhauen hat, deshalb frag ich jetzt nach.

2:
Ich hab außerdem gehört, dass die Atmega Familie über ISP mit einer 
Seriellen Schnittstelle Programmiert werden können. Das wär echt toll, 
weil ich hab weder nen Programmer noch andere Ausrüstung außer ner 
Seriellen Schnittstelle...
Wenn das geht, was muss ich beachten, wie ist das mit den Makefiles, die 
müsste ich da selber machen, oder??

Hat jemand schon Erfahrung mit ISP und evtl. auch Linux??

Version Linux Ubuntu 7.10

Gruß
mx

von Mario G. (mario)


Lesenswert?


von I_ H. (i_h)


Lesenswert?

Ungewöhnlich ist es AVRs unter windows zu programmieren, weil der GNU 
GCC (AVR-GCC ist nur ein leicht modifizierter GCC) eigentlich auf 
GNU/Linux Systemen heimisch ist. Unter Linux ist das also kalter Kaffee 
;)

Als Progger kannst du Ponyprog benutzen.

PS: Deine Distribution heist Ubuntu. Linuxversion wird 2.6.irgendwas 
sein.

von Tom (Gast)


Lesenswert?

@i_h
sehr hilfreich dein Posting
ermutigt viele auf Linux umzusteigen bei so viel Unterstützung

von mx (Gast)


Lesenswert?

Danke erstmal,
aber ich muss gestehen, ich bin sowohl in linux und auch µCs nicht allzu 
fit.

Ich hab bis jetzt nur unter Windows mit avrrisp und avr studio kurz mal 
gearbeitet und wie schon gesagt mit linux erst angefangen.

Den thread hab ich in meinem selbstversuch auch durchgemacht, und 
nachdem ich
die hälfte installiert hatte, war mein system im eimer, warum auch 
immer.

Ich find dieser Artikel ist für nen anfänger auch ziemlich viel info auf 
einmal, also ich war da nich wirklich durchgestiegen und hab jetzt 
eigentlich nicht wirklich lust mein system nochmal neu aufzulegen...

Hat nicht jemand schon erfahrung welche progs ich installieren sollte, 
damit ich mir das dann genau durchlesen kann??

Gruß
mx

von Andreas B. (bitverdreher)


Lesenswert?

wenn Du unter KDE arbeitest, empfehle ich Dir kate als Editor und IDE.
Programmieren mit avrdude und einem ordentlichen ISP Programmer. Alles 
andere ist IMHO Murks (auch unter Windows).
Ansonsten gcc, avr-libc, gcc-avr, binutils-avr

Gruß
Andy

PS: Dazu gibt es hier auch schon einige Threads. Bemühe mal die Suche.

von I_ H. (i_h)


Lesenswert?

@Tom

In dem Wiki-Artikel steht nunmal schon fast alles, bis auf die Sache mit 
Ponyprog. Besteht dein Problem darin, dass ich die Informationen im 
Artikel nicht nochmal wiederkäue?

Wie man den AVR GCC genau installiert hängt auch sehr von der 
Distribution ab, wenn man's nicht grad aus dem source neukompliert. Mit 
Ubuntu kenn ich mich nicht aus, unter gentoo reicht ein emerge avr-gcc. 
Pakete für Ubuntu sind ja aber im Wikiartikel verlinkt.

Im Endeffekt ist es überall ähnlich, man muss halt einen Crosscompiler 
mit Toolchain einrichten. Der Weg dahin ist überall anders, das Resultat 
wiederrum das selbe.

@mx

Da musst du dich wohl schon erstmal etwas einarbeiten. Aber wenn du 
einmal weist wie du Programme unter Linux installierst, ist der Weg fast 
immer der selbe. Auf Ubuntu kann ich dir da nicht direkt weiterhelfen, 
benutze selber Gentoo - aber bitte komm desswegen nicht auf die Idee 
gleich die Distri wechseln zu wollen ;). In einem Ubuntu-Forum kann dir 
sicher weitergeholfen werden.

von mx (Gast)


Lesenswert?

Danke für die Beiträge

@Andreas...

also ist ein Programmer notwendig??

Weil soweit ich das bisher gesehen hab, sollte es über RS232 und isp 
auch gehen, da kann ich mich aber auch täuschen??

Gruß

von I_ H. (i_h)


Lesenswert?

Du brauchst in jedem Fall einen Programmer, für RS232 besteht der aber 
nur aus ein paar Widerständen und einem Transistor, nix kompliziertes 
also.

http://s-huehn.de/elektronik/avr-prog/avr-prog.htm

von Andreas B. (bitverdreher)


Lesenswert?

Es geht wohl auch ohne Programmer. Ich lese hier nur ständig von Leuten, 
die Probleme mit solchen direktem Anschließen an den parallel Port 
haben. Das leuchtet mir auch ein, weil moderne Betriebssysteme eben 
keine Echtzeitbetriebssysteme sind und exakte Timings, die zum 
Programmieren eingehalten werden müssen, so nicht garantiert sind. Einen 
Max232 zur Pegelanpassung brauchst Du sowieso, wenn Du über die serielle 
gehen willst. Die RS232 liefert +/- 10V, ist also zum direkten 
Anschließen an den AVR nicht geeignet. Der Parallelport geht da schon 
eher.
Ein fertiger Programmer kostet <20€. Ich würde auch unbedingt einen 
nehmen, der einen kleinen AVR drauf hat. Dieser entspricht dann auch den 
Specs von Atmel.
Es ist daher in meinen Augen nicht einzusehen, sich hier noch eine 
weitere Baustelle zu schaffen. Probleme wirst Du als Anfänger noch genug 
bekommen.
Aber das ist eben nur meine Meinung.

Gruß
Andy

von lightninglord (Gast)


Lesenswert?

Also ich benutze unter Linux ( Kubuntu ) das Kontrollerlab und den 
AVR-Dude mit STK500 als Programmer, ist echt sehr gut aufgebaut, es 
fehlt zwar noch nen Simulator, aber OnChipDebug wird unterstützt das 
reicht eigentlich voll aus.

von Norgan (Gast)


Lesenswert?

Das Wort Programmer hat in dem Kontext zwei Bedeutungen:

1) Ein Stück Hardware, welches den Computer mit dem zu programmierenden 
Baustein (MCU) auf die eine oder andere Weise verbindet.

2) Ein Stück Software auf dem Computer, welches wiederum mit der unter 
1) erwähnten Hardware redet.


Zu 1) STK500 oder AVR Dragon.

Das STK500 wird über RS232 mit dem Computer verbunden. Der Dragon 
hingegen über USB. Beide wiederum unterstützen eine ganze Reihe von 
Methoden zur Verbindung mit und Programmieren eines AVR. Ob STK500 oder 
Dragon ist etwas Geschmackssache. Der Dragon soll leichter kaputt gehen.

Beide werden unter Linux ausreichend unterstützt. Updates der Firmware 
in diesen Geräte geht offiziell nur unter Windows.

Programmer-Hardware aus ein paar popeligen Widerstände und einen Buffer 
an der Drucker- oder seriellen Schnittstelle sind nicht empfehlenswert. 
Ja, ja, gleich kommt wieder die "aber bei mir geht das seit Trillionen 
Jahren 1!11!!!111elf"-Fraktion. Bei vielen Leuten gehen die eben nicht 
und machten Ärger.

Zu 2) avrdude oder zur Not uisp

avrdude kann mit einer Unmenge an Programmer-Hardware. Natürlich auch 
dem STK500 und dem Dragon. uisp's letzte Release ist schon ein paar 
Jahre her, während avrdude regelmäßig gewartet wird. Einen gewissen 
Zossen erwähne ich hier absichtlich nicht.

von mx (Gast)


Lesenswert?

Alles klar,
die 20-40€ investier ich dann noch...

Danke euch allen!!

Noch eine Sache zum Verständnis...

Die Makefiles sind notwendig wenn ich mit avrdude arbeite??
Wenn ja, würde ich nähmlich, solange der Programmer unterwegs (post) 
ist, mich da mal reinlesen.
Genügt da der Beitrag/Artikel aus µC.net oder sollte ich mir noch eine 
andere Quelle suchen??

Danke und Gruß
mx

von yalu (Gast)


Lesenswert?

> Die Makefiles sind notwendig wenn ich mit avrdude arbeite??

Makefiles dienen eigentlich in erster Linie der Steuerung von
Compiler, Linker usw. Meistens baut man aber der Bequemlichkeit halber
gleich ein Target für den Aufruf der Programmiersoftware (Avrdude oder
andere) ein.

Man kann die AVR-Makefiles
- selber schreiben
- aus einem Mustermakefile aus dem Netz ableiten
- mit dem Makefile-Generator Mfile erzeugen

Bei letzterem brauchst du eigentlich kaum Kenntnisse von Make. Die von
Mfile erzeugten Makefiles enthalten auch die o.g. Avrdude-Targets, so
dass man auch hier nicht mehr viel nachdenken muss.

Wenn man die Makefiles selber schreibt, hat man eben etwas mehr
Eingriffsmöglichkeiten, wenn man zusätzliche Tools (z.B. zur
Codegeneratoren, Dokumentationstools usw.) einsetzt, oder wenn man
eine andere File-/Directory-Struktur für seine Projekte vorzieht.

Es ist sicher kein Schaden, mal ins GNU-Make-Manual reinzuschauen. Man
versteht dann im Problemfall auch die automatisch generierten
Makefiles besser.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Die Makefiles sind nicht notwendig, aber bequem.

Du könntest alle notwendigen Programme durch Eintippen des 
Programmnamens und aller notwendigen Parameter wie Programmoptionen und 
Dateinamen von der Konsole (Terminalfenster) aus bedienen.

Aber wer will das? Der Rechner sollte doch wissen, was zu machen ist, 
wenn ich ein Projekt übersetzen und/oder auf den AVR übertragen will.

Genau dieses Wissen steckt man in den Makefiles in Form sog. Regeln 
(Rules) rein. Erschreckend ist am Abfang der Blick in so ein Makefile, 
weil man kaum einen Sinn sieht bzw. meint man müsste alles Anpassen oder 
neuschreiben. Ist aner nicht nötig.

Zum Glück haben nette Leute die Grundgerüste (Templates) für Makefiles 
bereits erstellt, so dass man nur noch eintragen muss, welchen AVR bei 
welcher Taktrate man hat und wie der ISP-Programmieradapter 
Hardwaretechnisch aussieht und wo er am Rechner angeschlossen ist. 
Insgesamt genau das gleiche Wissen ist notwendig, wenn man ohne 
Makefiles arbeiten wollte. Und zum Eintragen dieser Werte gibt es sogar 
Tools wie mfile.

Und ein zweiter positiver Effekt von Makefiles: Man kann seine 
Projektparameter (AVR-Typ, Taktrate...) angeben und andere einfach über 
so ein Makefile drüberschauen lassen, ob's passt.

Also: Keine Scheu vor Makefiles. Die gehören zu den Guten und 
erleichertn dir den Umgang mit dem AVR.

EDIT: Hab wieder mal zu lange getippt, Yalu war schneller.

von mx (Gast)


Lesenswert?

Danke euch allen!!

Gruß

von Andreas B. (bitverdreher)


Angehängte Dateien:

Lesenswert?

Mal ein Bsp. makefile angehängt.
Hier siehst Du auch gut, wie in diesem Bsp. avrdude aufgerufen wird.
Ich kümmere mich beim Entwickeln nicht mehr um die genauen 
Aufrufparameter von make, avrdude und das ganze tralala.
Ist das makefile erst einmal erstellt, sieht die Entwicklung so aus:

*.C und *.H files editieren
dann Aufruf "make program".

wenn es beim compilieren keine Fehler gab, ist damit das Programm auch 
schon im AVR drin.

Oder ich setze eben nur ein "make" ab. Dann wird nur compiliert und 
gebaut. Dies mache ich manchmal, wenn ich vorher noch in die *.lss 
schauen will, was der Compiler daraus gemacht hat, bevor ich das *.hex 
auf den AVR loslasse.
Anschließend dann mit "make program" rein in den AVR.

AVRStudio und andere IDEs machen im Grunde genommen nichts anderes. Nur 
sind diese Aufrufe intern und lassen sich nicht so schön anpassen, als 
wenn man sein eigenes makefile erstellt.

[/Werbung makefile off] ;-)

Gruß
Andy

von Mike (Gast)


Lesenswert?

Müste man nicht einfach das gewünschte File kompilieren, und das ganze 
dann mit sowas wie Ponyprog in den AVR laden?


Ich versteh den aufgezählten Aufwand nicht.

von Wolfgang (Gast)


Lesenswert?

@Mike:
Wenn Du alles unübersichtlich in eine Datei quetschst und Dir jedesmal 
die Parameter zum Programmieren merken oder umständlich über 
irgendwelche Menüs (ich kenne Ponyprog nicht) einstellen willst, kannst 
Du das gerne machen.

Einfacher geht es mit Makefiles...

Gruß,
Wolfgang

von Mike (Gast)


Lesenswert?

Ich glaube der Originalposter braucht erstmal ein grundlegendes 
Verständnis, wie er da möglichst einfach vorgehen könnte.

Mit Makefiles und co sich auseinandersetzen zu müssen, nur weil man 
erstmal schnell was kompilieren und in den AVR schicken will ist doch 
Overkill.

Mit den Feinheiten *nix-Welt kann er sich dann doch immer noch 
beschäftigen.

von andy (Gast)


Lesenswert?

> Mit den Feinheiten *nix-Welt kann er sich dann doch immer noch
> beschäftigen.

Auch unter Windows gibt es make.

Ausserdem kann er z.B. einfach oben gepostetes makefile verwenden, sein 
Projektnamen und sonstige *.C einfügen, den avrdue Aufruf anpassen und 
sich über den einfachen Aufruf von "make program" erfreuen.
Wo ist das mehr Arbeit oder wo verlangt das mehr Wissen als ein Aufruf 
mit gcc. Die Parameter zu gcc zumcompilieren und linken muss er ja auch 
erst einmal irgendwoher bekommen. Im makefile oben stehen sie schon 
drin.

Gruss
Andy

von Gizmotron (Gast)


Lesenswert?

Guten Tag

Für den Anfang kann man einfach, wie weiter oben gesagt, Kontrollerlab 
gebrauchen. Kontrollerlab ist extra für AVRs gemacht und unterstützt 
neben dem integrierten Kompilier-System auch den Aufruf von Makefiles. 
Diese Lösung ist extrem flexibel, sodass Du, fallst Du es noch willst 
:), auch Makefiles gebrauchen kannst.

Ich benutze jetzt seit etwa einem Jahr Kontrollerlab und bin sehr 
überzogen davon (ist mir leicht anzumerken, oder?). Wenn Du also ein 
Bisschen Speicherplatz auf der Platte hast, probier es einmal. Gerade 
eben kam ein neues Release heraus (2008-02-23).

--

Gizmotron

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.