You are on page 1of 4

K U R S

Mikrokontrolery
z rdzeniem ARM, część 1
Wymienione mikrokontrolery
ARM zawierają w sobie cały 32–bi-
towy system mikroprocesorowy z pa-
mięcią Flash oraz RAM, zwalniający
konstruktora od prowadzenia skom-
plikowanych połączeń magistralo-
wych. Ceny mikrokontrolerów są
bardzo zachęcające, np. mikrokon-
troler LPC2131 (32 kB Flash, 8 kB
RAM) kosztuje mniej więcej tyle
samo, co ATmega16. Do dyspozycji
mamy bardzo dużą moc obliczenio-
wą, jaką daje 32–bitowy rdzeń tak- W większości obecnie prezentowanych (nie tylko w EP) projektów
towany z częstotliwością do 60 MHz. królują mikrokontrolery 8–bitowe. Dawniej była to nieśmiertelna
Mikrokontrolery LPC21xx są wypo- rodzina 8051, obecnie panuje moda na AVR–y. Dotychczas
sażone w jednostkę centralną AR- użycie 32–bitowych mikrokontrolerów pozostawało w sferze
M7TDMI–S opracowaną w firmie marzeń przeciętnego konstruktora ze względu na wysoką cenę,
ARM. Rdzeń ARM7TDMI–S staje się
skomplikowane rozwiązania układowe wymagające prowadzenia
standardem wśród mikrokontrolerów
32–bitowych, podobnie jak rdzeń na płytkach 32–bitowych magistral systemowych oraz konieczność
8051 był i jest standardem wśród stosowania dodatkowych układów zewnętrznych. Sytuacja uległa
mikrokontrolerów 8–bitowych. diametralnej zmianie w momencie pojawienia się na rynku
Poznając architekturę LPC21xx mikrokontrolerów z rdzeniem ARM i wbudowaną pamięcią Flash,
możemy w łatwy sposób przejść do najpierw firmy Philips LPC21xx i wkrótce później Atmela AT91SAM7,
programowania mikrokontrolerów ATM – rodzina STR700 i wielu innych producentów.
innych producentów opartych na
rdzeniu ARM7TDMI–S, np. Atmel Rdzeń ARM7TDMI wyzwanie ponieważ rok wcześniej
albo STM, a gdy moc obliczeniowa Sercem mikrokontrolerów rodzi- zespół ten zajmował się projektowa-
stanie się niewystarczająca możemy ny LPC21xx jest jednostka centralna niem mikroprocesorów 8–bitowych
pomyśleć o architekturze ARM9 albo ARM7TDMI–S. Jest ona częścią du- z pamięcią programu o pojemności
ARM11. Gdy do dyspozycji mamy żej rodziny 32–bitowych mikropro- 32 kB. Pierwsza wersja testowa mi-
trochę większy mikrokontroler oparty cesorów ARM ogólnego przeznacze- kroprocesora ujrzała światło dzienne
na rdzeniu ARM wyposażony w jed- nia, które charakteryzują się bardzo w 1985 roku, a już rok później ukoń-
nostkę MMU (zarządzania pamięcią), małym poborem mocy, oraz prostotą czono wersję produkcyjną ARM2,
możemy uruchamiać systemy opera- budowy. Historia powstania mikro- który był 32–bitowym mikroproceso-
cyjne, takie jak Linux czy Windows procesorów ARM wywodzi się z lat rem z 26–bitową przestrzenią adreso-
CE. Programowanie mikrokontrole- 80–tych, kiedy to grupa inżynierów wą. W późnych latach 80–tych firma
rów LPC21xx nie jest dużo bardziej pod kierownictwem Rogera Wilsona Acorn rozpoczęła współpracę z firmą
skomplikowane od programowania i Steave`a Ferbera, pracująca dla fir- Apple w celu opracowania udoskona-
AVR–ów, a do dyspozycji mamy ana- my Acorn, rozpoczęła projektowanie lonego rdzenia ARM. W tym samym
logiczne narzędzia, takie jak darmo- rdzenia będącego rozwinięciem znane- czasie z firmy Acorn wydzieliła się
wy kompilator gcc (arm–gcc), pozwa- go mikroprocesora 6502 firmy MOS firma ARM Ltd. Efektem współpracy
lający na pisanie programów w ję- Technology. Firma Acorn budowała było powstanie mikroprocesora ARM6
zyku C oraz C++. Programowanie komputery w oparciu o ten procesor, zastosowanego w palmtopie Apple
pamięci Flash mikrokontrolera może więc celem było opracowanie nowe- Newton. Obecnie firma ARM zajmuje
odbywać się w docelowym systemie go, wydajniejszego procesora, który się sprzedażą licencji na aplikowanie
poprzez port RS232 i oprogramowa- miał się charakteryzować podobną rdzeni rodziny ARM.
nie LPC2000 Flash Utility. architekturą do 6502. Było to duże
W krainie Flashy ISP
W artykule skupiamy się na mikrokontrolerach
z rodziny LPC21xx, ale przedstawione
informacje odnoszą się także do innych
rodzin mikrokontrolerów z rdzeniem ARM,
jak np.: TMS470, ADuC7000, STR700
(i pochodne), AT91SAM7 (i pochodne),
a także wielu innych wyposażonych w rdzeń
ARM7TDMI–S.
Rys. 1. Sposób wykonywania rozkazów przez procesory z rdzeniem ARM

90 Elektronika Praktyczna 12/2005


K U R S

Rys. 2. Sposób dekodowania rozkazów THUMB

Tradycyjne mikrokontrolery (bu- ładuj daną z pamięci do rejestru,


dowane w architekturze CISC) po- wykonaj operację na rejestrze, prze-
siadają rozbudowaną listę rozka- ślij daną powrotem do pamięci.
zów, których wykonanie zajmuje Do dyspozycji mamy także więk-
wiele cykli maszynowych. Badania szą liczbę rejestrów, które są reje-
wykazały, że tylko niewielka część strami ogólnego przeznaczenia i nie
r o z ka z ó w j e s t w y ko r z y s t y w a n a mają ściśle określonych funkcji. In-
w przeciętnym programie, a reszta strukcję przetwarzane są w potoku
pozostaje nieużywana. Długa lista dzięki czemu większość instrukcji
rozkazów powoduje skomplikowanie wykonywana jest w jednym cyklu
budowy dekodera instrukcji, oraz zegarowym. Dzięki swojej prostocie
komplikację budowy rdzenia. Reje- procesory RISC posiadają bardzo
stry procesora CISC mają zazwyczaj prostą budowę, dzięki czemu (za-
ściśle określone przeznaczenie, np. zwyczaj) mogą pracować szybciej
akumulator służący do wykonywa- niż ich odpowiedniki CISC. Krótka
nia operacji arytmetycznych i logicz- lista instrukcji upraszcza ponadto
nych, rejestry indeksowe służące do tworzenie kompilatorów oraz zapew-
adresowania pamięci itp. W progra- nia lepszą optymalizację kodu.
mie musi więc znajdować się dużo ARM7TDMI–S jest 32–bitowym
przesłań rejestr – rejestr, ponieważ rdzeniem mikroprocesora bazującym
argumentami rozkazów mogą być na architekturze RISC. Wyposażono
tylko określone rejestry. W proce- go w 31 równouprawnionych, 32–bi-
sorach CISC do dyspozycji mamy towych rejestrów, na których można
zazwyczaj niewiele rejestrów (np. wykonywać wszystkie operacje z li-
8086 posiada 8 rejestrów), dlate- sty rozkazów. Jeden z tych rejestrów
go na liście rozkazów znajduje się (R15) jest licznikiem rozkazów więc
wiele instrukcji potrafiących wyko- procesor potrafi zaadresować do
nywać operację bezpośrednio na pa- 4 GB pamięci.
mięci. Biorąc pod uwagę wszystkie Przetwarzanie instrukcji odbywa
wady architektury CISC oraz to, że się z zastosowaniem trójpoziomo-
tylko niewielka liczba instrukcji jest wego potoku. CPU w tym samym
wykorzystywana w typowych progra- czasie, gdy wykonuje dany rozkaz,
mach opracowano architekturę RISC dekoduje już kolejny rozkaz i dodat-
(Reduced Instruction Set Computers). kowo w tym samym czasie pobiera
Mikroprocesory RISC potrafią wyko- jeszcze kolejny rozkaz. Sposób prze-
nywać najczęściej kilkadziesiąt roz- twarzania rozkazów przez procesor
kazów, podczas, gdy np. popularny ARM przedstawiono na rys. 1.
mikrokontroler 8051 ma ich 111. Efektem równoległego przetwa-
Posiadają zdecydowanie mniej try- rzania trzech rozkazów w różnych
bów adresowania dzięki czemu kody fazach jest wykonywanie większości
rozkazów są dużo prostsze. Wszyst- instrukcji w jednym cyklu zegaro-
kie operacje wykonywane są na re- wym. Potok działa najefektywniej,
jestrach. Brak jest rozkazów operu- gdy program wykonywany jest se-
jących bezpośrednio na pamięci. Je- kwencyjnie i nie występują rozga-
dynymi rozkazami mającymi dostęp łęzienia. W przypadku wystąpienia
do niej to rozkazy LOAD (załaduj rozgałęzienia, potok musi zostać
zawartość pamięci do rejestru) oraz oczyszczony z niepotrzebnych in-
STORE (zapisz zawartość rejestru strukcji występujących za rozgałę-
do pamięci) Wykonanie operacji na zieniem i wypełniony nowymi in-
danych znajdujących się w pamięci strukcjami, co powoduje wydłużenie
odbywa się według schematu: za- czasu wykonania instrukcji. W od-
różnieniu od innych powszechnie
Jak to jest z endianami znanych mikroprocesorów, w ARM–
Big–endian to sposób zapisu wielobajtowych –ach prawie każda instrukcja może
danych, w którym najbardziej znaczący bajt być wykonywana warunkowo, w za-
zapisuje się pod najniższym adresem w pamięci. leżności od stanu flag zmienionych
W formacie little–endian najmniej znaczący bajt przez poprzednią instrukcję przetwa-
zapisuje się pod najniższym adresem.
rzającą dane. Znakomicie ułatwia to

Elektronika Praktyczna 12/2005 91


K U R S

Tab. 1. Identyfikatory rejestrów kod 32–bitowy zapewnia większą że wprowadza się kilka dodatkowych
prywatnych w trybach ochrony wydajność podczas działaniu na da- trybów pracy mikroprocesora. W każ-
Tryb ochrony Identyfikator
nych 32–bitowych oraz lepsze zarzą- dym z tych trybów wydziela się okre-
User Usr
dzanie dużymi obszarami pamięci. ślone zasoby i obszar pamięci mikro-
Fast Interrupt Fiq
Normalnie mikroprocesory 32–bitowe procesora, do których program ma do-
Interrupt Irq
pracujące w trybie 16–bitowym, po- stęp. Najczęściej do dyspozycji mamy
Supervisor Svc
Abort Abt
sługują się 16–bitowymi instrukcjami dwie kategorie trybów ochrony:
System Sys
oraz rejestrami o długości 16 bitów. – tryb użytkownika (USER MODE),
Undefined Und Tryb THUMB zapewnia natomiast – tryb uprzywilejowany (PRIVILED-
16 bitową listę instrukcji, operują- GED MODE).
tworzenie kodu bez rozgałęzień, za- cą na 32–bitowych danych i 32–bi- W trybie użytkownika, program
pobiegając stracie czasu na ponow- towej przestrzeni adresowej. Zbiór ma dostęp tylko do ograniczonych
ne zapełnienie potoku. Licznik roz- instrukcji THUMB jest podzbiorem zasobów i instrukcji, których zmiana
kazów PC (R15) wskazuje na osiem listy instrukcji ARM i ma on swój lub wykonanie nie jest krytyczne dla
bajtów w przód w stosunku do bie- odpowiednik w 32–bitowej liście pracy reszty systemu. Przykładowo
żącej instrukcji, czyli na instrukcje instrukcji ARM. Podczas wykona- brak jest możliwości zmiany usta-
aktualnie pobieraną. Należy o tym nia programu 16–bitowe instrukcje wień przerwań, nie jest też możli-
pamiętać przy adresowaniu względ- THUMB są dekodowane „w locie” we programowe wyjście z tego trybu
nym odnoszącym się do licznika do pełnych, 32–bitowych instrukcji ochrony. Blokowane są także niedo-
rozkazów. Rdzeń ARM7TDMI–S po- ARM bez istotnej utraty wydajności zwolone instrukcje – np. w proceso-
siada wspólną przestrzeń adreso- wykonania. Na rys. 2 przedstawiono rach 386 in, out, których wykonanie
wą dla rozkazów i danych. Dostęp sposób, w jaki rdzeń dekoduje i wy- może zaburzyć pracę systemu.
do pamięci możliwy jest poprzez konuje rozkazy THUMB. W trybie uprzywilejowanym pro-
instrukcję ładowania, zapisu oraz Objętościowo kod THUMB zaj- gram natomiast ma dostęp do wszyst-
zamiany. Pamięć może być adreso- muje 65% objętości kodu ARM kich zasobów i całego obszaru pa-
wana w postaci 8, 16 lub 32 słów i jest wolniejszy o około 40% od mięci, tak więc można wykonywać
danych, przy czym procesor zapisu- kodu ARM. Podczas działania pro- dowolne operacje na wszystkich za-
je dane w porządku big–endian lub gramu można łatwo przełączać try- sobach systemu. Jest to tryb ochrony
little–endian. by pracy, np. część programu może wykorzystywany przez oprogramowa-
W przypadku mikrokontrolerów być napisana w trybie THUMB, na- nie systemowe (system operacyjny).
LPC21xx dane są przechowywa- tomiast czasowo krytyczne proce- Dzięki wprowadzeniu mechanizmu
ne zawsze w formacie little–endian. dury mogą działać w trybie ARM. trybów ochrony tylko aplikacja pracu-
Ponieważ najszybsze pamięci Flash Przełączanie trybu odbywa się za jąca w warstwie systemu operacyjnego
osiągają prędkości rzędu 20 MHz, pomocą instrukcji BX lub BLX ma dostęp do krytycznych zasobów,
natomiast rdzeń ARM7TDMI–S może (nie można tutaj wykorzystać ma- aplikacje użytkownika mogą się do
wykonywać rozkazy ze znacznie nipulacji na rejestrze znaczników). tych zasobów odwoływać tylko za
większą prędkością, najczęściej sto- Wszystkie wyjątki procesora są pośrednictwem odwołań systemowych.
suje się pamięć pośredniczącą cache wykonywane w 32–bitowym trybie Dzięki temu mamy pewność, że do-
lub przepisuje się zawartość pamię- ARM i jeżeli podczas wystąpienia stęp do tych zasobów został wykona-
ci Flash do RAM (w momencie uru- wyjątku procesor znajduje się w try- ny w sposób prawidłowy. Przykładem
chomienia mikrokontrolera), z której bie THUMB zostaje automatycznie systemu operacyjnego, który zapewnia
następnie program jest wykonywa- przełączony do trybu ARM. Po za- dobrą ochronę zasobów poprzez korzy-
ny. Zastosowanie pamięci cache kończeniu obsługi wyjątku procesor stanie z trybów ochrony mikroproce-
lub dodatkowego RAM–u powodu- powraca do trybu THUMB. sora Intel 386 jest system operacyjny
je konieczność użycia dodatkowych Windows NT oraz Linux. Zapisanie
zasobów oraz komplikuje układ. Tryby ochrony dowolnego obszaru pamięci znajdują-
W mikrokontrolerach LPC21xx zasto- W mikroprocesorach 8/16–bitowych cego się poza obszarem aplikacji po-
sowano inną, ale równie skuteczną wykonanie niedozwolonej operacji, woduje wygenerowanie odpowiedniego
metodę polegającą na odczytywaniu np. skok do nieistniejącego obszaru wyjątku, którego wynik działania mo-
z pamięci Flash w jednym cyklu 4 pamięci programu lub zablokowanie żemy zaobserwować np. w postaci ko-
rozkazów naraz, co umożliwia uru- na stałe przyjmowania przerwań, po- munikatu Segmentation Fault. Procesor
chamianie programu z pamięci Flash wodowało najczęściej zawieszenie ca- ARM7TDMI–S został wyposażony w 7
z pełną prędkością pracy rdzenia. łego systemu. Przykładowo, pracując trybów ochrony, z których 6 jest try-
Za zarządzanie pamięcią odpowiada w znanym systemie MS–DOS, gdy źle bami uprzywilejowanymi (PRIVILED-
kontroler MAM (Memory Accelera- działający program zapisał niedozwo- GED MODE) oraz jeden z nich jest
tion Module). lony obszar pamięci będący częścią trybem użytkownika (USER MODE).
Rdzeń może wykonywać dwa systemu operacyjnego cały system ule- Do dyspozycji mamy:
podzbiory rozkazów: gał zawieszeniu, a jedynym sposobem – Tryb użytkownika (User Mode)
– 32–bitowe instrukcje ARM, na wyjście z tej sytuacji było jego – wykorzystywany podczas nor-
– 16–bitowe instrukcje THUMB. ponowne uruchomienie. Aby uniknąć malnego wykonywania programu.
Kod 16–bitowy charakteryzuje się podobnych sytuacji w konstrukcjach W tym trybie niektóre operację
wolniejszym wykonywaniem instruk- mikroprocesorów 32–bitowych wpro- mogące zaburzyć pracę systemu
cji 32–bitowych oraz większą gęsto- wadzono sprzętowe tryby ochrony. są niedostępne. Np. zablokowana
ścią upakowania kodu. Natomiast Tryby ochrony działają w ten sposób, jest możliwość modyfikacji flag

92 Elektronika Praktyczna 12/2005


K U R S

blokady przerwań. Zmiana trybu ochrony następuje RS0 RS1 w rejestrze PSW. W ARM–
– Tryb przerwania szybkiego (Fast w momencie wystąpienia sytuacji wy- –ach sytuacja jest bardzo podobna,
Interrupt) FIQ – wykorzystywany jątkowej. Przykładowo gdy zgłaszane z tym, że rejestry podmieniane są
do wykonywania przerwań kry- jest przerwanie procesor zmienia tryb automatycznie przy zmianie trybu
tycznych czasowo. na IRQ. Tryb ochrony można także ochrony i nie jest bankowany cały
– Tryb przerwania (Interrupt) IRQ zmienić w trybach uprzywilejowanych zestaw rejestrów a jedynie ich część.
– wykorzystywany do obsługi zwy- na drodze programowej poprzez mo- To, które rejestry są bankowane, za-
kłych przerwań. dyfikację słowa stanu procesora. Na- leży od trybu ochrony. Zastosowanie
– Tryb nadzorcy (Supervisor) – wy- tomiast, gdy jesteśmy w trybie użyt- mechanizmu bankowania przy zmia-
korzystywany przez system opera- kownika trybu nie można zmienić nie trybu umożliwia np. zrealizowa-
cyjny. w sposób programowy. Gdyby tak nie osobnego stosu dla każdego try-
– Abort Mode – tryb ten jest uru- nie było wówczas dowolny program bu ochrony, co dodatkowo podnosi
chamiany, np. gdy procesor napo- użytkownika mógłby zmienić tryb na bezpieczeństwo. Jeżeli mielibyśmy
tka instrukcję odwołująca się do tryb uprzywilejowany i przejąć pełną tylko jeden stos dla wszystkich try-
nieistniejącego obszaru pamięci. kontrolę nad procesorem, co podwa- bów, wówczas program użytkownika
W mikrokontrolerach i systemach żało by sens stosowania trybów chro- mógłby np. nie zdjąć ze stosu za-
zawierających blok zarządzania nionych. W procesorach ARM stosuje wartości jakiegoś rejestru, i działanie
pamięcią MMU, może być wyko- się mechanizm bankowania rejestrów. systemu operacyjnego mogło by się
rzystywany do realizacji pamięci Polega on na tym, że gdy procesor załamać na skutek zdjęcia przez sys-
wirtualnej, znanej doskonale z sys- zmienia tryb ochrony zestaw nie- tem ze stosu nieprawidłowych warto-
temów takich jak Windows czy których rejestrów jest podmieniany ści. Tutaj nie ma takiego problemu,
Linux. na inny. W efekcie tego każdy tryb ponieważ każdy tryb ochrony posia-
– Tryb systemu operacyjnego (Sys- ochrony posiada swój własny rejestr, da swój własny stos i nawet jak pro-
tem Mode) – uprzywilejowany który jest widoczny tylko w tym gram w trybie użytkownika nie zdej-
tryb wykorzystywany przez system trybie. Mechanizm bankowania jest mie zawartości jakiegoś rejestru ze
operacyjny. świetnie znany wszystkim programi- stosu, nie będzie to miało wpływu
– Undefined Mode – procesor wcho- stom mikrokontrolera 8051, gdzie do na pracę systemu operacyjnego.
dzi w ten tryb, gdy napotka nie- dyspozycji mamy 4 banki rejestrów Lucjan Bryndza SQ7FGB
znaną instrukcję. R0...R7 przełączane za pomocą bitów lucjan.bryndza@ep.com.pl

Elektronika Praktyczna 12/2005 93

You might also like