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
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.
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
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.
@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.
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ß
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
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.
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.
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
> 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.
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.
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
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.
@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
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.
> 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
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