Marcin Gąsiorek

Transkrypt

Marcin Gąsiorek
Marcin Gąsiorek – V rok
Koło Naukowe Techniki Cyfrowej
dr inż. Wojciech Mysiński – opiekun naukowy
Cortex-M3 ST Microelectronics core processor capabilities
The paper presents the capabilities of the ARM Cortex-M3 as compared to other popular
architectures, 8 - and 32 - bit. In addition, microcontrollers are also presented ST Microelectronics
companies and their extended capabilities. This device sets new standards of
performance and cost, as well as being capable of low power operation and hard real-time control.
Możliwości procesorów z rdzeniem Cortex-M3 firmy ST Microelectronics
W artykule przedstawiono możliwości procesorów ARM Cortex-M3 na tle innych
popularnych architektur 8- i 32- bitowych. Oprócz tego zaprezentowane są również
mikrokontrolery firmy ST Microelectronics oraz ich rozbudowane możliwości. Mikrokontrolery
firmy ST Microelectronics wyznaczają nowe standardy uzyskiwania wysokiej wydajności w
stosunku do kosztów, pracy przy niskim poborze mocy i wszędzie tam gdzie stawia sie wysokie
wymagania dla systemów czasu rzeczywistego.
Keywords: Cortex-M3, STM32, interrupt, Thumb-2, ADC, Timery
Słowa kluczowe: Cortex-M3, STM32, przerwania, Thumb-2, ADC
1. Wprowadzenie
O tym, że mikrokontrolery już na stałe zagościły w naszym życiu nie trzeba chyba nikogo
przekonywać. Ich ciągły rozwój pozwala konstruktorom na stawianie sobie większych wyzwań jak
również ograniczenie kosztów projektu dzięki bogatemu wyposażeniu w urządzenia peryferyjne i
coraz lepiej zaprojektowane jednostki arytmetyczne.
Do najliczniejszej i najpopularniejszej grupy mikrokontrolerów należą na dzień dzisiejszy
jeszcze
8-bitowe AVR-y. Jednak są one wypierane przez ARM-y z 32-bitowym rdzeniem, a
dokładniej ARM7, ARM9 i Cortex-y. Głównym powodem zmiany mikrokontrolera z AVR na
ARM jest cena i możliwości: przykładowo popularna Atmega128 kosztuje ok 25zł 1, natomiast
STM32F100 (Cortex-M3) to koszt ok. 19zł1
1
Ceny z dnia 05.06.2010r
Tab.1 Porównanie przykładowych mikrokontrolerów AVR i ARM
Wyposażenie
Timery
Atmega128
2x8-bit
STM32F100
do 12 timerów, 16-bit (konfigurowalne)
2x16-bit
8-bit PWM
16-bit PWM
Interfejsy
SPI, USART, I2C
2xSPI, 2xI2C, 3xUSART
ADC
8-kanałowy, 10-cio bitowy 16-kanałowy, 12-bitowy
W powyższej tabeli przedstawiona jest tylko część atutów przykładowego mikrokontrolera z
rodziny ARM.
1.1 Dlaczego Cortex?
Cortex to następca popularnej architektury ARM7 i pochodnych ARM7. Rdzenie
Cortex charakteryzują się szybszym wykonywaniem programów przy takiej samej
częstotliwości taktowania jak starsze rdzenie, większą gęstością upakowania poleceń
(Thumb-2) oraz mniejszym poborem energii[5].
Cortex-y dzielą się na:
 Cortex-A series – przeznaczony dla wymagających aplikacji z systemami
operacyjnymi (Symbian, Linux i Windows), które wymagają dużych mocy
obliczeniowych, obsługi pamięci wirtualnej z MMU lub implementacji
interpreterów Javy.
 Cortex-R series – implementowane w systemach, gdzie krytyczny jest czas reakcji
(RTOS, ABS).
 Cortex-M series – zastosowanie konsumenckie i przemysłowe ze względu na cenę i
dużą wydajność.
Na rys. 1 przedstawione są wersje rdzeni pod kątem funkcjonalności i możliwości.
Można również zauważyć, że każda seria dzieli się na kolejne, z oznaczeniami cyfrowymi.
Warto tutaj wspomnieć że od 2010 roku rdzenie A9 zostały wzbogacone o wersje core duo.
Rys. 1 Porównanie wersji rdzeni Cortex i ARM
Ponieważ artykuł dotyczy rodziny M3, przybliżę nieco całą serię M i następnie
skupię sie już tylko i wyłącznie na Cortex-ach M3.
W skład serii M wchodzą obecnie cztery rdzenie:
 M0 – rdzeń o bardzo małych rozmiarach i najbardziej energooszczędny.
 M1 – zaprojektowany z myślą o implementacji w układach FPGA (rdzeń miękki).
 M3 – do stosowania w mikrokontrolerach (główny bohater).
 M4 – 32-bit DSC – kontrola i przetwarzanie sygnałów cyfrowych, sterowanie
silnikami, wbudowane systemy audio.
Rys. 2 Kompatybilność kodu dla różnych rdzeni Cortex
2. Rdzeń Cortex-M3
Zaskakująco dobry stosunek możliwości do ceny uzyskano w rdzeniach Cortex -M3
dzięki wielu zaawansowanym narzędziom, np. 3-poziomowe kolejkowanie instrukcji ze
spekulacyjnym mechanizmem przewidywania rozgałęzień, skrócony czas wykonywania
większości operacji do jednego cyklu, nowy zestaw instrukcji Thumb -2 (rys. 5). Pozostałe
właściwości rdzenia to[1][4][5]:
• Architektura Harvardzka - takie podejście pozwala na dostęp do pamięci programu
i danych w tym samym czasie.
• Nested vectored interrupt controller NVIC – poprawiony, prostszy w obsłudze
sprzętowy kontroler przerwań (poprawiony na życzenie programistów)
• Do 240 programowanych przerwań + do 256 poziomów priorytetów
(zmiennych)
• Małe opóźnienia obsługi przerwań dzięki zastosowanym mechanizmom
Tail-Chaining (rys. 3), Late Arrival (rys. 4) oraz przerwaniu operacji
POP (rys. 5).
• Wywłaszczenie przerwań o niższym priorytecie
• Obsługa przerwań zagnieżdżonych
• Mnożenie w jednym cyklu i sprzętowe dzielenie
• Do 4GB przestrzeni adresowej
• Możliwość operowania na pojedynczych bitach dzięki technice bit -banding 2
• Dostęp do pamięci programu w jednym cyklu
• Zintegrowane tryby obniżonego poboru energii.
2
W technice tej nie ma konieczności odczytu całego słowa, przepisywania go do rejestru,
zamieniania interesującego nas bitu i ponownego zapisania do pamięci jak to przebiegało w
innych mikrokontrolerach. Jeśli potrzebujemy zamienid (lub odczytad) jeden bit, zamieniamy go
bezpośrednio w pamięci, dlatego technika ta została również nazwana "pamięcią o dostępie
atomowym".
Rys. 3 a) klasyczna obsługa późniejszego przerwania, b) Tail-chaining
(kolejkowanie przerwań), po obsłudze wcześniejszego przerwania omijana jest
operacja ściągana ze stosu i ponownego wkładania na stos bieżącego procesu.
Rys. 4 a) standardowa obsługa przerwania, b) Late arrival (obsługa późniejszego
przerwania), kiedy podczas obsługi przerwania o niższym priorytecie nadejdzie
przerwanie o wyższym priorytecie, eliminowana jest jedna zbędna operacja
odkładania ponownie na stos bieżącego procesu, a co za tym idzie omijana jest jedna
zbędna operacja zdejmowania ze stosu.
Rys. 5 a) standardowa obsługa przerwania, b) jeśli podczas zdejmowania ze stosu
zostanie zgłoszone przerwanie, operacja ta zostanie przerwana w ciagu 1-12 cykli,
następnie po wykonaniu mechanizmu Tail-chaining zostanie obsłużone przerwanie, bez
zbędnej procedury zdejmowania ze stosu.
Najważniejszą zaletą rdzeni Cortex-M3 jest zdolność do obsługi instrukcji na danych
16- i 32-bitowych bez konieczności stosowania jakichkolwiek zabiegów.
Takie
rozwiązanie pozwoliło na zmniejszenie objętości kodu wynikowego oraz zwiększenie
wypadkowej prędkości wykonywania programu, a wszystko to zostało osiągnięte dzięki
nowemu zestawowi instrukcji Thumb-2.
Rys. 6 Porównanie wydajności i objętości kodu wynikowego dla zestawu instru kcji
ARM (32-bit), Thumb (16-bit) oraz Thumb-2 (16-, 32-bit)
Tab. 2 Porównanie mikrokontrolerów ARM z Cortex-ami
Cortex-M3
ARM7
Harvard
von Neumann
Lista instrukcji
Thumb/Thumb-2
ARM/Thumb
Prędkość wykonywania
poleceń
1.25 DMIPS/MHz
Max. 0.95 DMIPS/MHz (ARM)
NMI+1-240
FIQ/IRQ
Opóźnienie obsługi
przerwania
12 cykli
24-42 cykli
Minimalny odstęp
pomiędzy obsługą
kolejnych przerwań
6 cykli
24 cykle
wbudowany
brak
do 8 obszarów (MPU)
brak
Pipeline
3-stopniowy +
przewidywanie
rozgałęzień
3-stopniowy
Pobór mocy
0.19 mW/MHz
0.28 mW/MHz
Architektura
Przerwania
Tryb oszczędzania energii
Ochrona pamięci
3. STM32Fx
Producent mikrokontrolerów STM32, przygotował odpowiednie podrodziny, z których
możemy dobrać odpowiedni mikrokontroler dla naszych potrzeb[3]:
Value Line (STM32F100) – najtańsze w rodzinie STM32 mikrokontrolery oferowane w
czterech wersjach obudów, wyposażone w pamięci programu Flash o pojemności do 128
kB, SRAM do 8 kB taktowane sygnałem zegarowym o maksymalnej częstotliwości 24
MHz, wyposażone we wszystkie standardowe interfejsy komunikacyjne oraz bogaty
zestaw bloków peryferyjnych, w tym przetwornik A/C, dwukanałowy C/A oraz - jako
pierwszy mikrokontroler z rdzeniem Cortex-M3 - interfejs HDMI-CEC,
Access Line (STM32F101) – popularne mikrokontrolery oferowane w szerokiej gamie
obudów, wyposażone w pamięci programu Flash o pojemności do 512 kB, taktowane
sygnałem zegarowym o maksymalnej częstotliwości 36 MHz, wyposażone we wszystkie
standardowe interfejsy komunikacyjne oraz bogaty zestaw bloków peryferyjnych, w tym
przetwornik A/C,
USB Access Line (STM32F102) – mikrokontrolery oferowane w obudowach o liczbie
wyprowadzeń 48 lub 64, o funkcjonalności i wyposażeniu zbliżonym do podrodziny
STM32F101 (maksymalna częstotliwość taktowania wynosi 48 MHz), pamięci Flash o
pojemności do 128 kB, dodatkowo wyposażone w interfejs USB device (Full Speed),
Performance Line (STM32F103) – mikrokontrolery o bogatszym wyposażeniu niż wersje
F101 i F102, przystosowane do taktowania sygnałem o częstotliwości do 72 MHz, mają
wbudowane m.in. interfejsy SDIO, CAN, I2S oraz timery PWM (mogą sterować pracą
silników elektrycznych), dostępne we wszystkich wariantach obudów z pamięciami
programu o pojemności do 512 kB,
Connectivity Line (STM32F105/107) – najnowsza grupa mikrokontrolerów w rodzinie
STM32, wyposażona w interfejs USB-OTG oraz (wyłącznie wersje F107) ethernetowy
MAC z możliwością obsługi standardu IEEE1588 (patrz ramka). Mikrokontrolery z tej
grupy wyposażono w CPU identyczne z zastosowanym w F103 (taktowanie do 72 MHz),
dwa interfejsy I2S, dwa interfejsy CAN oraz wiele standardowych interfejsów
komunikacyjnych.
Rys. 7 Uproszczone schematy blokowe podrodzin mikrokontrolerów.
Rys. 8 Uproszczona architektura mikrokontrolera z rodziny STM32
Na rys. 8 została przedstawiona podstawowa architektura wewnętrzna mikrokontrolera z
rodziny STM32[6]. Można tutaj zauważyć 2 szyny danych APB1 i APB2 gdzie szyna APB1 jest
taktowana z częstotliwością 36MHz a APB2 z maksymalną częstotliwością rdzenia (na ogół
72MHz). Dodatkowo w STM32 zastosowano szynę danych BusMatrix, do której podłączony jest
rdzeń, kontroler DMA, pamięci SRMA i FLASH, oraz wymienione wyżej szyny danych.
Kontroler DMA umożliwia transmisję danych z urządzeń peryferyjnych do pamięci, z pamięci do
urządzeń peryferyjnych i z pamięci do pamięci bez zbędnego obciążenia rdzenia. Ponieważ rdzeń i
kontroler DMA korzystają z tej samej szyny, przewidzianych jest kilka algorytmów arbitrażu, w
celu uniknięcia zablokowania szyny, jednym z nich jest algorytm karuzelowy.
W zasadzie na wymienionych powyżej częściach składowych architektury mikrokontrolera
STM32 można by zakwalifikować ten model do przeciętnych. Jednakże producent, zadbał o
dodatkowe atuty, które wyróżniają go z Cortex-ów.
3.1 Porty wejścia/wyjścia
Porty wejść/wyjść mogą pracować w jednym z sześciu trybów[4]:
-jako linie wejściowe:
•bez podciągania „pływające”
•z podciąganiem do zasilania (pull-up)
•z podciąganiem do masy (pull-down)
•analogowe
-jako linie wyjściowe
•z otwartym drenem
•symetryczne (push-pull)
Dodatkowo producent dał możliwość konfiguracji częstotliwości wyjść (50MHz, 10MHz i 2MHz
co odpowiada czasom narastania 5ns, 25ns, 125ns). Czynnik ten ma ogromne znaczenie podczas
uwzględniania w projekcie kompatybilności elektromagnetycznej. Gdyby tego jeszcze było mało,
istnieje możliwość całkowitego lub częściowego remapingu 3 niektórych wyprowadzeń, głównie
wyjść timerów. Warto tutaj również wspomnieć, że każde wyprowadzenie mikrokontrolera
STM32 może działać jako źródło przerwania (EXTI).
3.2 Przetwornik A/C
Mikrokontrolery z rodziny STM32 wyposażono w co najmniej jeden 12-bitowy, 16kanałowy przetwornik A/C z czasem przetwarzania równym 1us (1MS/s). Przetworniki mogą
pracować w wielu trybach, konfigurowanych przez programistę, m.in. można dokonać
jednoczesnego pomiaru napięcia na wielu wejściach, lub skonfigurować dwa kanały przetwornika,
aby generował przerwanie przy za niskim lub zbyt wysokim poziomie napięcia.
3.3 Wektor przerwań
Do 43 maskowanych przerwań programowych o16 poziomach priorytetów
Krótkie i przewidywalne czasy obsługi przerwań
Wsparcie dla tail-chaining, late arrival
Automatyczne zachowywanie i odtwarzanie kontekstu, przy wchodzeniu i wychodzeniu
z procedury obsługi przerwania
Dużo łatwiejsza programowa implementacja wektora funkcji obsługi przerwań.
3
Dokładne informacje jak przemapowad wyprowadzenia oraz, na które piny można znaleźd w
nocie aplikacyjnej dla danej rodziny mikrokontrolerów STM32.
3.4 Układy czasowo-licznikowe
W mikrokontrolerach STM32 konstruktor ma do dyspozycji do 10 (16-bitowych) timerów
(wliczając w to SysTick4) mogących pracować w różnych konfiguracjach. Odpowiednio
skonfigurowane timery i ich kanały umożliwiają m.in. pomiar parametrów sygnału PWM,
generowanie sygnałów PWM, odbieranie sygnałów z czujników halla i enkoderów, pomiary czasu
trwania impulsów, formowanie pojedynczych impulsów. Dodatkowo niektóre wyjścia timerów
posiadają swoje komplementarne odpowiedniki, dzięki czemu można generować sygnały PWM z
czasem martwym lub do 8 sygnałów PWM (co jest dość istotne przy sterowaniu np. silnikiem
bezszczotkowym prądu stałego[1]).
Oprócz wymienionych wyżej, mikrokontrolery z rodziny STM32 posiadają wiele systemów
zabezpieczeń takich jak:
System nadzoru sygnału zegarowego5
Rejestry chronione przed utratą danych
Watchdog niezależny (IWDG)
Watchdog okienkowy (WWDG)
Mechanizmy te w znacznym stopniu wspomagają proces projektowania urządzeń, gdzie o
pomyłce nie ma mowy, jak również ważna jest stabilność systemu czasu rzeczywistego.
4. Bibliografia
[1]
[2]
[3]
[4]
[5]
[6]
4
K. Paprocki, Mikrokontrolery STM32 w praktyce, Legionowo 2009
http://www.st.com/mcu/inchtml-pages-stm32.html (10.06.2010)
http://www.st.com/mcu/familiesdocs-110.html (10.06.2010)
User Manual to STM32
http://www.hitex.com (10.06.2010)
The Insider's Guide To The STM32 ARM Based Microcontroller, Hitex 2008
Timer systemowy - dzięki niemu, można generowad przerwania w ściśle określonych odstępach
czasu. Jest to przydatna funkcja np. przy przełączaniu wątków w RTOS.
5
Kiedy uszkodzeniu ulegnie rezonator zewnętrzny, jego zadanie przejmie rezonator wewnętrzny.

Podobne dokumenty