Hauptseite   Module   Alphabetische Liste   Datenstrukturen   Datenstruktur-Elemente   Zusätzliche Informationen  

AVR HAL Bibliothek

20030717

Die AVR HAL Bibliothek stellt eine C API für den Zugang zu standardisierten Hardwarekomponenten, wie LED, LCD, Tasten und Sensoren, bereit. Mit Hilfe der Bibliothek können allgemeingültige Anwendungen für spezifische Boards auf Basis des AVR Mikrocontrollers programmiert werden. Die Bibliothek ist aus der Entwicklung von "AVR-Ctrl Lib", einer speziellen Hardwareabstraktion des AVR-Ctrl Boards, entstanden. Die Bibliothek wurde gezielt nur für die Benutzung in Verbindung mit dem GNU C Compiler und der avr-libc entwickelt. Es existieren einige API Adaptionen zum CodeVision C Compiler.

Die aktuellste Version dieses Dokumments ist immer verfügbar unter:
http://www.li-pro.net/projects/avr
Diese Dokumentation wurde erstellt in Zusammenhang mit der Boardkonfiguration:
avrctrl-8535-8mhz
Zu beachten:
Dieses Dokument unterliegt häufigen Veränderung. Daher kann es falsche oder nicht korrekte Informationen enthalten. Solltest Du solche Stellen finden, dann schicke eine Email mit der Beschreibung und wenn möglich der Berichtigung des Fehlers an linz@li-pro.net. Ebenso sind Emails mit Anregungen und Ergänzungen zum Inhalt willkommen.

Unterstützte Hardware

Die folgenden Hardwarekomponenten werden bis jetzt von dieser Bibliothek unterstützt.
Board:
AVR CPU:
Eingabeeinheiten:
Ausgabeeinheiten:
Für die folgenden Komponenten ist die Unterstützung in Zukunft geplant oder bereits in Arbeit.
Eingabeeinheiten:
Ausgabeeinheiten:
Kommunikationsschnittstellen:
sonstiges:

Konzept und Anwendung

Die Bibliothek wird zum Übersetzungszeitpunkt für eine spezifische AVR Zielhardware (Board) konfiguriert und übersetzt. Hierfür wird die configure Option --enable-board=BOARD benutzt, wobei BOARD einer der folgenden Bezeichner sein kann:

Dieser Bezeichner hat den Aufbau BOARD-MCU-CLOCK-EXT und kann je Übersetzungslauf nur einmal angegeben werden. Im Ergebnis entsteht eine Bibliothek mit dem Bezeichner im Dateinamen, nämlich libavrhal-BOARD-MCU-CLOCK-EXT.a, und ein zugehöriger Konfigurationsheader namens BOARD-MCU-CLOCK-EXT.h in der Interfacedefinition der Bibliothek. Es besteht die Möglichkeit, für jede Boardkonfiguration die dazugehörige AVR HAL Bibliothek hintereinader zu erzeugen und zu installieren. Für das AVR-Ctrl Board hätte das folgendes Aussehen:

  1. ./configure --enable-board=avrctrl-8535-8mhz && make install
    ergibt: $(PREFIX)/avr/include/avrhal/avrctrl-8535-8mhz.h
    und $(PREFIX)/avr/lib/libavrhal-avrctrl-8535-8mhz.a
  2. ./configure --enable-board=avrctrl-8535-8mhz-small && make install
    ergibt: $(PREFIX)/avr/include/avrhal/avrctrl-8535-8mhz-small.h
    und $(PREFIX)/avr/lib/libavrhal-avrctrl-8535-8mhz-small.a
  3. ./configure --enable-board=avrctrl-m163-8mhz & make install
    ergibt: $(PREFIX)/avr/include/avrhal/avrctrl-m163-8mhz.h
    und $(PREFIX)/avr/lib/libavrhal-avrctrl-m163-8mhz.a
  4. ./configure --enable-board=avrctrl-m163-8mhz-small && make install
    ergibt: $(PREFIX)/avr/include/avrhal/avrctrl-m163-8mhz-small.h
    und $(PREFIX)/avr/lib/libavrhal-avrctrl-m163-8mhz-small.a
Die so entstandene Installation der Bibliothek kann nun in eigenen AVR Projekten benutzt werden. Dazu werden die jeweils notwendigen Headerdateien wie bei jeder gewöhnlichen Bibliothek in die C Quellen aufgenommen, z.B. für das LCD und die Tastatur:

#include <avrhal/key.h>
#include <avrhal/lcd.h>

Hiermit wird der Präprozessor automatisch den Configuration Wrapper mit einbinden (avrhal/configure.h). Dieser muß über ein Predefine konfiguriert werden. Nur so kann dieser die richtige Boardkonfiguration bereitstellen (z.B. für --enable-board=avrctrl-8535-8mhz der Inhalt von avrhal/avrctrl-8535-8mhz.h). Das Predefine, in Form eines CPP Makros, muß im eigenen AVR Projekt erfolgen. Im Regelfall wird diese Makrodefinition über die gcc Option -D vorgenommen. Folgende Definitionen sind möglich und stehen in direktem Zusammenhang zu obigen Board Bezeichnern:

Eine somit übersetzte C Quelle muß dann mit dem richtigen Bibliotheksarchiv verlinkt werden:

Einige Beispiel dazu können dieser Dokumentation entnommen werden.


Automatically generated by Doxygen 1.2.18 on 17 Jul 2003.