Mikrokontrolery ARM cz5


K U R S
Mikrokontrolery z rdzeniem ARM,
część 5
W tej części kursu przedstawiamy
organizację pamięci programu
zastosowanej w mikrokontrolerach
LPC2000 oraz zastosowany
w nich sposób przyspieszenia
dostępu do zgromadzonych
w niej danych.
Na rys. 10 przedstawiono mapę kontrolera ma rozmiar 8/16/32 kB. Do- ty w pamięci Flash. Przed uruchomie-
pamięci mikrokontrolerów LPC213x/ datkowo w mikrokontrolerach LPC2146/ niem programu z pamięci Flash spraw-
LPC214x. Pamięć mikrokontrolera jest 2148 od adresu 0x7FD00000 znajduje dzana jest jego poprawność na pod-
widoczna jako 32 bitowa przestrzeń ad- się 8 kB pamięci SRAM kontrolera stawie unikalnej sygnatury, która jest
resowa, co pozwala obsłużyć do 4 GB DMA USB. W przypadku, gdy nie wy- umieszczona w nieużywanym wektorze
pamięci. W mikrokontrolerach 8 bito- korzystujemy kanału DMA USB pamięć 0x00000014. Sygnatura ta jest sumą
wych (np. 8051) podczas pisania du- tą możemy wykorzystać jako część kontrolną w uzupełnieniu do dwóch
żych aplikacji często pojawiał się pro- pamięci operacyjnej mikrokontrolera. zawartości tablicy wektorów wyjątków.
blem niewystarczającej przestrzeni ad- Od adresu 0x7FFFD000 umieszczono Jeżeli okaże się, że suma ta daje nie-
resowej (64 kB), trzeba było wówczas zapisany na stałe program bootloade- poprawny wynik, wówczas zamiast
stosować sztuczki polegające na stoso- ra. Pozwala on na zaprogramowanie kodu z pamięci Flash uruchamiany jest
waniu banków pamięci. Powodowało to pamięci Flash poprzez port szeregowy dalszy ciąg programu ładującego. Pod-
spowolnienie wykonywania oraz kom- (programowanie pamięci w mikrokon- czas pisania programu nie musimy się
plikację programu. W ARM ach o tym trolerach LPC2000 opisaliśmy w EP1/ martwić o prawidłowe wstawienie sy-
problemie możemy całkowicie zapo- 2006). Jak już wcześniej wspomniano gnatury, ponieważ jest ona uzupełniana
mnieć, ponieważ do dyspozycji mamy wektory wyjątków i wektor resetu zaj-
Tab. 6. Pamięć mikrokontrolera, start
obszar o praktycznie nieograniczonej mują pierwsze 64 bajty przestrzeni ad-
systemu, MAM (Memory Acceleration
pojemności. W dolnym obszarze pa- resowej CPU. Aby umożliwić działanie
Module)
mięci począwszy od adresu 0 znajduje programu w innym obszarze niż obszar
Układy peryferyjne
4,0 GB 0xFFFFFFFF
się pamięć Flash mikrokontrolera, która pamięci Flash musi istnieć możliwość
magistrali AHB
zajmuje 32/64/128/256/512 kB. Jest ona przeniesienia wektorów wyjątków pod
Układy peryferyjne
3,75 GB 0xF0000000
zorganizowana w postaci bloków o roz- inny adres. Przeniesienie tych wekto-
magistrali VPB
miarze 4 lub 32 kB. Każdy z bloków rów umożliwia rejestr MEMMAP. W za-
3,5 GB Zarezerwowane 0xE0000000
może być indywidualnie kasowany leżności od jego zawartości wektory
0x80000000
2,0 GB Bootloader
i zapisywany. Czas zapisu 256 bajtów mogą zostać umieszczone w obszarze
0x7FFFD000
pamięci Flash zajmuje ok. 1 ms. Ska- bootloadera (0x7FFFD000), w obszarze
0x7FFFCFFF
Zarezerwowane
sowanie zawartości całej pamięci zaj- pamięci RAM (0x40000000) lub w ob- 0x7FD02000
muje około 400 ms. Począwszy od ad- szarze pamięci Flash.
8 kB USB DMA 0x7FD01FFF
RAM (LPC2146/48) 0x7FD00000
resu 0x40000000 umieszczono pamięć Mamy więc możliwość wykonywa-
SRAM, która w zależności od mikro- nia programu zarówno z pamięci Flash 0x7FCFFFFF
Zarezerwowane
0x40008000
jak i z pamięci RAM, jednak ta druga
32 kB SRAM 0x40007FFF
opcja będzie stosunkowo rzadko wyko-
(LPC2136/38/46/48) 0x40004000
rzystywana, głównie do debugowania
16 kB SRAM 0x40003FFF
niewielkich programów.
(LPC2132/34/42/44) 0x40002000
Podczas zerowania mikrokontrolera
8 kB SRAM 0x40001FFF
najpierw mapowany jest obszar pamię-
(LPC2131/41) 0x40000000
ci bootloadera, co powoduje urucho-
0x3FFFFFFF
1,0 GB Zarezerwowane
mienie programu ładującego zawartego
0x00080000
na stałe w pamięci ROM. Na początku
512 kB Flash 0x0007FFFF
program bada przyczynę zerowania mi-
(LPC2138/48) 0x00040000
krokontrolera i jeżeli okaże się, że ze-
256 kB Flash 0x0003FFFF
rowanie nastąpiło wskutek wymuszenia
(LPC2136/46) 0x00020000
stanu niskiego na linii RESET, badany
128 kB Flash 0x0001FFFF
(LPC2134/36) 0x00010000
jest stan linii P0.14. Jeżeli port P0.14
znajduje się w stanie niskim, wówczas 64 kB Flash 0x0000FFFF
(LPC2132/42) 0x00008000
uruchamiany jest dalszy ciąg programu
32 kB Flash 0x00007FFF
ładującego. W przeciwnym przypadku
0 GB
(LPC2131/LPC2141) 0x00000000
Rys. 10. program ładujący uruchamia kod zawar-
Elektronika Praktyczna 4/2006
105
K U R S
automatycznie przez program LPC2000 częstotliwością w mikrokontroler wbu- kowe rejestry pomocnicze umożliwia-
Flash Utility służący do programowa- dowano układ pośredniczący pomiędzy ją w zasadzie znaczne przyśpieszenie
nia pamięci Flash mikrokontrolera. pamięcią Flash a magistralą lokalną. wykonania sekwencyjnego kodu z pa-
Powyżej obszaru bootloadera od adre- Układ ten nosi nazwę MAM (Memory mięci Flash. Pozwala to więc na pra-
su 0xE000000 umieszczone są rejestry Acceleration Module) i umożliwia dużo cę procesora z maksymalną prędkością
urządzeń peryferyjnych podłączonych szybsze wykonywanie kodu programu 60 MHz z 20 MHz pamięci Flash bez
do magistrali VBP, natomiast od adre- niż wynika to z maksymalnej szybkości dodatkowych cykli oczekiwania. Jed-
su 0xF000000 znajdują się rejestry SFR pracy pamięci. Na rys. 11 przedstawio- nostka MAM jest zupełnie przezro-
urządzeń podłączonych do magistrali no uproszczony schemat blokowy kon- czysta dla programisty, a jej obsługa
AHB. W dużej części mikrokontrolerów trolera MAM sprowadza się jedynie do konfiguracji
dostęp do rejestrów urządzeń peryferyj- Kluczem działania modułu MAM dwóch rejestrów podczas inicjalizacji
nych odbywa się za pomocą specjal- jest 128 bitowa organizacja pamięci systemu. Kontroler MAM może pra-
nych rozkazów. W ARM ach wszystkie Flash mikrokontrolera, co pozwala od- cować w trzech trybach: w trybie cał-
rejestry SFR urządzeń umieszczone czytać w jednym cyklu cztery 32 bi- kowitego wyłączenia, wówczas CPU
są w obszarze pamięci, co znacznie towe rozkazy ARM lub osiem 16 bi- odczytuje rozkazy bezpośrednio z pa-
upraszcza dostęp do tych rejestrów. towych rozkazów THUMB. Ponadto mięci Flash mikrokontrolera; w trybie
Jeżeli program odwoła się do adresu, kontroler zawiera trzy dodatkowe bu- częściowego włączenia, wówczas roz-
który nie jest przypisany do urządze- fory pomocnicze: Data buffer, Prefetch gałęzienia i stałe ładowane są bezpo-
nia peryferyjnego lub obszaru pamięci, buffer oraz Branch Tail buffer każdy średnio z pamięci Flash, natomiast kod
generowany jest wyjątek Abort. Przy o szerokości 128 bitów. Podczas nor- sekwencyjny wczytywany jest za po-
okazji opisu pamięci warto wspomnieć malnego wykonania Prefetch Buffer za- średnictwem MAM; w trybie całkowite-
że pamięć Flash mikrokontrolera może wiera zazwyczaj bieżąco wykonywaną go załączenia dostęp do pamięci Flash
być programowana również za pomocą instrukcję, natomiast Branch Tail buf- odbywa się zawsze za pośrednictwem
interfejsu JTAG. Maksymalna częstotli- fer poprzednio wykonywane instrukcje. kontrolera MAM. Warto podkreślić
wość pracy pamięci Flash mikrokontro- W przypadku, gdy instrukcja pobierana że po wyzerowaniu mikrokontrolera,
lera wynosi 20 MHz. Jest to wartość przez CPU znajduje się już w buforze, MAM jest wyłączony i CPU wykonuje
trzykrotnie mniejsza niż maksymalna nie musi być ona pobierana z pamięci rozkazy bezpośrednio z pamięci Flash.
częstotliwość pracy mikrokontrolera. Flash. Zastosowanie 4 krotnie szerszej Lucjan Bryndza, EP
Aby umożliwić pracę rdzenia z pełną magistrali danych pamięci oraz dodat- lucjan.bryndza@ep.com.pl
Elektronika Praktyczna 4/2006
106


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 cz3
Mikrokontrolery ARM cz6
Mikrokontrolery ARM cz22
Mikrokontrolery ARM cz18
Mikrokontrolery ARM cz18
Mikrokontrolery ARM cz11
Mikrokontrolery ARM cz13
Mikrokontrolery ARM cz17
Mikrokontrolery ARM cz20
Mikrokontrolery ARM cz7
Mikrokontrolery ARM cz9

więcej podobnych podstron