Mikrokontrolery ARM cz3


K U R S
Mikrokontrolery z rdzeniem ARM,
część 3
W większości obecnie wienie bitu I, F powoduje zablokowanie ochrony do którego przypisany jest
przyjmowania odpowiednio przerwania wyjątek kopiuje zawartość rejestru
prezentowanych (nie tylko w EP)
IRQ i FIQ. Bit T informuje o tym, czy CPSR.
projektów królują mikrokontrolery
CPU znajduje się w 16 bitowym trybie  Zmienia tryb ochrony na taki jaki
8 bitowe. Dawniej była to
THUMB (flaga ustawiona) lub w trybie jest przypisany do danego wyjątku.
nieśmiertelna rodzina 8051,
ARM (flaga skasowana). Nie wolno bez-  Do licznika rozkazów (PC) wpisuje
obecnie panuje moda na AVR y.
pośrednio modyfikować tego bitu, pod adres wektora wyjątku.
Dotychczas użycie 32 bitowych
grozbą nieokreślonego zachowania CPU. Jeśli zgłaszane są wyjątki obsługują-
mikrokontrolerów pozostawało
Do zmiany trybu pracy służy specjalna ce przerwania CPU ustawia bity F, I co
w sferze marzeń przeciętnego
odmiana instrukcji skoku BX. Bity M4, zapobiega ponownemu przyjmowaniu
konstruktora ze względu na wysoką
M3, M2, M1, M0 określają tryb ochro- przerwań do czasu zakończenia obsługi
cenę, skomplikowane rozwiązania
ny w jakim znajduje się procesor. Nie bieżącego przerwania. O kolejności przyj-
układowe wymagające prowadzenia wszystkie kombinacje stanów są do- mowania wyjątków decyduje ich priory-
zwolone i należy uważać, aby używać tet. Gdy w momencie zgłoszenia wyjątku
na płytkach 32 bitowych magistral
tylko prawidłowych kombinacji bitów. procesor znajduje się w trybie THUMB,
systemowych oraz konieczność
W tab. 2 przedstawiono tryby ochrony zostaje on automatycznie przełączony
stosowania dodatkowych układów
procesora i wynikające z nich dozwolone w tryb ARM. Po zakończeniu podprogra-
zewnętrznych. Sytuacja uległa
ustawienia bitów. mu obsługi wyjątku należy powrócić do
diametralnej zmianie w momencie
realizacji programu głównego poprzez
pojawienia się na rynku
Wyjątki skopiowanie do PC (R15) zawartości re-
mikrokontrolerów z rdzeniem
Wyjątki działają na bardzo podobnej jestru LR (R14) odejmując odpowiednie
ARM i wbudowaną pamięcią
zasadzie jak przerwania w mikrokontro- przesunięcie. W momencie skopiowania
Flash, najpierw firmy Philips
lerach 8 bitowych, mianowicie gdy zda- adresu powrotu do licznika rozkazów
LPC21xx i wkrótce pózniej Atmela
rzy się sytuacja wyjątkowa mikroproce- PC(R15), poprzednia zawartość rejestru
AT91SAM7, ATM  rodzina STR700 sor przerywa wykonania bieżącego pro- CPSR jest odtwarzana automatycznie
gramu i skacze do podprogramu obsługi z rejestru SPSR. W tab. 3 przedstawiono
i wielu innych producentów.
wyjątku. Po zakończeniu obsługi wyjątku informacje na temat adresów wektorów
Słowo stanu procesora (CPSR, mikroprocesor powraca do poprzedniego wyjątków, priorytetów oraz zalecanej in-
SPSR) miejsca gdzie zostało przerwane wyko- strukcji kończącej obsługę wyjątku.
Rejestr CPSR zawiera znaczniki wy- nywanie programu. Jedyna różnica po- Obserwując tablicę wektorów prze-
niku wykonanych operacji arytmetycz- lega na tym ze wyjątki są generowane rwań możemy zauważyć, że wektor
nych i logicznych, flagi pozwalające na nie tylko w reakcji na przerwania, od 0x00000014 jest niewykorzystany. Jest
kontrolę przyjmowania przerwań, oraz urządzeń peryferyjnych, ale mogą być on pozostałością po wcześniejszych im-
bity ustawień trybu ochrony. Gdy pro- wywoływane przez sam mikroprocesor plementacjach architektury ARM. W pro-
cesor znajduje się w trybie uprzywilejo- na przykład na skutek wystąpienia od- cesorach LPC21xx wektor ten powinien
wanym dodatkowo widoczny jest rejestr wołania do obszaru pamięci, który nie być zapisany sumą kontrolną w kodzie
SPSR (Saved Program Status Register), istnieje. Jest jeszcze jedna różnica, mia- uzupełnienia do dwóch tablicy wekto-
będący kopią rejestru CPSR, utworzo- nowicie tuż przed wejściem do proce- rów przerwań. Suma ta jest sprawdzana
ną tuż przed zmianą trybu ochrony na dury obsługi wyjątku CPU zmienia tryb przez bootloader mikrokontrolera, w ce-
inny. Bitową reprezentację rejestru CPSR ochrony z trybu bieżącego na tryb, który lu stwierdzenia poprawności programu
przedstawiono na rys. 6. jest przypisany do danego wyjątku. Po zapisanego w pamięci. Warto podkre-
Flagi warunków N, Z, C, V są zakończeniu podprogramu obsługi wyjąt- ślić, że maksymalny czas, jaki upływa
zmieniane w wyniku operacji arytmetycz- ku przywracany pierwotny tryb ochro- od zgłoszenia przerwania FIQ do jego
nych i logicznych. Flagi mogą być także ny. Np. gdy mikroprocesor wykonujący obsługi wynosi 27 cykli procesora, co
zmieniane za pomocą instrukcji MSR, program w trybie użytkownika napotka przy zegarze 60 MHz daje czas reak-
której wykonanie powoduje przepisanie instrukcję przerwania programowego cji na przerwanie równy maksymalnie
rejestru R0& R15 do rejestru stanu pro- SWI generuje wyjątek Software Inter- 450 ns. Czas reakcji na przerwanie IRQ
cesora (CPSR). Rdzeń sprawdza znacz- rupt. Wyjątek ten zmienia tryb ochrony jest podobny, jednak może ono zostać
niki flag warunkowych w celu określe- na Supervisor, a po zakończeniu podpro- zgłoszone pózniej, jeżeli jest wykonywa-
nia czy instrukcja ma być wykonana gramu obsługi wyjątku przywracany jest ny inny wyjątek o wyższym priorytecie.
czy też nie. W trybie ARM wszystkie tryb użytkownika. Podczas
instrukcje, zawierają 4 bitowy kod wa- gdy zostaje zgłoszony wyją-
runkowy i mogą być wykonywanie wa- tek CPU wykonuje następują-
runkowo w zależności od flag N,Z,C,V, ce operacje:
natomiast w trybie THUMB warunkowo  W rejestrze LR (R14) za-
mogą być wykonywane tylko instruk- pamiętuje adres następnej
cje rozgałęzień. Bity I, F pozwalają na instrukcji do wykonania.
kontrolę przyjmowania przerwań. Usta-  Do rejestru SPSR trybu Rys. 6.
Elektronika Praktyczna 2/2006
101
K U R S
Tab. 2. Tryby ochrony procesora i wynikające z nich dozwolone ustawienia bitów M4& M9
LPC21xx rdzeń AR-
Bity M[4..0] Tryb Widoczne rejestry trybuTHUMB Widoczne rejestry trybu ARM
M7TDMI S ma na
10000 User R0 R7, SP, LR, PC, CPSR R0 R14, PC,CPSR
sztywno ustalony
10001 FIQ R0 R7, SP_fiq, LR_fiq, PC, CPSR, SPSR_fiq R0 R7, R8_fiq R14_fiq, PC, CPSR, SPSR_fiq
porządek bajtów lit-
10010 IRQ R0 R7, SP_irq, LR_irq, PC, CPSR, SPSR_irq R0 R12, R13_irq R14_irq, PC, CPSR, SPSR_irq tle endian, o czym
musimy pamiętać
10011 Supervisor R0 R7, SP_svc, LR_svc, PC, CPSR, SPSR_svc R0 R12, R13_svc R14_svc, PC, CPSR, SPSR_svc
podczas ustawiania
10111 Abort R0 R7, SP_abt, LR_abt, PC, CPSR, SPSR_abt R0 R12, R13_abt R14_abt, PC, CPSR, SPSR_abt
opcji kompilatora.
11011 Undefined R0 R7, SP_und LR_und, PC, CPSR, SPSR_und R0 R12, R13_und R14_und, PC, CPSR, SPSR_und
Procesor ARM po-
11111 System R0 R7, SP, LR, PC, CPSR R0 R14, PC,CPSR
siada architekturę
Za kontrolę przerwań od urządzeń ze- na dysku lub partycji wymiany. Load, Store, więc wszystkie operacje
wnętrznych oraz ich przydzielenie jako Wyjątek Software Interrupt (SWI) muszą być wykonywane na rejestrach.
przerwanie FIQ lub IRQ w mikrokon- jest wywoływany programowo instrukcją Aby wykonać jakąś operację na danej
trolerach LPC21xx odpowiada wektory- SWI, umożliwia to realizację przerwań znajdującej się w pamięci musimy jej
zowany kontroler przerwań (VIC), który programowych, tzw. funkcji systemu zawartość przesłać do rejestru, wyko-
zostanie opisany pózniej. operacyjnego. Identyczny mechanizm nać żądaną operację, a następnie wynik
Poszczególne wyjątki zgłaszane są posiada mikroprocesor x86. Wszyscy operacji przesłać ponownie do pamięci.
w następujących sytuacjach: którzy kiedyś mieli kontakt z progra- Bardzo ciekawą cechą ARM7TDMI S
Wyjątek FIQ (Fast Interrupt) jest mowaniem w asemblerze w systemie wyróżniającą go od innych mikroproce-
generowany przez sygnał wewnętrzny MS DOS znają mechanizm przerwań sorów jest to, że każda instrukcja może
mikrokontrolera nFIQ pochodzący z kon- programowych generowanych rozkazem być wykonywana warunkowo. Najstarsze
trolera przerwań VIC. Tryb ochrony INT. Podczas programowania mikrokon- cztery bity kodu rozkazu są porówny-
FIQ, w który wchodzi CPU w momencie trolerów LPC21xx tryb ten będziemy wane z bitami flag warunków w reje-
zgłoszenie tego wyjątku, zawiera 7 ban- najczęściej wykorzystywali do zmiany strze CPSR, jeżeli bity te nie są zgod-
kowanych rejestrów, których nie trzeba trybu ochrony na tryb uprzywilejowany ne, dana instrukcja nie jest wykonywa-
zapisywać na stosie przy wejściu do (supervisor) w celu np. zablokowania na (w jej miejsce do potoku wstawiany
procedury obsługi przerwania. Wyjątek systemu przerwań. jest rozkaz NOP). Wykonywanie każdej
FIQ można zablokować w uprzywilejo- Wyjątek Undefined Instruction wyją- instrukcji w sposób warunkowy pozwala
wanym trybie ochrony poprzez ustawie- tek ten jest generowany, gdy CPU napo- w dużej liczbie przypadków na unik-
nie flagi F w rejestrze CPSR. tka instrukcję nieznajdującą się na liście nięcie używania instrukcji rozgałęzień,
Wyjątek IRQ (Interrupt) jest genero- rozkazów CPU. Mechanizm ten można których wykonanie powoduje ponowne
wany przez sygnał wewnętrzny mikro- wykorzystać np. do emulacji instruk- zapełnianie potoku nowymi instrukcjami
kontrolera nIRQ pochodzący z kontrole- cji koprocesora, którego mikrokontrolery i dodatkową stratą czasu. Do większości
ra przerwań VIC. Wyjątek FIQ można LPC21xx nie posiadają. mnemoników asemblera w trybie ARM
zablokować w uprzywilejowanym trybie Reset  podczas startu systemu można dodać sufiks z mnemonikami
ochrony poprzez ustawienie flagi F CPU rozpoczyna wykonanie programu warunkowymi. Listę mnemoników wa-
w rejestrze CPSR. od tego wektora. W stanie początko- runków przedstawiono w tab. 4.
Wyjątek Prefetch Abort jest genero- wym bity trybu ochrony ustawiane są Przykładow instrukcja ADDMI
wany, gdy pobierana instrukcja jest nie- na tryb supervisor oraz blokowane jest R1,R2,#0x8000000 dodaje do rejestru
prawidłowa. zgłaszanie przerwań zewnętrznych po- R1 zawartość R2+0x80000000 tylko
Wyątek Data Abort jest generowany przez ustawienie odpowiednich bitów wtedy, gdy wynikiem wykonania po-
przez instrukcje LDM, STM, LDR, STR, w CPSR. przedniej operacji było ustawienie bitu
SWP odwołujące się do nieistniejącego N w rejestrze CPSR, w przeciwnym razie
obszaru pamięci. Mechanizm ten umoż- Lista instrukcji procesora zawartość rejestru R1 pozostanie nie-
liwia implementację przez system opera- ARM7TDMI S zmieniona. Instrukcje rozgałęzień potra-
cyjny pamięci wirtualnej (np. na dysku Podstawą niniejszego kursu będzie fią skoczyć o wartość w przód lub w tył
lub karcie pamięci FLASH). W typowej język C, więc przedstawienie listy rozka- o 32 MB od bieżącej instrukcji. Podsta-
pracy z mikrokontrolerami LPC21xx naj- zów nie jest niezbędne. Niemniej jednak wową instrukcją skoku jest instrukcja
częściej podprogram obsługi tego wyjąt- zrozumienie architektury mikroproceso- B (branch), której wykonanie powoduje
ku będzie się sprowadzał do wyświetle- ra umożliwi pisanie bardziej efektyw- skok pod wskazany adres. Modyfikacją
nia informacji o błędzie i wejściu w nie- nych programów. W mikrokontrolerach instrukcji B jest instrukcja BL (Branch
skończoną pętlę. W przypadku, gdy
Tab. 3. Adresy wektorów wyjątków, priorytetów oraz zalecanej instrukcji kończącej
implementujemy mechanizm pamięci
obsługę wyjątku
wirtualnej, podprogram obsługi prze-
Adres Tryb ochrony Instrukcja powrotu z Zawartość LR
rwania po usunięciu błędu powraca Wyjątek Priorytet
wektora wyjątku podprogramu obsługi ARM (THUMB)
do miejsca jego wystąpienia i in-
Reset 1 (Najwyższy) 0x00000000 Supervisor  
strukcja, która spowodowała wyjątek
Undefined Instruction 6 (Najniższy) 0x00000004 Undefined MOVS PC,R14_und PC+4 (PC+2)
jest ponownie wykonywana. Mecha-
Software Interrupt
nizm pamięci wirtualnej jest dobrze 6 (Najniższy) 0x00000008 Supervisor MOVS PC,R14_svc PC+4 (PC+2)
(SWI)
znany wszystkim użytkownikom
Prefetch Abort 5 0x0000000C Abort SUBS PC,R14_abt,#4 PC+4 (PC+4)
32 bitowych systemów operacyjnych.
Data Abort 2 0x00000010 Abort SUBS PC,R14_abt,#8 PC+8 (PC+8)
Działanie jego polega na emulacji
IRQ (interrupt) 4 0x00000018 IRQ SUBS PC,R14_irq,#4 PC+4 (PC+4)
przez system operacyjny części pa-
FIQ (Fast interrupt) 3 0x0000001C FIQ SUBS PC,R14_fiq,#4 PC+4 (PC+4)
mięci operacyjnej za pomocą pliku
Elektronika Praktyczna 2/2006
102
K U R S
Link), która działa tak samo te są jedynym dozwolonym
jak instrukcja B, ale dodatko- sposobem na zmianę trybu
wo zapisuje zawartość PC+4 pracy.
w rejestrze LR. Umożliwia to Kolejnym typem instruk-
realizację mechanizmu pod- cji są instrukcje przetwarza-
programów. Używając wraz nia danych.
z instrukcją B i BL mnemo- Każda instrukcja przetwa-
ników warunkowych można rzania danych posiada rejestr
wykonywać skoki warunko- przeznaczenia oraz dwa re-
we oraz warunkowe wywoła- jestry zawierające argumenty.
nia podprogramów. W innych Pierwszy operand musi być
mikrokontrolerach np. 8051 rejestrem natomiast drugi
rozgałęzienia warunkowe naj- operand może być rejestrem
częściej są wykonywane do lub wartością stałą. Dodat-
+128 bajtów do przodu i kowo jako czwarty argument
 127 bajtów wstecz. Powo- możemy podać przesunięcie
duje to konieczność użycia logiczne do 32 bitów, któ-
dodatkowych instrukcji sko- re nie powoduje wydłużenia
ków bezwarunkowych, co wykonania rozkazu. Flaga
komplikuje i wydłuża pro-  S informuje czy rozkaz ma
gram. W ARM ach możemy zaktualizować flagi warun-
wykonywać skoki w zakresie kowe w CPSR czy też nie.
aż do ą32 MB co jest dużą Jeżeli jako rejestr przezna-
zaletą. Specjalną odmianą in- czenia wyspecyfikowany jest
strukcji B i BL są instrukcje rejestr PC (R15) flaga  S
BX i BLX, które oprócz sko- ma dodatkowe znaczenie po-
ku dodatkowo zmieniają tryb legające na skopiowaniu reje-
pracy procesora z THUMB na stru SPSR z bieżącego trybu
ARM i odwrotnie. Instrukcje ochrony do rejestru CPSR.
Elektronika Praktyczna 2/2006
103
K U R S
Tab. 4. Lista mnemoników warunków
Instrukcje te używane są do powro- SWP  Zamień daną z zawartością
w ARM7TDMI S
tu z podprogramu obsługi wyjątku. Do rejestru
Mnemonik Flagi warunków Działanie
najczęściej wykorzystywanych instrukcji Ponieważ wszystkie rejestry są or-
EQ Z=1 =
przetwarzających dane należą: togonalne (równouprawnione), możemy
AND  Logiczny AND użyć instrukcji modyfikujących bezpo- NE Z=0 !=
EOR  Exclusive OR średnio licznik rozkazów PC (R15), co >= (liczba
CS C=1
bez znaku)
SUB  odejmowanie jest użyteczne w przypadku, gdy ad-
< (liczba bez
RSB  odejmowanie w odwróconej res skoku znajduje się poza zasięgiem
CC C=0
znaku)
kolejności argumentów. instrukcji B (branch). ARM7TDMI S
MI N=1 Ujemny
ADD  Dodawanie posiada także instrukcje (LDM, STM),
PL N=0 Dodatni lub 0
ADC  Dodawanie z przeniesie- które potrafią przepisać do i z pamięci
niem zawartość wszystkich rejestrów lub wy- VS V=1 Przepełnienie
SBC  Odejmowanie z pożyczką branego podzbioru rejestrów. Dostęp do Brak
VC V=0
przepełnienia
RSB  odejmowanie z pożyczką rejestrów stanu procesora CPSR,SPSR
w odwróconej kolejności argumentów możliwy jest za pomocą dwóch instruk- > (liczba bez
HI C=1 i Z=0
znaku)
TST  testowanie AND cji MSR i MRS, które umożliwiają prze-
<= (liczba
TEQ  testowanie XOR słanie zawartości CPSR i SPSR do reje-
LS C=0 i Z=1
bez znaku)
CMP  porównanie strów ogólnego przeznaczenia. Zmiana
GE N=V >=
CMN  odwrotne porównanie trybu ochrony procesora lub załączenie
ORR  logiczny OR i wyłączenie przerwań możliwe jest tyl- LT N!=V <
MOV  przeniesienie ko z uprzywilejowanego trybu ochro- GT Z=0 i (N=Y) >
BIC  kasowanie bitu ny. Ciekawą instrukcją jest instrukcja LE Z=1 lub (N!=V) <=
MVN  przenieś zanegowany SWI (Software Interrupt), która jest
AL. Bez znaczenia Zawsze
(Rd:=0xFFFFFFFF xor Operand2) odpowiednikiem instrukcji int proceso-
Kolejną grupą instrukcji są instruk- ra 80x86. Powoduje ona wygenerowa- Gdzie do rejestru R0 wpisywana jest
cje transferu danych pamięć rejestry: nie wyjątku przerwania programowego zawartość R1+R2 w innych mikropro-
LDR  Załaduj 32 bitową daną SWI. Jako argument SWI można podać cesorach rozkazy najczęściej operują na
z pamięci 24 bitową liczbę, którą w podprogramie dwóch argumentach gdzie operacje wy-
LDRH  Załaduj 16 bitową daną obsługi wyjątku można odczytać i na konuje się na rejestrze przeznaczenia
z pamięci jej podstawie określić czynności jakie np. dla mikroprocesora x86 instrukcja
LDRSH  Załaduj 16 bitową daną ma wykonać wyjątek. Instrukcja SWI ADD EAX, ECX do rejestru EAX do-
ze znakiem z pamięci powoduje zmianę trybu ochrony na daje zawartość EAX + ECX. Unikalną
LDRB  Załaduj 8 bitową daną Supervisor i często za jej pomocą wy- cechą listy instrukcji ARM ów jest tak-
z pamięci konuje się odwołania do funkcji syste- że łączenie operacji przesunięcia i ob-
LDRSB  Załaduj 16 bitową daną mu operacyjnego. Pracując bez systemu rotu z instrukcjami arytmetycznymi, lo-
ze znakiem z pamięci będziemy często wykorzystywać gene- gicznymi, lub rozkazami przesłań. Jako
STR  Prześlij 32 bitową daną do rowanie tego wyjątku do zmiany try- czwarty argument tych rozkazów mo-
pamięci bu ochrony na Supervisor w celu np. żemy wyspecyfikować o ile bitów na-
STRH  Prześlij 16 bitową daną zablokowania przerwań. Oprócz wyżej leży obrócić lub przesunąć rejestr np.
do pamięci przedstawionych instrukcji procesor po- orr r1,r2,r3,lsl #4 powoduje zapis do
STRSH  Prześlij 16 bitową daną siada także instrukcje mnożenia liczb rejestru R1 sumy logicznej rejestru r2
ze znakiem do pamięci ze znakiem, bez znaku oraz instrukcję z rejestrem R3 przesuniętym o 4 bity
STRB  Prześlij 8 bitową daną do charakterystyczną dla procesorów DSP w lewo. Na tym zakończymy opis ar-
pamięci  mnożenie i akumulację. Cechą charak- chitektury ARM7TDMI S.
STRSB  Prześlij 8 bitową daną terystyczną ARM ów są trójargumen- Lucjan Bryndza SQ7FGB
ze znakiem do pamięci towe rozkazy np. ADDS R0, R1, R2. lucjan.bryndza@ep.com.pl
Elektronika Praktyczna 2/2006
104


Wyszukiwarka

Podobne podstrony:
Mikrokontrolery ARM cz1
Mikrokontrolery ARM cz10
Mikrokontrolery ARM cz14
Mikrokontrolery ARM cz8
Mikrokontrolery ARM cz12
Mikrokontrolery ARM cz15
Mikrokontrolery ARM cz21
Mikrokontrolery ARM cz19
Mikrokontrolery ARM cz6
Mikrokontrolery ARM cz22
Mikrokontrolery ARM cz18
Mikrokontrolery ARM cz18
Mikrokontrolery ARM cz11
Mikrokontrolery ARM cz13
Mikrokontrolery ARM cz17
Mikrokontrolery ARM cz5
Mikrokontrolery ARM cz20
Mikrokontrolery ARM cz7
Mikrokontrolery ARM cz9

więcej podobnych podstron