Inhalt
Zum erstellen der elektrischen Schaltungen und Platinenlayouts verwende ich Target3001! unter Windows 7/10. Alternativen wären andere kommerzielle ECAD-Systeme wie z.B. Eagle oder das sehr umfangreiche, aber kostenlose Opensourceprojekt KiCAD.
Die Leistungsfähigkeit der von mir verwendeten kostenlosen CONRAD Version von TARGET 3001, entspricht in ihrem Umfang der leistungsstarken kommerziellen Version TARGET 3001! Professional.
Mit dem ehemaligen AVR- bzw. dem heutigen Atmel-Studio hat man in einer IDE alle Tools, die für die Erstellung des Sourcecodes in C oder Assembler bis hin zum Übertragen des fertig compilierten Programmcodes in den Programmspeicher des Controllers nötig sind vereint.
Die aktuellste Version zum Stand dieser Dokumentation(2014) ist das Atmel Studio 6.2. Da das Atmel Studio aber ab Version 5 das Auslesen der Calibration Bytes eines AVR leider nicht mehr unterstützt, nutze ich für diese Aufgabe unter Windows noch dessen Vorgänger, das AVR Studio 4.
Die Windows AVR- Toolchain mit Atmel Studio
Editor & Compiler | USB- Programmieradapter | AVR-µC | ||
AVR Studio 6.2 & AVR Studio 4.19 | z.B. ATMega32 |
Man kann auch unter Windows mit der freien IDE Eclipse, zusammen mit dem AVR Eclipse Plugin, AVR in C programmieren. Dazu muss eine Version von Eclipse-CDT auf dem PC installiert sein. Dann in Eclipse: Help -> Install New Software -> hier dann in das Feld Work with: die Adresse http://avr-eclipse.sourceforge.net/updatesite eintragen und dann im Auswahlfenster das AVR Eclipse Plugin auswählen und installieren. Damit das AVR- Plugin in Eclipse funktioniert, muss noch eine funktionierende Version der AVR-GCC Toolchain auf dem System installiert sein, dazu WinAVR herunterladen und einfach mithilfe des Windows-Installers installieren.
Die Windows AVR- Toolchain mit Eclipse
Editor & Compiler | USB- Programmieradapter | AVR-µC | ||
Eclipse CDT (z.B. Luna 4.4) + AVR Eclipse Plugin & WinAVR & avrdude | z.B. ATMega32 |
Unter Linux kann die Programmierung der AVR, wie unter Windows auf verschiedenen Wegen erfolgen. Viele bevorzugen dazu schlicht die Konsole und benutzen nebst installierter Basis-Toolchain (avr-ggc, binutils-avr und avr-libc) z.B. nur den Text-Editor Vi oder Nano, zum editieren der Quelltexte, und ein Makefile. Das Übertragen des compilierten Programms in den Programmspeicher des AVR kann dann, ebenfalls per Kommandozeile, mit dem Programm avrdude erfolgen.
AVR-Programmierung mittels CLI
Die im folgenden beschriebene Basis-Toolchain bestehend aus den Paketen gcc-avr, binutils-avr, avr-libc und avrdude reicht also allein schon aus, um AVR unter Linux in C zu programmieren, alles per Kommandozeile in der Konsole:
Programm | Version | Beschreibung |
4.7.2 | Der eigentliche GNU- C Compiler für AVR Mikrocontroller | |
oder
| 2.20.1 | Beinhaltet Assembler, Linker und weitere Hilfsprogramme |
1.8 | Standard C Bibliothek für die Programmierung der Atmel AVR Mikrocontroller, enthält die statischen Bibliotheken sowie die nötigen Headerdateien. | |
5.11.2 | Die wohl am häufigsten verwendete AVR-Programmiersoftware für Linux zum flashen des Programmspeichers mittels gängiger Programmieradapter |
Setzt man auch unter Linux eher auf eine graphische Oberfläche mit komfortablem Editor, kompilieren und übertragen des Hex-Files in den Controller per Mausklick, besteht die Möglichkeit sich ein Open-Source-Softwarepaket, bestehend aus der oben beschriebenen Basis-Toolchain und Eclipse mit dem Plugin AVR-Eclipse zusammenzustellen. Dazu in der installierten Eclipse-CDT IDE Help -> Install New Software -> hier dann in das Feld Work with: die Adresse http://avr-eclipse.sourceforge.net/updatesite eintragen und dann im Auswahlfenster das AVR Eclipse Plugin auswählen und installieren.
Programm | Version | Beschreibung |
4.4 Luna | C/C++ Entwicklungskit basierend auf der Eclipse- Plattform | |
Das Eclipse Plugin bietet Tools und Settings für die Entwicklung von C Programmen für die ATMEL AVR Mikrocontroller mit der Eclipse IDE |
Um AVRDude mit der Eclipse-IDE verwenden zu können muss man unter Project -> Properties -> AVRDude den verwendeten Programmer einrichten, bei mir ist es ein AVR ISP mkII Clon:
Bei der Einrichtung des AVR-Programmieradapters in der Eclipse-IDE bin ich noch über folgenden Fallstrick gestolpert. Der von mir verwendete Programmer ALL-AVR von Diamex, ein AVR ISP mkII Klon, lies sich zwar unter unter Ubuntu/Debian problemlos mit Root-Rechten von der Kommandozeile aus mit AVRDude verwenden, er verweigerte aber, mangels ausreichender Rechte seinen Dienst aus der Eclipse-IDE heraus. Hier kann man sich helfen, indem man eine, so genannte udev-Regel für den verwendeten USB-Programmer anlegt. Zuerst ermittelt man dazu mittels des Kommandozeilenbefehls lsusb, der alle per USB angeschlossenen Geräte auflistet, die nötigen Informationen für den verwendeten Programmer, für den All-AVR sieht die relevante Zeile der Listenausgabe von lsusb bei mir so aus:
Bus 007 Device 003: ID 03eb:2014 Atmel Corp. AVR ISP mkII |
Mit diesen Informationen kann man sich nun eine neue udev-Regel angelegen und speichern. Ich habe dazu die Datei “AVR-Programmer.rules” mit folgendem Inhalt im Verzeichnis “/etc/udev/rules.d” angelegt:
SUBSYSTEM!=”usb_device”,ACTION!=”add”, GOTO=”avrisp_end” #Atmel Corp. AVR ISP mkII ATTR{idVendor}==”03eb”, ATTR{idProduct}==”2104”, MODE=”660”, GROUP=”dialout” LABEL=”avrisp_end” |
Nun kontrollieren, ob der angemeldete User auch zur Gruppe dialout und plugdev gehört (wenn nicht: sudo usermod -a -G dialout user). Nun muss man nur noch mit dem Shell- Kommando “sudo /sbin/udevadm control --reload-rules” die udev-Regeln neu laden und den Programmer einmal ein- und wieder ausstecken, damit alles funktioniert. Diese Vorgehensweise ist prinzipiell für alle Linux- Distributionen die selbe, kann sich im Syntax der udev- Regel aber leicht unterscheiden. Getestet habe ich das ganze so unter Debian Wheezy und Ubuntu 12.04.5. Wobei unter Ubuntu 12.04.5 noch eine kleine Änderung nötig war, da es hier wohl ein Inkompatibilitätsproblem mit dem Paket "libmtp-runtime" gibt. Der Befehl dmesg |tail lieferte die folgender Ausgabe (Den Fehler in der Ausgabe habe ich hier grün markiert):
scheik@scheik-Ubuntu12:~$ dmesg |tail
[ 983.543970] usb 5-2: usbfs: USBDEVFS_CONTROL failed cmd avrdude rqt 128 rq 6 len 255 ret -110
[ 984.543852] usb 5-2: usbfs: USBDEVFS_CONTROL failed cmd avrdude rqt 128 rq 6 len 255 ret -110
[ 1343.263683] usb 5-2: USB disconnect, device number 9
[ 1360.956695] usb 5-2: new full-speed USB device number 10 using uhci_hcd
[ 1361.111414] usb 5-2: New USB device found, idVendor=03eb, idProduct=2104
[ 1361.111420] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Nachdem ich das Paket libmtp-runtime entfernt hatte, war das Problem auch unter Ubuntu 12.04.5 behoben.
Einfachere aber riskantere Variante
Wenn avrdude in Eclipse immer noch nicht laufen will einfach mit sudo ‘chmod a+s /etc/bin/avrdude’ (chmod a+s /etc/bin/avrdude) das SUID-Bit von avrdude für alle User setzen. (Habe ich unter Ubuntu 14.04.1 angewandt, nachdem ich avrdude dort wie oben beschrieben nicht in Eclipse zum laufen bekommen habe. )
Die Linux AVR- Toolchain zur Programmierung der AVR in C zusammengefasst
Editor & Compiler | USB- Programmieradapter | AVR-µC | ||
avr-gcc Basis-Toolchain + avrdude & Eclipse CDT + AVR Eclipse Plugin | z.B. ATMega32 |
Serial Terminal zeigt keine COM Ports
http://mcuoneclipse.com/2015/04/20/serial-terminal-view-in-eclipse-luna/
Zur Erstellung der Projektdokumentation verwende ich hauptsächlich die freie und webbasierte Office-Alternative “Google Docs and Spreadsheets”.
Die erstellten Dokumente werden dann sowohl auf meinem gemieteten Webspace unter www.the-starbearer.de und auf einem eigenen NGINX-Webserver auf der Ubuntu-Workstation gehosted. Ist der eigene Webserver online, ist er unter robotik.ddns.net erreichbar.
Bei der Erstellung der Webseiten kommen folgende Techniken zum Einsatz:
Die Dokumentation der Sourcecodes erfolgt mit Doxygen, einem Software-Dokumentationswerkzeug, das als freie Software unter der GNU General Public License entwickelt wird. In Eclipse steht hierfür das Plugin Eclox zur Verfügung. Das Plugin kann einfach über http://download.gna.org/eclox/update in der Eclipse Pluginverwaltung installiert werden. Doxygen selber muss dazu auf dem Rechner installiert sein. Doxygen ist für Windows und Linux erhältlich.
Alle Sourcecodes (AVR-C-Sourcecodes, ROS Packages, etc.) speichere ich in meinem GitHub Account https://github.com/Scheik. Die Verwaltung der Repositorys erfolgt unter Linux hauptsächlich aus der Kommandozeile heraus.
Um Git auch unter Windows einfach bedienen zu können, verwende ich dazu das Tool von http://git-scm.com/. Dieses stellt unter anderem eine Bash-Shell für Git unter Windows zur Verfügung. Projekte in Eclipse lassen sich aber auch komplett ohne Kommandozeile, mithilfe des Eclipse Git-Plugins verwalten.
Grundlagen zur Verwendung von Git finden sich im Kapitel Die Grundlagen.
Doxygen ist ein freies Software-Dokumentationswerkzeug und steht unter der GNU General Public License zur Verfügung. Durch spezielle Kommentare im Quelltext können beim Programmieren Erläuterungen zu Programmelementen definiert werden, aus denen Doxygen dann eine übersichtliche Dokumentation erstellen kann. In Eclipse gibt es ein Plugin namens eclox, mit dem man Doxygen einfach aus der Eclipse IDE konfigurieren und bedienen kann.
ROS (Robot Operating System) ist als Middleware zu verstehen, es stellt dazu Bibliotheken und Werkzeuge zur Verfügung, um damit Roboteranwendungen zu erstellen. Visualisierungen, Nachrichtenvermittlung, Paketverwaltung und andere Komponenten sind bereits vorhanden und müssen nicht neu ‘erfunden’ werden. Zudem ist ROS unter der Open Source BSD Lizenz veröffentlicht und sein Inhalt und die Anzahl der Anwender wächst stetig.
Mehr Infos und Grundlagen zu ROS findet man im Kapitel Die Grundlagen im Abschnitt 5. ROS Grundlagen
Tool | Funktion | Autor/ Link | Download | Softwareart |
Qt Creator | C++ Programmierung, hauptsächlich für unsere ROS Nodes | Open Source | ||
Sublime Text 2 | Editor, hauptsächlich für Webdesign | |||
Eclipse | AVR C Programmierung, ROS Nodes in C++, Java, etc. | |||
VIM | Als Texteditor für alles mögliche | |||
PyCharm | IDE für Python / Django |
Tool | Funktion | Autor/ Link | Download | Softwareart |
SD Formatter | zum Formatieren von SD Karten | Freeware | ||
WIN32 Disk Imager | zum schreiben/lesen von Imagedateien (.img) auf/von SD- Karten | Freeware | ||
Filezilla | Client für den Filetransfer via SSH und FTP | Freeware | ||
FreeSSHd | SSH Server für Windows | Freeware | ||
VNC Viewer | Remote Desktop per VNC | Freeware | ||
VNC Server | VNC Server | Freeware | ||
Oracle VirtualBox | Opensource VM | Freeware |