Podstawy AVR-GCC.pdf

(638 KB) Pobierz
Microsoft Word - Podstawy AVR-GCC.doc
Podstawy AVR-GCC
Zawartość
AVR-GCC - wst ħ p ..................................................................................................................... 4
AVR-GCC - dystrybucja WinAVR............................................................................................ 4
Praca z kompilatorem......................................................................................................... 5
AVR-GCC - kompilator ............................................................................................................. 5
AVR-GCC - kompilacja prostych programów........................................................................... 6
AVR-GCC - program make ........................................................................................................ 7
Plik steruj Ģ cy (makefile) .................................................................................................... 8
AVR-GCC - programowanie układu........................................................................................ 13
Programator AVRprog (AVR910) ................................................................................... 13
Programator STK200 ....................................................................................................... 14
Oprogramowanie .............................................................................................................. 15
AVR-GCC - dost ħ p do zasobów mikrokontrolera ................................................................... 16
Rejestry specjalne............................................................................................................. 16
Najwa Ň niejsze funkcje zawarte w pliku "avr/io.h" .......................................................... 16
AVR-GCC - wej Ļ cie i wyj Ļ cie binarne .................................................................................... 18
Rejestry............................................................................................................................. 19
Praktyczny sposób dost ħ pu do wyprowadze ı układu ...................................................... 20
Podci Ģ ganie wej Ļ cia do logicznej jedynki........................................................................ 20
Programy przykładowe .................................................................................................... 21
AVR-GCC - port szeregowy .................................................................................................... 23
Inicjalizacja ...................................................................................................................... 24
Wysyłanie znaku .............................................................................................................. 25
Odbiór znaku .................................................................................................................... 25
Program przykładowy ...................................................................................................... 26
AVR-GCC - pami ħę SRAM..................................................................................................... 28
Operacje na zmiennych .................................................................................................... 29
Program przykładowy ...................................................................................................... 30
AVR-GCC - pami ħę programu (FLASH) ................................................................................ 32
Najwa Ň niejsze funkcje zawarte w pliku avr/pgmspace.h ................................................. 33
Tworzenie stałych w pami ħ ci programu .......................................................................... 33
Czytanie stałych z pami ħ ci programu .............................................................................. 33
Tworzenie tablic w pami ħ ci programu............................................................................. 33
Czytanie warto Ļ ci z tablic w pami ħ ci programu .............................................................. 33
Tworzenie ła ı cucha znaków ............................................................................................ 33
Czytanie ła ı cucha znaków ............................................................................................... 34
Program przykładowy ...................................................................................................... 34
AVR-GCC - pami ħę EEPROM................................................................................................ 36
Najwa Ň niejsze funkcje zawarte w pliku avr/eeprom.h ..................................................... 36
1
Program przykładowy ...................................................................................................... 36
AVR-GCC - obsługa przerwa ı ................................................................................................ 38
Program przykładowy ...................................................................................................... 39
AVR-GCC - licznik/czasomierz TIMER 0 .............................................................................. 40
Tryb licznika .................................................................................................................... 41
Tryb czasomierza ............................................................................................................. 43
AVR-GCC - licznik/czasomierz TIMER 1 .............................................................................. 45
Tryb licznika .................................................................................................................... 45
Tryb czasomierza ............................................................................................................. 46
Tryb porównywania ......................................................................................................... 47
Tryb przechwytywania ..................................................................................................... 49
Tryb PWM - modulowana szeroko Ļę impulsu ................................................................. 50
AVR-GCC - licznik/czasomierz TIMER 2 .............................................................................. 52
Tryb czasomierza ................................................................................................................. 53
Program przykładowy ...................................................................................................... 53
Tryb porównywania ............................................................................................................. 56
Program przykładowy ...................................................................................................... 56
Program przykładowy ...................................................................................................... 58
AVR-GCC - komparator analogowy........................................................................................ 58
Programy przykładowe .................................................................................................... 59
AVR-GCC - przetwornik analogowo/cyfrowy ........................................................................ 61
Programy przykładowe .................................................................................................... 63
AVR-GCC - układ Watchdog .................................................................................................. 65
Najwa Ň niejsze funkcje zawarte w pliku avr/wdt.h ........................................................... 66
Program przykładowy ...................................................................................................... 66
AVR-GCC - tryby zmniejszonego poboru mocy ..................................................................... 68
Najwa Ň niejsze funkcje zawarte w pliku avr/sleep.h ........................................................ 68
Program przykładowy ...................................................................................................... 68
AVR-GCC - opcje wywoływania narz ħ dzi .............................................................................. 71
AVR-GCC - opis funkcji biblioteki avr-libc............................................................................ 76
Lista plików nagłówkowych ................................................................................................ 76
avr/crc16.h............................................................................................................................ 77
avr/delay.h ............................................................................................................................ 77
avr/eeprom.h......................................................................................................................... 77
avr/ina90.h............................................................................................................................ 78
avr/interrupt.h ....................................................................................................................... 78
avr/io.h.................................................................................................................................. 79
avr/io[MCU].h...................................................................................................................... 79
avr/parity.h ........................................................................................................................... 79
avr/pgmspace.h..................................................................................................................... 79
avr/sfr_defs.h........................................................................................................................ 81
avr/signal.h ........................................................................................................................... 81
avr/sleep.h ............................................................................................................................ 83
2
avr/timer.h ............................................................................................................................ 84
avr/twi.h................................................................................................................................ 84
avr/wdt.h............................................................................................................................... 84
ctype.h .................................................................................................................................. 85
errno.h .................................................................................................................................. 86
inttypes.h .............................................................................................................................. 86
math.h ................................................................................................................................... 87
setjmp.h ................................................................................................................................ 88
stdlib.h .................................................................................................................................. 89
string.h.................................................................................................................................. 90
AVR-GCC - kompilacja Ļ rodowiska ze Ņ ródeł ........................................................................ 91
Pakiet binutils ................................................................................................................... 92
Pakiet gcc-core ................................................................................................................. 92
Pakiet avr-libc .................................................................................................................. 93
3
AVR-GCC - wst ħ p
Kilka lat temu firma Atmel wprowadziła now Ģ rodzin ħ 8 bitowych mikrokontrolerów
zbudowanych w architekturze RISC (o zredukowanej li Ļ cie rozkazów), z których
wi ħ kszo Ļę wykonuje si ħ w pojedynczym takcie zegara, posiadaj Ģ ce bardzo rozbudowane
peryferia i łatwo programowalne w systemie docelowym (pi ħę przewodów ł Ģ cznie z
zasilaniem). Wydawa ę by si ħ mogło, Ň e nowa rodzina mikrokontrolerów z zupełnie now Ģ
niekompatybiln Ģ z innymi rodzinami list Ģ rozkazów nie zostanie dobrze przyj ħ ta na rynku.
Jednak stało si ħ inaczej - dzi ħ ki m Ģ drej polityce firmy Atmel, która udost ħ pnia za darmo
narz ħ dzia uruchomieniowe (np. AVR Studio), wielu entuzjastów mikrokontrolerów z
łatwo Ļ ci Ģ mo Ň e testowa ę swoje własne konstrukcje z tymi układami. Jednak w Ļ ród tych
narz ħ dzi brakowało czego Ļ w dzisiejszych czasach wa Ň nego a mianowicie kompilatora
j ħ zyka wysokiego poziomu - nie zawsze mamy tyle czasu i ch ħ ci, Ň eby pisa ę ka Ň dy
program w asemblerze (ucz Ģ c si ħ nowej listy rozkazów i technik programowania) i pó Ņ niej
długo go testowa ę . W tym momencie przychodzi na my Ļ l zastosowanie j ħ zyka, który byłby
blisko zwi Ģ zany ze sprz ħ tem (dost ħ p do rejestrów, peryferii, pami ħ ci itp.) i jednocze Ļ nie
mo Ň na byłoby w nim pisa ę programy na dosy ę wysokim poziomie abstrakcji (bez
ukierunkowywania si ħ na konkretny sprz ħ t). Tutaj na my Ļ l przychodzi j ħ zyk C. Jest to
najbardziej rozpowszechniony j ħ zyk programowania komputerów. Spotyka si ħ jego
implementacje na najró Ň niejsze maszyny: od prostych mikroprocesorów po pot ħŇ ne
superkomputery. Jednak je Ň eli posiadamy ju Ň darmowe oprogramowanie do uruchamiania
na pewno pomy Ļ limy sobie: czy nie ma równie Ň jakiego Ļ darmowego kompilatora j ħ zyka
C na mikrokontrolery AVR? Okazuje si ħ , Ň e jest i to bardzo dobry. Wywodzi si ħ z rodziny
GCC (GNU Compiler Collection), nazywa si ħ AVR-GCC. Pierwotnie pracował pod
systemami unixowymi jak FreeBSD czy Linux (zreszt Ģ na takich systemach ci Ģ gle s Ģ
rozwijane jego nowe wersje), ale posiadaj Ģ c wersje Ņ ródłowe (bez problemu dost ħ pne w
internecie na zasadzie "otwartego Ņ ródła") ka Ň dy ch ħ tny mo Ň e "przenie Ļę " go pod swój
ulubiony system operacyjny. Jednak przeci ħ tnego u Ň ytkownika najbardziej interesuje
szybki efekt i tu z pomoc Ģ przychodz Ģ tzw. "dystrybucje" zawieraj Ģ ce kompilator z całym
szeregiem narz ħ dzi i bibliotek.
AVR-GCC - dystrybucja WinAVR
Od ko ı ca 2002 roku w internecie dost ħ pna jest "dystrybucja" WinAVR , któr Ģ stworzył
Eric Weddington. Najnowsz Ģ wersj ħ mo Ň na pobra ę ze strony
http://sourceforge.net/project/showfiles.php?group_id=68108 . Jest ona przeznaczona do
pracy pod systemami MS Windows. Instalacja kompilatora odbywa si ħ poprzez
uruchomienie programu instalacyjnego. Program instalacyjny wprowadza niezb ħ dne
modyfikacje do systemu (np. aktualizuje domy Ļ lne Ļ cie Ň ki poszukiwa ı programów).
Wła Ļ nie ta dystrybucja została u Ň yta do przetestowania wszystkich programów tutaj
zawartych.
4
 
Praca z kompilatorem
Poniewa Ň programy wchodz Ģ ce w skład pakietu s Ģ uruchamiane i przyjmuj Ģ argumenty z
linii polece ı , dobrym pomysłem - przynajmniej na pocz Ģ tek b ħ dzie wi ħ c praca z tzw.
"wiersza polece ı ". Uruchamiamy wiersz polece ı systemu operacyjnego. W systemach
Windows mo Ň na to zrobi ę z menu "Start -> Programy -> Wiersz polece ı ".
Uwaga: w systemach bazuj Ģ cych na MS-DOS takich jak Windows 9x "wiersz polece ı "
nazywany jest "Tryb MS-DOS".
Wydajemy polecenie:
avr-gcc -v
W rezultacie powinien si ħ nam wy Ļ wietli ę tekst zawieraj Ģ cy m.in wersj ħ kompilatora:
Reading specs from C:/WinAVR/bin/../lib/gcc/avr/3.4.1/specs
Configured with: ../gcc-3.4.1/configure --prefix=e:/avrdev/install --
build=mingw
32 --host=mingw32 --target=avr --enable-languages=c,c++
Thread model: single
gcc version 3.4.1
Je Ļ li otrzymali Ļ my tekst identyczny lub podobny do powy Ň szego to wyszystko przebiegło
zgodnie z oczekiwaniami i mo Ň emy rozpocz Ģę normaln Ģ prac ħ .
AVR-GCC - kompilator
Na kompilator AVR-GCC składa si ħ wiele programów, s Ģ to:
avr-addr2line - tłumaczy adresy w plikach wynikowych na numery linii w plikach
Ņ ródłowych
avr-ar - tworzy, modyfikuje i wyci Ģ ga dane z archiwów
avr-as - asembler
avr-cpp - preprocessor C
avr-gcc - kompilator
avr-ld - linker (konsolidator)
avr-nm - wy Ļ wietla nazwy symboliczne z plików wynikowych
avr-objcopy - kopiuje i tłumaczy pliki objektowe (mo Ň e "pi ħ knie" deasemblowa ę )
avr-objdump - wy Ļ wietla ró Ň ne informacje z plików objektowych
avr-ranlib - generuje indeks do archiwum
avr-size - wy Ļ wietla list ħ rozmiarów sekcji
avr-strings - wy Ļ wietla ła ı cuchy ("drukowalne" znaki) z pliku
avr-strip - usuwa symbole z plików wynikowych
avr-libc - standardowa biblioteka funkcji dla kompilatora.
Ogólne okre Ļ lenie kompilator obejmuje cały zestaw narz ħ dzi, bibliotek, plików
nagłówkowych, które ł Ģ cznie pozwalaj Ģ przetworzy ę kod programu stworzony w C i
assemblerze do wynikowej postaci binarnego kodu maszynowego ładowanego do pami ħ ci
flash mikrokontrolera. Przetwarzanie takie obejmuje nast ħ puj Ģ ce etapy:
wykonanie na tek Ļ cie programu dyrektyw preprocesora (np. wstawienie plików
(dyrektywy #include ), zast Ģ pienie fragmentów odpowiednimi definicjami (dyrektywy
#define ));
kompilacja modułów C do postaci plików assemblerowych;
5
Zgłoś jeśli naruszono regulamin