Mikrokontrolery_ARM_cz2.pdf
(
1412 KB
)
Pobierz
ep_01_093-095_arm_cz2.indd
K U R S
Mikrokontrolery
z rdzeniem ARM
, część 2
W większości obecnie
prezentowanych (nie tylko w EP)
projektów królują mikrokontrolery
8–bitowe. Dawniej była to
nieśmiertelna rodzina 8051,
obecnie panuje moda na AVR–y.
Dotychczas użycie 32–bitowych
mikrokontrolerów pozostawało
w sferze marzeń przeciętnego
konstruktora ze względu na
wysoką cenę, skomplikowane
rozwiązania układowe
wymagające prowadzenia na
płytkach 32–bitowych magistral
systemowych oraz konieczność
stosowania dodatkowych
układów zewnętrznych. Sytuacja
uległa diametralnej zmianie
w momencie pojawienia się
na rynku mikrokontrolerów
z rdzeniem ARM i wbudowaną
pamięcią Flash, najpierw firmy
Philips LPC21xx i wkrótce
później Atmela AT91SAM7, ATM
– rodzina STR700 i wielu innych
producentów.
w
tab.
1
. Na przykład
rejestr R13 w trybie
systemowym zamie-
niany jest na rejestr
R13_sys.
Musimy pamiętać,
że przy zmianie trybu
ochrony nie wszystkie
rejestry są podmienia-
ne. W trybie FIQ pod-
mieniane są rejestry
R8…R14. Natomiast w pozostałych
trybach tylko rejestry R13 oraz R14.
Tryb FIQ podmienia więcej re-
jestrów niż pozostałe, ponieważ
jest on wykorzystywany do obsłu-
gi krytycznych czasowo przerwań.
Gdyby tryb ten zapisywał tylko
rejestry R13, R14 pozostałe trzeba
by było zachować w sposób pro-
gramowy, co spowodowałoby to
dodatkową stratę czasu.
Oprócz rejestrów R0…R15 do
dyspozycji mamy rejestr CPSR
(
Current Program Status Register
),
który jest rejestrem słowa stanu
procesora. Zawiera on znaczniki
wyniku wykonanych operacji aryt-
metycznych i logicznych, flagi po-
zwalające na kontrolę przyjmowa-
nia przerwań, oraz bity ustawień
trybu ochrony. Gdy procesor znaj-
duje się w trybie uprzywilejowanym
dodatkowo widoczny jest rejestr
SPSR (
Saved Program Status Regi-
ster
), będący kopią rejestru CPSR,
utworzoną tuż przed zmianą trybu
ochrony. Na przykład w momencie
przyjęcia przerwania rejestr statu-
su CPSR jest kopiowany do SPSR,
a po zakończeniu procedury obsługi
przerwania jest on ponownie kopio-
wany do CPSR. Gdyby zawartość
rejestru flag nie była kopiowana
program sam musiałby troszczyć
się o odtworzenie jego zawartości.
Wszystkie rejestry R0…R15 są
równouprawnione i można na nich
wykonywać wszystkie operacje znaj-
Rejestry
Rdzeń ARM7TDMI–S posiada
łącznie 31 rejestrów ogólnego prze-
znaczenia oraz 6 rejestrów statusu
(flag), przy czym programista ma
dostęp jednocześnie do 16 reje-
strów R0…R15. Pozostałe rejestry
są używane zamiennie z rejestrami
R0…R15. Gdy mikroprocesor zo-
stanie przełączony z trybu ochrony
użytkownika na inny tryb część
rejestrów zostaje podmieniona. Na
przykład, gdy w wyniku wystąpie-
nia przerwania zostanie zmieniony
tryb z użytkownika na IRQ rejestry
R0…R12 i R15 pozostaną te same,
natomiast w miejsce rejestrów R13
i R14 zostanie podstawiony prywat-
ny rejestr wykorzystywany przez
tryb IRQ, nazwany R13_IRQ i R14_
IRQ. Wykonanie instrukcji
MOVS
R13,#100
podczas gdy procesor
znajduje się w trybie IRQ powo-
duje wpisanie do rejestru R13_IRQ
wartości 100, natomiast rejestr R13
pozostanie nienaruszony. Rejestry
prywatne w trybach ochrony przyj-
mują identyfikatory przedstawione
Rys. 3. Mapa rejestrów procesora (w trybie ARM)
Elektronika Praktyczna 1/2006
93
K U R S
Rys. 4. Mapa rejestrów procesora (w trybie Thumb)
jak AVR czy 8051 wywołanie pod-
programu odbywa się za pomocą
instrukcji CALL, która powoduje
zapamiętanie licznika rozkazów na
stosie oraz skok do podprogramu.
Powrót z podprogramu wykonywa-
ny jest za pomocą instrukcji RET,
która odtwarza ze stosu zawar-
tość licznika rozkazów. Ponieważ
w ARM7 stos jest realizowany na
drodze programowej i nie jest nie-
zbędny do pracy systemu, skok
do podprogramu realizowany jest
za pomocą instrukcji BL (
Branch
Link
). Instrukcja ta działa w ten
sposób, że kopiuje zawartość licz-
nika rozkazów PC (R15), do reje-
stru LR (R14)
Link Register
, a na-
stępnie wykonuje skok pod wska-
zany adres. Powrót z podprogramu
odbywa się poprzez skopiowanie
zawartości rejestru LR z powrotem
do licznika rozkazów PC. Wyraźnie
widać tutaj zaletę równouprawnie-
nia wszystkich rejestrów, ponieważ
zbędne staje się użycie specjalnych
rozkazów operujących na liczni-
ku rozkazów np. RET czy RETI.
W przypadku zagnieżdżenia podpro-
gramów, czyli skoku z podprogramu
do innego podprogramu, użytkow-
nik musi sam zatroszczyć się o za-
pamiętanie rejestru LR (R14) przed
skokiem do kolejnego podprogramu,
a następnie po wyjściu z zagnież-
dżonego podprogramu powinien
odtworzyć jego zawartość. Do zapa-
miętania rejestru LR (R14) można
wykorzystać np. stos lub dowol-
ny obszar pamięci. W pozostałych
przypadkach, gdy nie używamy
rozkazu BL, rejestr R14 może być
wykorzystany w dowolnym celu.
Chociaż R13 nie ma szczególnego
zastosowania wyznaczonego przez
architekturę procesora, najczęściej
oprogramowanie wykorzystuje ten
dujące się na liście rozkazów. Dwa
z nich spełniają szczególne funkcje:
Rejestr R15 jest licznikiem rozka-
zów PC (
Program Counter
), do jego
zawartości można się odwoływać
za pomocą wielu instrukcji. Na
przykład skok pod wskazany adres
można zrealizować poprzez wpisa-
nie określonej wartości instrukcją
MOV do rejestru R15. W typowych
mikrokontrolerach np. w AVR nie
ma możliwości wykonywania ja-
kichkolwiek operacji bezpośrednio
na zawartości licznika rozkazów.
Kolejnym rejestrem pełniącym do-
datkową funkcję jest rejestr R14,
wykorzystywany jako
Link Register
(LR)
.
W mikrokontrolerach takich
Tab. 1. Tryby ochrony procesora i wynikające z nich dozwolone ustawienia bitów
Bity M[4..0] Tryb Widoczne rejestry trybuTHUMB Widoczne rejestry trybu ARM
10000 User R0–R7, SP, LR, PC, CPSR
R0–R14, PC,CPSR
10001 FIQ
R0–R7, SP_fiq, LR_fiq, PC, CPSR,
SPSR_fiq
R0–R7, R8_fiq–R14_fiq, PC, CPSR,
SPSR_fiq
10010 IRQ
R0–R7, SP_irq, LR_irq, PC, CPSR,
SPSR_irq
R0–R12, R13_irq–R14_irq, PC,
CPSR, SPSR_irq
10011 Supervisor
R0–R7, SP_svc, LR_svc, PC,
CPSR, SPSR_svc
R0–R12, R13_svc–R14_svc, PC,
CPSR, SPSR_svc
10111 Abort
R0–R7, SP_abt, LR_abt, PC,
CPSR, SPSR_abt
R0–R12, R13_abt–R14_abt, PC,
CPSR, SPSR_abt
11011 Undefined
R0–R7, SP_und LR_und, PC,
CPSR, SPSR_und
R0–R12, R13_und–R14_und, PC,
CPSR, SPSR_und
11111 System R0–R7, SP, LR, PC, CPSR
R0–R14, PC,CPSR
94
Elektronika Praktyczna 1/2006
K U R S
Rys. 5. Sposób mapowania rejestrów z trybu Thumb na
tryb ARM
tację oddzielnych
stosów dla każde-
go trybu. Na dobrą
sprawę gdybyśmy
chcieli używać tyl-
ko jednego stosu
dla wszystkich try-
bów, równie dobrze
jako wskaźnik stosu
możnaby użyć inne-
go rejestru z zakresu
R0…R12.
Instrukcje proce-
sora ARM umożli-
wiają implementację
wszystkich rodzajów
stosu: rosnący lub
malejący, wskazują-
cy na ostatni zajęty
element lub pierw-
szy wolny. Wszystko
zależy od programu
lub, w bardziej za-
awansowanych apli-
kacjach, od syste-
mu operacyjnego i nie jest sztywno
ustalone, jak w przypadku standar-
dowych architektur.
Na
rys.
3
przedstawiono reje-
stry procesora (Tryb ARM) w po-
szczególnych trybach ochrony.
W 16–bitowym trybie THUMB
mamy do dyspozycji 32–bitowe re-
jestry R0…R7, LR, SP, PC, CPSR,
SPSR. Wszystkie rejestry są pod-
zbiorem rejestrów trybu ARM. Po-
nieważ lista rozkazów w tym trybie
jest zbliżona do zestawu instrukcji
standardowego mikroprocesora do
dyspozycji mamy rejestr wskaźnika
stosu implementowany sprzętowo.
Rejestry tego trybu są przedstawio-
ne na
rys.
4
.
Rejestry z trybu THUMB są ma-
powane na rejestry trybu ARM
w sposób przedstawiony na
rys.
5
.
W trybie THUMB rejestry R0…
R7 są nazywane zestawem dolnym,
natomiast rejestry R8…R15 są na-
zwane górnym zestawem rejestrów.
Górne rejestry nie są dostępne
w standardowym zestawie, ale moż-
na je wykorzystać jako pamięć tym-
czasową. Dostęp do górnych reje-
strów jest możliwy za pomocą spe-
cjalnego wariantu instrukcji MOV.
Lucjan Bryndza SQ7FGB
lucjan.bryndza@ep.com.pl
rejestr jako wskaźnik stosu (SP)
(
Stack Pointer
), ponieważ jest on
bankowany we wszystkich trybach
ochrony. Umożliwia to implemen-
Elektronika Praktyczna 1/2006
95
Plik z chomika:
xp7
Inne pliki z tego folderu:
Mikrokontrolery_ARM_cz1.pdf
(898 KB)
Mikrokontrolery_ARM_cz2.pdf
(1412 KB)
Mikrokontrolery_ARM_cz3.pdf
(738 KB)
Mikrokontrolery_ARM_cz4.pdf
(1264 KB)
Mikrokontrolery_ARM_cz5.pdf
(517 KB)
Inne foldery tego chomika:
C%MOS
Mikrokontrolery AVR
Mikrokontrolery dla początkujących - Piotr Górecki
Mikrokontrolery i układy cyfrowe
Mikrokontrolery to takie proste - EDW
Zgłoś jeśli
naruszono regulamin