Inhalt

Schaltplan- und Platinenlayout unter Windows

Programmierung der AVR in C unter Windows

Atmel Studio

Eclipse

Programmieren der AVR in C unter Linux

Eclipse

Erstellen der Projekt-Dokumentation

Erstellen der Sourcecode-Dokumentation

Sourcecode-Management mit Github

Sourcecodedokumentation mit Doxygen

ROS - Robot Operating System

Linux Tools

Windows Tools

Schaltplan- und Platinenlayout unter Windows

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.

Target3001.png

Die Leistungsfähigkeit der von mir verwendeten kostenlosen CONRAD Version von TARGET 3001, entspricht in ihrem Umfang der leistungsstarken kommerziellen Version TARGET 3001! Professional.

Programmierung der AVR in C unter Windows

Atmel Studio

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

AVR Studio 5.png

Pfeil.png

USB- Programmieradapter

Diamex All-AVR.png

Pfeil.png

AVR-µC

AVR.png

AVR Studio 6.2

&

AVR Studio 4.19

All-AVR von Diamex

z.B. ATMega32

Eclipse

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

AVR Studio 5.png

Pfeil.png

USB- Programmieradapter

Diamex All-AVR.png

Pfeil.png

AVR-µC

AVR.png

Eclipse CDT (z.B. Luna 4.4) +

AVR Eclipse Plugin

&

WinAVR & avrdude

All-AVR von Diamex

z.B. ATMega32

Programmieren der AVR in C unter Linux

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

Eclipse

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:

eclipse_avrdude.png

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

eclipse.png

Pfeil.png

USB- Programmieradapter

Diamex All-AVR.png

Pfeil.png

AVR-µC

AVR.png

avr-gcc Basis-Toolchain + avrdude

&

Eclipse CDT + AVR Eclipse Plugin

All-AVR von Diamex

z.B. ATMega32

Serial Terminal zeigt keine COM Ports

http://mcuoneclipse.com/2015/04/20/serial-terminal-view-in-eclipse-luna/

Erstellen der Projekt-Dokumentation

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:

Erstellen der Sourcecode-Dokumentation

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.

Sourcecode-Management mit Github

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.

Sourcecodedokumentation mit Doxygen

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

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

Linux Tools

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

Windows Tools

Tool

Funktion

Autor/ Link

Download

Softwareart

SD Formatter

zum Formatieren von SD Karten

https://www.sdcard.org

SDFormatter.exe

Freeware

WIN32 Disk Imager

zum schreiben/lesen  von Imagedateien (.img) auf/von SD- Karten

http://sourceforge.net

Win32DiskImager-0.9.5-install.exe

Freeware

Filezilla

Client für den Filetransfer via SSH und FTP

https://filezilla-project.org/

Freeware

FreeSSHd

SSH Server für Windows

http://www.freesshd.com/

Freeware

VNC Viewer

Remote Desktop per VNC

http://www.realvnc.com

Freeware

VNC Server

VNC Server

http://www.uvnc.com/

Freeware

Oracle VirtualBox

Opensource VM

https://www.virtualbox.org/

Freeware