{"id":721,"date":"2009-07-18T20:08:10","date_gmt":"2009-07-18T18:08:10","guid":{"rendered":"http:\/\/www.final-memory.org\/?p=721"},"modified":"2009-09-17T19:13:26","modified_gmt":"2009-09-17T17:13:26","slug":"einstieg-in-avr-mikrocontroller-die-toolchain","status":"publish","type":"post","link":"https:\/\/www.final-memory.org\/?p=721","title":{"rendered":"Einstieg in AVR Mikrocontroller &#8211; die Toolchain"},"content":{"rendered":"<figure style=\"width: 160px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" decoding=\"async\" title=\"AVR logo\" src=\"http:\/\/final-memory.org\/images\/AVR_blue.png\" alt=\"AVR logo\" width=\"160\" height=\"160\" \/><figcaption class=\"wp-caption-text\">AVR logo<\/figcaption><\/figure>\n<p>Im Laufe der Woche habe ich lange nachgedacht und beschlossen, mich prinzipiell mit weiteren Mikrocontrollern zu Fortbildungszwecken zu besch\u00e4ftigen. Bislang habe ich praktisch einiges mit 8051er gemacht, aber modernere Architekturen sind doch sehr einladend. Vorallem m\u00f6chte ich mal Erfahrung mit echten RISC-Architekturen sammeln.<\/p>\n<p>L\u00e4ngere Zeit habe ich damit gelieb\u00e4ugelt, ein Board mit ARM zu kaufen. Leider sind ARM Prozessoren nicht so 100% hobbytauglich, da sie in aller Regel nur 3Volt Ein- und Ausg\u00e4nge haben. Ferner kommen sie nur in SMD-Technik daher, was das L\u00f6ten f\u00fcr Grobmotoriker wie mich extrem verkompliziert, wenn nicht sogar unm\u00f6glich macht. Ferner ist mein Interesse sehr Lowlevel, was I\/O an geht. Ethernet und CAN-Anwendungen reizen mich im Moment auch nicht. Da das Lernziel sowieso Praxis mit Assemblercodierung f\u00fcr RISC-Architekturen ist, ist ein Controller, auf dem ein Linux l\u00e4uft, nicht so 100% das was ich suche.<\/p>\n<p>Schlie\u00dflich habe ich mich dann doch f\u00fcr beliebte Bastleralternative entschieden und werde mich in Zukunft ein wenig mit AVRs von Atmel besch\u00e4ftigen. AVRs passen zur Not ins Steckbrett, sind extrem tolerant, was die \u00e4u\u00dfere Beschaltung angeht, haben einen sch\u00f6nen RISC-Kern und sind untereinander durchaus kompatibel.<\/p>\n<p>Au\u00dferdem gibt es Support, \u00a0eine gute Community und last but not least erschwingliche Starterkits. Ich plane mir demn\u00e4chst ein <a href=\"http:\/\/www.atmel.com\/dyn\/Products\/tools_card.asp?tool_id=2735\" target=\"_blank\">STK500<\/a> zuzulegen. Das wird supported, kann auch mit freien Tools unter Linux angesteuert werden (Die Programmiersoftware avrdude behauptet das jedenfalls von sich) und es ist gleichzeitig ein erstes Evalboard, mit dem man die ersten Schritte ohne Bau von Hardware machen kann.<\/p>\n<p>Letzteres ist f\u00fcr mich recht wichtig, da ich zur Zeit keinerlei L\u00f6t- und Bastelausr\u00fcstung hier habe.<\/p>\n<p>F\u00fcr den Anfang habe \u00a0ich mir erstmal unter Linux die n\u00f6tigen Tools installiert, darunter Assembler, Linker, C Compiler und die spezielle C Library f\u00fcr AVRs. Ich habe mich an diese Anleitung hier zur <a href=\"http:\/\/www.nongnu.org\/avr-libc\/user-manual\/install_tools.html\" target=\"_blank\">Installation der avr-libc<\/a> gehalten. Es hat soweit geklappt. Mangels echtem AVR konnte ich aber bislang noch kein Programm flashen oder testen. Aber \u00fcbersetzen und HEX-File erzeugen funktioniert soweit ganz gut.<\/p>\n<p>Nebenbei habe ich einiges \u00fcber die GNU Toolchain gelernt, unteranderem da\u00df der GNU Assembler architekturunabh\u00e4ngig relokatiblen Objektcode erzeugt und erst der Linker legt die genaue Position im Speicher fest. Fernen spuckt er grunds\u00e4tzlich erstmal Bin\u00e4rdateien im ELF Format aus. Aber mit dem objcopy Programm kann man dann Intel HEX erzeugen. Wenn man andere Toolchains gew\u00f6hnt ist, ist das nat\u00fcrlich etwas umst\u00e4ndlich. Andererseits ist es aber auch recht flexibel, und wenn es automatisch gemanaged wird (s.u.), will man ja nicht viel mehr.<\/p>\n<p><strong>Hinweis:<\/strong> Zum Selberkompilieren der Toolchain sind tempor\u00e4r ca 3GB freier Plattenplatz erforderlich. Die GCC Sourcen sind ein ziemlicher Moloch w\u00e4hrend der \u00dcbersetzung.<\/p>\n<p>Da ich in letzter Zeit sowieso viel mit <a href=\"http:\/\/www.eclipse.org\/\" target=\"_blank\">Eclipse<\/a> und <a href=\"http:\/\/www.eclipse.org\/cdt\/\" target=\"_blank\">CDT<\/a> gearbeitet habe, habe ich auch gleich das <a href=\"http:\/\/avr-eclipse.sourceforge.net\/\" target=\"_blank\">AVR Plugin<\/a> dazu installiert. Damit kann man gleich ein Codeprojekt f\u00fcr die AVR Toolchain aufsetzen und alles wird halbwegs sinnvoll konfiguriert. Das gef\u00e4llt mir sehr gut. Man muss seine Makefiles nicht selber schreiben und man kann direkt aus Eclipse heraus avrdude konfigurieren und aufrufen. Im Prinzip stellt man nur den gew\u00fcnschten Prozessor und die Taktrate ein und kann dann fr\u00f6hlich loscoden.<\/p>\n<p>Mehr wenn ich echte Hardware habe!<\/p>\n<div id=\"facebook_like\"><iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=https%3A%2F%2Fwww.final-memory.org%2F%3Fp%3D721&amp;layout=standard&amp;show_faces=true&amp;width=500&amp;action=like&amp;font=segoe+ui&amp;colorscheme=light&amp;height=80\" scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:500px; height:80px;\" allowTransparency=\"true\"><\/iframe><\/div>","protected":false},"excerpt":{"rendered":"<p>Im Laufe der Woche habe ich lange nachgedacht und beschlossen, mich prinzipiell mit weiteren Mikrocontrollern zu Fortbildungszwecken zu besch\u00e4ftigen. Bislang habe ich praktisch einiges mit 8051er gemacht, aber modernere Architekturen sind doch sehr einladend. Vorallem m\u00f6chte ich mal Erfahrung mit echten RISC-Architekturen sammeln. L\u00e4ngere Zeit habe ich damit gelieb\u00e4ugelt, ein Board mit ARM zu kaufen. &hellip; <a href=\"https:\/\/www.final-memory.org\/?p=721\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Einstieg in AVR Mikrocontroller &#8211; die Toolchain&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57,7,35],"tags":[],"class_list":["post-721","post","type-post","status-publish","format-standard","hentry","category-avr","category-elektronik","category-mikrocontroller"],"_links":{"self":[{"href":"https:\/\/www.final-memory.org\/index.php?rest_route=\/wp\/v2\/posts\/721","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.final-memory.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.final-memory.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.final-memory.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.final-memory.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=721"}],"version-history":[{"count":3,"href":"https:\/\/www.final-memory.org\/index.php?rest_route=\/wp\/v2\/posts\/721\/revisions"}],"predecessor-version":[{"id":846,"href":"https:\/\/www.final-memory.org\/index.php?rest_route=\/wp\/v2\/posts\/721\/revisions\/846"}],"wp:attachment":[{"href":"https:\/\/www.final-memory.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=721"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.final-memory.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=721"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.final-memory.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}