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
#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
TARGET = test
W ustawieniach projektu AVR Studio podajemy ścieżkę dostępu do utworzonego makefile'a:
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;
uint8_t testuj (uint8_t tmp) {
return tmp*2;
test.h
uint8_t testuj (uint8_t tmp);