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 smile ) 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
Topic revision: r11 - 28 Feb 2010, JoergWeinhardt
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback