Software
Die Software für kalight ist vollständig in C geschrieben. Als
Compiler wird der
AVR GCC unter Linux eingesetzt.
Der Quellcode befindet sich im SVN Repository (read only) unter:
http://svn.embedded-workspace.de/svn/kalight.
Ausserdem gibt es noch ein trac System für das Bugtracking und besseren Visualisierung des SVN Repository.
Übersicht
- Der Quellcode ist mit der GPL-Lizenz freigegeben
- Die Software sollte möglichst modular und testbar sein.
- Aufgrund der guten Tool-Unterstützung (GCC
) wird die erste Version der Software auf jeden Fall in C geschrieben.
Module
Die Software besteht aus folgenden Komponenten :
- main - Initialisierung und Hauptschleife der Applikation
- control - Steuerung der Aktionen. Das Modul hat "die Fäden in der Hand" und bestimmt das Verhalten des Gerätes. Hier werden die Benutzereingaben ausgewertet und Reaktionen daraufhin gesteuert.
- portio - Abstraktion der I/O-Ports, Auswertung der Drehgebersignale (rechts-/links-Drehung, Entprellung)
- gamma - Umrechnung der Helligkeitswerte in PWM-Werte (Gamma-Korrektur)
- pwm - Erzeugung der4 PWM-Signale für Rot, Grün, Blau und Weiß
- timer - Bereitstellung von Timing-Funktionalitäten
Entwicklungsumgebung
Compiler
Der AVR-GCC ist wahrscheinlich in viele Linux-Distributionen (bei mir z.B. Ubuntu) erhältlich. Für Windows gibts
WinAVR. Ansonsten hilft die Seite
http://www.mikrocontroller.net/articles/AVR-GCC gut weiter.
Übersetzen
- Bauen der Software im Verzeichnis software/avr/src mit
make
.
- Programmieren per avrdude mit
make program
Was noch fehlt ist das korrekte setzen der "Fuse-Bits" des AVR-Controller im Makefile
Versionsverwaltung
Verzeichnisstruktur
- docu Teilelisten, Recherchen, Software-Design Grafiken, Fotos
- schematics Schaltpläne und Layout der Leiterplatten
- software
- avr
- project Projekt-Dateien für AVR-Studio und Eclipse
- src Quellcode der Applikation
- tests Unittest der Software
- embunit Unittest-Framework Bibliothek
- stubs Hardware-Simulation für die Unittests
Testing
Dies Thema ist geplant. Es soll
embUnit benutzt werden. Dieses Test-Framework ist ideal für kleine uController und ich habe es in einem früheren Projekt schon einmal verwendet.
Die Module control, gamma, und timer sollen hardwareunabhängig entwickelt werden und können dann einfacher unter Linux durch einen Unittest laufen.
Es steht jedoch im Augenblick (Stand 02/2010) noch keine serielle Schnittstelle auf dem Target zur Verfügung.
Die Testumgebung befindet sich im Verzeichnis software/avr/test (siehe
SoftwareDesign) und ist einfach aufzurufen mit
make
. Der Unittest wird hier allerdings nur auf Linux übersetzt und ausgeführt. Mit embUnit wäre das aber auch ohne große Anstrengung direkt auf dem AVR möglich.
Features von embUnit:
- keine dynamische Speicherallozierung
- benötigt nur C-Compiler (kein C++)
- ist sehr schlank gehalten
- Test-Reports als Liste, als Compiler-ähnliche Ausgabe oder XML
- sehr leicht erweiterbar
- angelehnt an JUnit
- Projekt-Homepage
embUnit wird anscheinend nicht mehr sehr aktiv weiterentwickelt. Trotzdem ein sehr sinnvolles Stück Software!
IDE
AVR-Studio
Ich nutze im Augenblick nur den Simulator davon.
Eclipse
Benutze ich halt, habe die AVR-Umgebung noch nicht besonders integriert.
--
JoergWeinhardt - 25 May 2009