Tworzenie bibliotek w środowisku AVR-GCC

Procedury często wykorzystywane podczas tworzenia oprogramowania dla mikrokontrolerów mogą być dołączane do projektu w postaci kodu źródłowego, ale także w postaci skompilowanych bibliotek.

Skompilowane pliki źródłowe oraz biblioteki nazywane modułami są dalej łączone w jeden zbiór przez linker. O ile podczas kompilacji pliku źródłowego wykorzystywane są tylko te funkcje do których są odwołania to w przypadku bibliotek linker dołącza zawsze całą zawartość, nawet funkcje nieużywane.

W pakiecie WinAVR znajduje się program do tworzenia bibliotek avr-ar. Bibliotekarz tworzy archiwum - bibliotekę która może zawierać jeden lub więcej modułów. Nazwa biblioteki powinna być utworzona według wzorca libname.a. Prefix lib zapisany małymi literami poprzedza właściwą nazwę biblioteki name, plik zapisywany jest z rozszerzeniem .a (archiwum).

Biblioteka może być stworzona w edytorze AVR Studio, potrzebny będzie w tym celu odpowiedni plik makefile. Może on być wygenerowany przy pomocy narzędzia MFile dostępnego w pakiecie WinAVR. Wygenerowany plik makefile wymaga edycji, należy zmienić ustawienia:

# Change the build target to build a HEX file or a library.
#build: elf hex eep lss sym
build: lib

Aby utworzyć bibliotekę o nazwie libtest.a makefile powinien zawierać zapis:

# Target file name (without extension).
TARGET = test

W ustawieniach projektu AVR Studio podajemy ścieżkę dostępu do utworzonego makefile'a:

AVR Studio makefile
To jest przykładową

Następnie należy dodać do projektu plik źródłowy test.c, który będzie zawierać przykładową funkcję. Po kompilacji powinien zostać wygenerowany plik libtest.a. Do otrzymanej biblioteki należy jeszcze utworzyć plik nagłówkowy z prototypami funkcji w tym przypadku będzie to libtest.h.

test.c

#include <avr\io.h>
uint8_t testuj (uint8_t tmp) {
return tmp*2;

test.h

uint8_t testuj (uint8_t tmp);

Literatura:
http://www.nongnu.org/avr-libc/user-manual/library.html