23_24.pdf

(352 KB) Pobierz
Realizacja projektów na 8051 przy pomocy oprogramowania firmy IAR Systems
K U R S
Realizacja projektów
na 8051 przy pomocy
oprogramowania firmy
Kontynuuj¹c opis pakietu
kompilatora C firmy IAR,
prezentujemy jego mo¿liwoci
konfiguracyjne oraz ich
znaczenie w odniesieniu do
realizacji projektów na
procesorach rodziny MCS-51.
Typowa droga tworzenia projektu
w sk³ad którego wchodzi oprogramowa-
nie na wybrany mikroprocesor, przed-
stawiona jest na rys.1 .
Ka¿dy programista systemów opar-
tych na mikrokontrolerach jednouk³ado-
wych doskonale wie, ¿e ka¿dy projekt
jest odmienny, patrz¹c z punktu konfi-
guracji podstawowych elementów takich
jak np. podzia³ pamiêci, sposób rozdzia-
³u i wykorzystania portów I/O. Ró¿ne s¹
tak¿e wymagania co do wielkoci stosu
systemowego.
Wielu, najczêciej mniej dowiad-
czonych, programistów tworzy oprogra-
mowanie w sposób indywidualny, tzn.
bez korzystania z utworzonych wcze-
niej bibliotek procedur standardowych.
Prowadzi to do wyd³u¿enia czasu two-
rzenia projektu i utrudnia analizê kodu
ród³owego, po d³u¿szym czasie, np.
kiedy zajdzie potrzeba modyfikacji pro-
gramu przy tworzeniu kolejnej jego
wersji.
Dzia³anie takie jest w zasadzie do
przyjêcia przy tworzeniu ma³o z³o¿o-
nych aplikacji, czêsto pozwala ono
pocz¹tkuj¹cemu programicie na bar-
dziej swobodne traktowanie ka¿dego
projektu, zgo³a indywidualnie. Sprawa
komplikuje siê przy pisaniu programów
przeznaczonych do bardziej zaawanso-
wanych zastosowañ. Ma to miejsce
szczególnie w przypadku tworzenia sys-
temów wieloprocesorowych, b¹d wy-
magaj¹cych obliczeñ arytmetyki sta³o
i zmiennoprzecinkowej. W takim przy-
padku niezbêdne i uzasadnione jest jak
najszybsze przejcie i oswojenie siê ze
wspomnian¹ hierarchiczn¹ struktur¹
tworzenia programu z wykorzysta-
niem standardowych elementów, tak
czêsto powtarzanych w wielu projek-
tach.
Zintegrowane rodowisko do tworze-
nia aplikacji jest najlepsz¹ metod¹ na
oduczenie siê z³ych nawyków i efektyw-
niejsze tworzenie programów, b¹d
w wersji asemblerowej, b¹d na pozio-
mie jêzyka wy¿szego poziomu.
Pierwszym krokiem podczas tworze-
nia nowego projektu przy u¿yciu pre-
zentowanego pakietu jest zdecydowanie
siê na odpowiedni¹ konfiguracjê syste-
mu. Najogólniej mówi¹c wymaga to
wybrania modelu pamiêci czyli sposobu
adresowania i wykorzystania segmentów
programu, zawartych w nich sta³ych
i zmiennych. W przypadku pamiêci
ROM u¿ytkownik kompilatora definiuje
w zale¿noci od potrzeb:
- tradycyjny (bezpodzia³owy) sposób
wykorzystania pamiêci programu (non-
bankable);
- z podzia³em na banki (bankable);
- segment sta³ych;
- segment zmiennych - inicjuj¹cych
(tzn. takich sta³ych które s¹ warto-
ciami pocz¹tkowymi zmiennych u¿y-
wanych w programie, a fizycznie
umieszczonych w pamiêci RAM).
Tabela 1.
Pozycja pakietu
Konfigurowany element
konfiguracyjnego
(program)
model pamiêci
kompilator, linker
alokacja pamiêci
linker
pamiêæ typu NV-RAM
kompilator-s³owo kluczowe,
linker
rozmiar stosu
linker
(stack size)
podstawowe funkcje I/O
putchar i getchar
modu³y biblioteczne
funkcje printf/scanf
linker
rozmiar sterty
modu³ biblioteczny
(heap size)
opisuj¹cy stertê
sposób inicjalizacji
modu³ CSTARTUP
sprzêtu i pamiêci
Przy wyborze modelu pamiêci RAM
mamy do dyspozycji:
- adresowan¹ wprost pamiêæ wewnêtr-
zna procesora (internal RAM);
- porednio adresowan¹ pamiêæ RAM;
- pracê z zewnêtrzna pamiêci¹ danych
(external memory);
- oraz zewnêtrzn¹ pamiêæ typu NV-
RAM - RAM z podtrzymaniem bate-
ryjnym.
Rys. 1.
Rys. 2.
Elektronika Praktyczna 4/97
23
konfiguracyjnego
(program)
30466785.008.png 30466785.009.png 30466785.010.png 30466785.011.png 30466785.001.png 30466785.002.png
K U R S
Modele Pamiêci
Wszystkie procesory ro-
dziny 8051 pozwalaj¹ na
dwa rodzaje adresowania:
bliski ( short ) i daleki
( long ). Kompilator u¿ywa ich do zwiêk-
szenia szybkoci wykonywania procedur
adresowania w zale¿noci od potrzeb
i mo¿liwoci systemu.
W przypadku kompilatora C IAR pro-
gramista ma dostêp do szeciu modeli
pamiêci. Umo¿liwia to optymalny wy-
bór umiejscowienia lokalnych i global-
nych zmiennych w obszarze pamiêci
ROM ( CODE ) i RAM ( DATA ).
Tab. 2 wyjania praktyczne znacze-
nie poszczególnych modeli pamiêci.
Przy wyborze modelu pamiêci nale¿y
braæ pod uwagê fakt, i¿ mo¿na to zrobiæ
tylko raz, tzn. ¿e wybrany model bêdzie
obowi¹zywa³ tak w modu³ach u¿ytkow-
nika jak i we wszystkich, wykorzysta-
nych modu³ach bibliotecznych. Model
pamiêci musi byæ okrelony zarówno
dla kompilatora jak i linkera. Ustalenie
wybranego typu przy korzystaniu ze
rodowiska Embedded Worbench odby-
wa siê w oknie opcji ( rys.2 ).
Poni¿ej opisane zostanie znaczenie
poszczególnych typów segmentów pa-
miêci oraz ich powi¹zanie ze sprzêtem
opartym na procesorze 8051.
W górnej czêci rysunku widaæ op-
cjonalny bank pamiêci programu. Zasto-
sowanie takiego podzia³u mo¿liwe jest
dziêki kompilatorowi ICC8051 przy wy-
borze modelu pamiêci prze³¹czalnej
(banked-memory). Program umo¿liwia
wykorzystanie maksymalnie 256 ban-
ków. W tym trybie pamiêæ programu
adresowana jest poprzez 16-bitowy ad-
res oraz numer 8-bitowy banku. Ten
ostatni wystawiany jest przez mikropro-
cesor poprzez jeden z jego wolnych
portów (np. P1 dla uk³¹du 8051).
Istotny jest fakt, i¿ w obrêbie wy¿szych
banków (powy¿ej banku 0) znajduje siê
tylko kod g³ówny programu, nie mog¹
znajdowaæ siê tam np. procedury bib-
lioteczne, obs³ugi przerwañ sprzêtowych,
sta³e inicjuj¹ce zmienne, czy sta³e pro-
gramowe. Problem korzystania z prze³¹-
czanych banków pamiêci opiszemy
w kolejnej czêci artyku³u.
S³awomir Surowiñski, AVT
Rys. 3.
W praktyce u¿ytkownik deklaruje
u¿ywane w projekcie typy pamiêci po-
przez nadanie im odpowiednich - roz-
poznawalnych przez kompilator i linker
nazw (np. RCODE, CODE, DATA,
D_IDATA, XDATA i NO_INIT ). Znacze-
nie poszczególnych nazw opiszemy
w dalszej czêci artyku³u.
Rozmiar i po³o¿enie (adres) danego
segmentu oraz jego funkcja s¹ okrelane
w linii parametrów wywo³ania lub
w specjalnie utworzonych zbiorach pa-
rametrów kompilatora C 8051 oraz lin-
kera. W sk³ad takiego pakietu para-
metrów wchodz¹ elementy przedstawio-
ne w tabeli 1 .
Poni¿ej opiszemy poszczególne po-
zycje, tak aby wyjaniæ Czytelnikom ich
znaczenie przy tworzeniu przyk³adowe-
go programu.
CODE memory
Pamiêæ typu CODE rozci¹ga siê
w zakresie adresowania procesora 8051:
0h...0FFFFh. W zale¿noci od konkretnego
typu mikroprocesora, czêæ tej pamiêci
w zakresie 0...16kB mo¿e znajdowaæ we-
wn¹trz samego uk³adu (internal ROM).
Zewnêtrzna pamiêæ programu rozpoczyna
siê pocz¹wszy od koñca wewnêtrznej
pamiêci i mo¿e byæ dostêpna poprzez
taki sam sposób adresowania.
Je¿eli u¿ytkownik decyduje siê na
czêciowe wykorzystanie pe³nego obszaru
adresowego procesora - 64kB, to segment
ten mo¿e byæ umieszczony pod dowol-
nym adresem z zakresu 0h...0FFFFh. Zwyk-
le adres pocz¹tkowy segmentu kodu ma
wartoæ 0000h, ze wzglêdu na skok pod
ten adres procesora, po jego restarcie.
Rys. 3 ilustruje sposób wykorzysta-
nia przez kompilator segmentu CODE ,
w którym zawarto: tablice wektorów
przerwañ, instrukcje inicjuj¹ce, modu³y
biblioteczne (procedury), sta³e inicjuj¹ce
zmienne, sta³e programowe oraz kod
programu u¿ytkownika.
XLINK Command file -
zbiór konfiguracyjny linkera
Pakiet IAR zawiera trzy zbiory pa-
rametrów linkera dla trzech sposobów
wykorzystania pamiêci ROM
nazwa zbioru z komend¹ wywo³ania
bez podzia³u na banki
lnk8051.xcl
(non-banked)
typ 80751
lnk8051a.xcl
z podzia³em na banki
lnk8051b.xcl
(bank-switched)
Tabela 2.
Model
tiny
small
compact
medium
large
banked
opcja wywo³ania
-mt
-ms
-mc
-mm
-ml
-mb
program
DATA
IDATA
XDATA
XDATA
XDATA
XDATA
zm.lokalne
DATA
IDATA
DATA
IDATA
XDATA
XDATA
pamiêæ
nie
nie
tak
tak
tak
tak
zewn. RAM
max. rozmiar
64kB
64kB
64kB
64kB
64kB
>1MB
kodu programu
typowy procesor
8051
8052
8031
8032
8032
8032
biblioteka C
cl8051t
cl8051s
cl8051c
cl8051m
cl8051l
cl8051b
biblioteka C 
cl805ta
cl8051sa
nie
nie
nie
nie
dla typu 80751
dotyczy
dotyczy
dotyczy
dotyczy
24
Elektronika Praktyczna 4/97
30466785.003.png 30466785.004.png 30466785.005.png 30466785.006.png 30466785.007.png
Zgłoś jeśli naruszono regulamin