Na rynku mik
rokontrolerów obserwujemy obecnie duże zmiany. Po długich latach królowania 8-bitowców do walki stają z nimi nowe mikrokontrolery z rdzeniami 16- i 32-bitowymi. Wszystko dzięki nowym opracowaniom architektur rdzeni. Głównym sprawcą tych zmian jest firma ARM Holdings (początkowo Advanced RISC Machines). Wszystko zaczęło się od opracowania w 1993 roku rdzenia ARM7TDMI (architektura ARMv4), który obecnie jest już coraz rzadziej stosowany, gdyż wypiera go z rynku jego następca Cortex-M3 (architektura ARMv7). Niezwykłe jest przede wszystkim to, że dawniej każdy producent mikrokontrolerów miał opracowany własny rdzeń, który stosował w produkowanych przez siebie układach. Obecnie największe firmy produkujące półprzewodniki, takie jak: TI, STMicroelectronics, Freescale, Maxim itd. są klientami firmy ARM Holdings, a ich produkty bazują na rdzeniach ARM7, ARM9, oraz Cortex. Rdzenie z rodziny Cortex, dzięki dobrze przemyślanej architekturze osiągają bardzo dobre wyniki, jednocześnie pobierając niewiele energii. Dodatkowym atutem jest to, że są zbudowane ze stosunkowo niewielkiej liczby bramek, co czyni je bardzo łatwymi w budowie, a zarazem tanimi. Dzięki tym wszystkim zaletom mogą konkurować z mocno ustawionymi na rynku mikrokontrolerami 8-bitowymi.
Rodzina Cortex
Rodzina Cortex jest najnowszym opracowaniem firmy ARM. W jej skład wchodzą 3 rodzaje rdzeni (wszystkie oparte na tej samej architekturze – ARMv7):
- Cortex-A – przeznaczone do aplikacji wykorzystujących systemy operacyjne, posiadają MMU (Cortex-A5, Cortex-A8, Cortex-A9)
- Cortex-R – przeznaczone do stosowania w systemach czasu rzeczywistego (Cortex-R4, Cortex-R4F)
- Cortex-M – zoptymalizowane cenowo i przeznaczone do szerokiego stosowania w mikrokontrolerach i typowych aplikacjach (Cortex-M0, Cortex-M1, Cortex-M3)
Wszystkie rdzenie obsługują nowy zestaw instrukcji Thumb-2, który umożliwia osiąganie dużych wydajności, przy niskiej objętości kodu programu. Łączy on w sobie zalety zestawu ARM i Thumb. Kod zajmuję do 31% mniej niż w przypadku zestawu ARM i jest wykonywany do 38% szybciej niż zapisany w Thumb.
Rdzenie Cortex-M
Linia Cortex-M została stworzona do typowych zastosowań w motoryzacji, medycynie, komunikacji bezprzewodowej (ZigBee, Bluetooth), oraz przemyśle. W jej skład wchodzą obecnie 3 rdzenie:
- Cortex-M3 – do stosowania w mikrokontrolerach
- Cortex-M1 – rdzeń miękki zaprojektowany specjalnie do implementacji w FPGA
- Cortex-M0 – rdzeń o bardzo niskim poborze energii – najmniejszy z zaprojektowanych przez firmę ARM
Wszystkie te rdzenie są kompatybilne, co umożliwia łatwe przenoszenie kodu z jednego na drugi. Firma ARM opracowała, we współpracy z producentami półprzewodników, specjalny standard CMSIS (Cortex Microcontroller Software Interface Standard), który ma być warstwą między sprzętem, a programem użytkownika. Umożliwi to łatwe przenoszenie aplikacji na inne rdzenie i skróci czas potrzebny na poznawanie nowych rodzin, oraz czas projektowania nowych urządzeń.
Główny bohater artykułu – Cortex-M3
Zaskakująco dobry stosunek możliwości do ceny uzyskano w rdzeniach Cortex-M3 dzięki wielu zaawansowanym rozwiązaniom. Najważniejsze z nich to: 3-poziomowe kolejkowanie instrukcji z mechanizmem przewidywania rozgałęzień, skrócony czas wykonywania większości operacji do jednego cyklu, oraz zastosowanie nowego zestawu instrukcji Thumb-2. Inne, te bardzie istotne, przedstawiam poniżej (tłumaczenie danych ze strony producenta z własnymi komentarzami):
- hierarchiczna struktura z dobrze dopasowanymi peryferiami
- CM3Core
- architektura Harvardzka – oddzielne magistrale programu i danych
- Nested Vectored Interrupt Controller (NVIC) – poprawiony kontroler przerwań którego obsługa jest dużo prostsza w stosunku do ARM7
- do 240 programowanych przerwań; do 256 poziomów priorytetów
- małe opóźnienia obsługi przerwań dzięki zastosowaniu mechanizmów tail chaining i late arrivals
- wywłaszczanie przerwań o niższym priorytecie
- Memory Protection Unit (MPU)
- Debug Port ( SW-DP or SWJ-DP )
- możliwość debugowania przez Serial Wire lub JTAG
- CM3Core
- mnożenie w jednym cyklu i sprzętowe dzielenie
- 4GB przestrzeń adresowa
- predefiniowane adresy dla pamięci programu, pamięci danych, urządzeń zewnętrznych i peryferiów
- możliwość operowania na pojedynczych bitach dzięki technice bit banding
- dostęp do pamięci programu w jednym cyklu
- zintegrowane tryby obniżonego poboru energii
Porównanie Cortex-M3 z ARM7TDMI
Rdzeń Cortex-M3 jest następcą popularnego do tej pory ARM7TDMI. Inżynierzy z ARM Holdings podczas projektowania uwzględnili uwagi użytkowników, przede wszystkim dotyczące dość trudnego w obsłudze kontrolera przerwań. W nowym rdzeniu wprowadzono wiele poprawek, które sprawiają, że Cortex-M3 jest rdzeniem nowej generacji. Nowy zestaw instrukcji, poprawiony kontroler przerwań, krótkie i deterministyczne czasy obsługi przerwań, oraz zintegrowane peryferia pozwalają osiągnąć dużą wydajność, przy małym poborze mocy. Poniżej przedstawiam tabelkę porównawczą przygotowaną przez firmę ARM:
| Features | ARM7TDMI | ARM Cortex-M3 |
| Architecture | ARMv4T (von Neumann | ARMv7-M (Harvard) |
| ISA Support | Thumb / ARM | Thumb / Thumb-2 |
| Pipeline | 3-stage | 3-stage + branch speculation |
| Interrupts | FIQ / IRQ | NMI +1 to 240 physical interrupts |
| Interrupt Latency | 24 – 42 cycles | 12 cycles |
| Inter-Interrupt Latency | 24 cycles | 6 cycles |
| Sleep Modes | None | Integrated |
| Memory Protection | None | 8 region MPU |
| Dhrystone | 0.95 DMIPS/MHz (ARM) 0.74 DMIPS/MHz (Thumb) |
1.25 DMIPS/MHz |
| Power Consumption | 0.28mW/MHz | 0.19mW/MHz |
| Area | 0.62mm2 (Core only) | 0.86mm2 (core + peripherals)* |
Jeszcze jestem winny małe sprostowanie… Miało być o rodzinie STM32, a było o Cortex’ach… Po prostu doszedłem do wniosku, że trzeba zacząć od początku :P Następny wpis będzie już na pewno o STM32.

słitaśny artcik :)
Układy z rodziny Cortex są wg. moich informacji używane jako GPU w co bardziej zaawansowanych urządzeniach mobilnych (telefony, tablety). Ciekaw jestem jak te powszechnie dostępne mają się do tych produkowanych na zamówienie dla producentów sprzętu.
Świetny blog, tak trzymaj !