You are on page 1of 2

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
się pamięć Flash mikrokontrolera, która pamięci Flash musi istnieć możliwość 4,0 GB 0xFFFFFFFF
magistrali AHB
zajmuje 32/64/128/256/512 kB. Jest ona przeniesienia wektorów wyjątków pod Układy peryferyjne
zorganizowana w postaci bloków o roz- inny adres. Przeniesienie tych wekto- 3,75 GB 0xF0000000
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
i zapisywany. Czas zapisu 256 bajtów mogą zostać umieszczone w obszarze 2,0 GB Bootloader
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
resu 0x40000000 umieszczono pamięć Mamy więc możliwość wykonywa- RAM (LPC2146/48) 0x7FD00000
SRAM, która w zależności od mikro- nia programu zarówno z pamięci Flash Zarezerwowane
0x7FCFFFFF
jak i z pamięci RAM, jednak ta druga 0x40008000
opcja będzie stosunkowo rzadko wyko- 32 kB SRAM 0x40007FFF
rzystywana, głównie do debugowania (LPC2136/38/46/48) 0x40004000
niewielkich programów. 16 kB SRAM 0x40003FFF
(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
mienie programu ładującego zawartego 1,0 GB Zarezerwowane
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
jest stan linii P0.14. Jeżeli port P0.14 (LPC2134/36) 0x00010000
znajduje się w stanie niskim, wówczas 64 kB Flash 0x0000FFFF
uruchamiany jest dalszy ciąg programu (LPC2132/42) 0x00008000
ładującego. W przeciwnym przypadku 32 kB Flash 0x00007FFF
0 GB
Rys. 10. program ładujący uruchamia kod zawar- (LPC2131/LPC2141) 0x00000000

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 przeźro-
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

106 Elektronika Praktyczna 4/2006

You might also like