08 2005 091

background image

91

Elektronika Praktyczna 8/2005

K U R S

Do używanych w projekcie plików

nagłówkowych *.h odwołujemy się

w dwojaki sposób: #include <file.h>

albo #include „file.h”. Różnica leży

tylko w sposobie wyszukiwania przez

kompilator na dysku pliku o podanej

nazwie. Przy odwołaniu <> w pierw-

szej kolejności sprawdzane są wła-

sne, systemowe zasoby plików avr–gcc

(a więc foldery avr\include i lib\gcc\

avr\wersja\include), do których nie

musimy podawać ścieżki. Dołącza-

my więc takim zapisem wszystkie

potrzebne w projekcie pliki avr–libc.

Konieczne jest jednak zaznaczenie

wejścia do ewentualnych subfolde-

rów a więc np. #include <avr/io.h>.

Użycie uniksowego slasha “/” zamiast

windowsowego backslasha “\” nie jest

błędem: kompilator interpretuje go po-

prawnie natomiast znacznie ułatwione

jest przeniesienie projektu do środowi-

ska uniksowego (jak Linuks).

Forma „” uruchamia wyszukiwanie

pliku od bieżącego folderu projektu

oraz dodatkowych podanych kompila-

torowi lokalizacji. W ten sposób powo-

łujemy się więc na własne pomocnicze

pliki nagłówkowe projektu (jak dane.h

w naszym przykładzie). Dodatkowe

ścieżki przeszukiwania wprowadzamy

przy pomocy opcji –Iścieżka. Środowi-

sko AvrSide wspiera jedną pomocniczą

lokalizację, którą wpisujemy w oknie

edycyjnym dialogu Konfiguracja pro-

jektu > Ścieżki

. Zazwyczaj będzie to

folder [\AvrSide\Myinc] przewidziany na

ogólne własne pliki nagłówkowe z ulu-

bionymi typami, definicjami, pomoc-

niczymi makrami używanymi w wie-

lu projektach. Zauważmy jednak, że

narzucenie konkretnej pełnej ścieżki

dostępu może sprawiać kłopoty przy

przenoszeniu projektu na inną maszy-

nę z inaczej zainstalowanym AvrSide

– po prostu takiej ścieżki może nie

być co spowoduje błędy. Dla takich

przenośnych zastosowań przewidziałem

dodatkowe subfoldery foldera projek-

tu [\lib] oraz [\inc]. Posługują się one

lokalizacją względną nie utrudniającą

przenoszenia. Utworzenie tych subfol-

derów jest dokonywane samoczynnie

przy zapisaniu projektu z ustawioną

opcją Konfiguracja projektu > Ścieżki

W tej części kursu przedstawiamy zasady korzystania z plików

nagłówkowych, które są jednym z najbardziej podstawowych

narzędzi ułatwiających pracę z kompilatorem AVR–GCC.

> Używaj lokalnych podkatalogów lib/

inc

. Automatycznie jest także przy wy-

wołaniu kompilatora dodawana ścieżka

do subfoldera [\inc].

Z lokalizacją własnych plików na-

główkowych związana jest jeszcze jed-

na opcja AvrSide: Konfiguracja projektu

> AvrSide > Szukaj deklaracji w folde-

rach inc

. Jest ona połączona z mecha-

nizmem podpowiedzi deklaracji symbo-

lu (

F1). Przeszukanie plików w poszuki-

waniu deklaracji odbywa się domyślnie

wewnątrz foldera projektu. Zaznaczenie

opcji powoduje również przeszukanie

plików w dodatkowych lokalizacjach –

jest to bardziej uniwersalne ale może

spowalniać pracę AvrSide w przypadku

nagromadzenia dużej liczby plików.

Następne ułatwienie w pracy z pli-

kami nagłówkowymi dotyczy zależności.

Mianem tym określamy w tym przypad-

ku ustalenie, w których plikach źródło-

wych *.c oraz *.s jest używany dany

plik nagłówkowy. Zmiana w takim pliku

nagłówkowym pociąga za sobą oczywi-

ście zmiany w tych źródłach co wymaga

ich ponownego przekompilowania. Jed-

nak bez samoczynnego wsparcia musie-

libyśmy albo zawsze pamiętać, których

plików mogą dotyczyć zmiany albo za-

wsze po korekcie dowolnego nagłów-

ka ponownie kompilować cały projekt

(Build), co przy rozbudowanych pro-

gramach może znacznie wydłużać całą

operację. Obsługa zależności w AvrSide

jest dosyć uproszczona: polega na prze-

szukaniu pierwszych kilkunastu wierszy

kodu każdego źródła .c i .s i utworzeniu

tabeli zależności na podstawie znale-

zionych dyrektyw dołączenia (#inclu-

de

) wszelkich otwartych w projekcie

(obecnych na zakładkach edytora) pli-

ków nagłówkowych *.h. Tabela ta jest

później sprawdzana przy zapisywaniu

zmian w pliku nagłówkowym – na tej

podstawie są oznaczane jako zmienione

(podkreślenie nazwy pliku na zakładce

edytora) i włączane do polecenia Make

odpowiednie moduły źródłowe.

Dla przyśpieszenia działania środo-

UWAGA!

Środowisko IDE dla AVR-GCC opracowane

przez autora artykułu można pobrać ze

strony http://avrside.ep.com.pl.

AVR–GCC: kompilator C

mikrokontrolerów AVR,

część 6

wiska aktualizacja tabeli zależności nie

odbywa się samoczynnie; po wprowa-

dzeniu w projekcie korekt takich jak

dodanie lub usunięcie pliku czy też

dopisanie (usunięcie) dołączenia na-

główka w kodzie źródłowym, należy

użyć polecenia menu Projekt > Aktu-

alizuj zależności

. Nie musimy jednak

tego każdorazowo robić przy ładowaniu

projektu – w tym przypadku utworze-

nie tabeli jest automatyczne. (Powyż-

sze polecenie jest także przydatne dla

zresetowania tabeli w razie wystąpienia

błędu, którego niestety nie udało mi

się dotychczas zlokalizować, a który po-

woduje ciągłe oznaczenie plików źró-

dłowych jako zmienione pomimo ich

przekompilowania).

Należy też pamiętać, że powyż-

sza obsługa jest jednopoziomowa,

nie wspiera zagnieżdżonych dołączeń

(w nagłówku 1.h dołączamy 2.h a z ko-

lei 1.h jest dołączony do 3.c – nasza

uproszczona obsługa wykryje zmianę

w 1.h ale w 2.h juz nie, konieczne

jest zastosowanie komendy Build). Jak

widać nie może się więc ona równać

z rozbudowanymi narzędziami kontroli

zależności używanymi w plikach make-

file

. Jednak dość dobrze zdaje egzamin

w przeciętnej wielkości amatorskich

projektach, dla których przede wszyst-

kim AvrSide powstało.

Często zbiór funkcji obsługujących

konkretne zadanie (np. obsługę urzą-

dzenia peryferyjnego) lokujemy w od-

dzielnym module źródłowym xx.c a do-

stęp do niego realizujemy poprzez sko-

jarzony plik nagłówkowy o takiej samej

nazwie xx.h. AvrSide oferuje dodatkowe

skróty klawiszowe (

SHIFT+F6 albo AL-

T+UP) do szybkiego przełączania po-

między tak nazwaną parą plików.

Jerzy Szczesiul, EP

jerzy.szczesiul@ep.com.pl


Wyszukiwarka

Podobne podstrony:
08 2005 031 036
1568204 0700SRM1159 (08 2005) UK EN
1566043 0620SRM1115 (08 2005) UK EN
08 2005 094 095
910091 1900SRM0097 (08 2005) UK EN
08 2005 088 090
08 2005 111 113
08 2005 010 014
08 2005 017 018
1565789 1800SRM1117 (08 2005) UK EN
08 2005 083 085
08 2005 052 057
08 2005 092 093
08 2005 019 023
1569718 4000SRM1160 (08 2005) UK EN
08 2005 043 047
08 2005 115 118
08 2005 027 030

więcej podobnych podstron