Než začneme probírat podrobnosti týkající se jader ARM Cortex, tak bychom měli porovnat jak se dvě, dle mého mínění nejvíce perspektivní, jádra navzájem liší. Obě jádra jsou založena na technologii ARM, ale uvidíme, že se mohou navzájem lišit a zároveň si být podobné.

Co tvrdí sdružení ARM?


Nahoře vidíte porovnání jader Cortex M0 a Cortex M3. Detaily vidět nejsou, ale je na první pohled zřejmé, že jádro ARM Cortex M0 je jednodušší, než u jeho brášky M3.

Cortex-M3 Cortex-M0
Architektura ARMv7-M (Harvard) ARMv6-M (Von Neumann)
Počet hradel v jádře 43 tisíc 12 tisíc
ISA Support Thumb®/Thumb-2 Thumb® Thumb-2 technology
Pipeline 3-stage + branch speculation 3-stage
Data path 32 bits 32 bits
Dhrystone 1.25 DMIPS/MHz 0.9 DMIPS/MHz
Memory Protection Možnost až 8 chráněných oblastí paměti  nedisponuje touto možností
Interrupts NMI + 1 to 240 physical interrupts NMI + 1 to 32 physical interrupts
Priority přerušení 256 4
Interrupt Latency 12 cycles 16 cycles
Inter-Interrupt Latency 6 cycles 12 cycles (?)
Interrupt Priority Levels  256 úrovní přerušení 4 úrovně přerušení
Wake-up
Interrupt Controller
Max 240 Wake-up
přerušení
Max 13 Wake-up přerušení
Bit Manipulation Integrated Instructions &
Bit Banding
jen podmnožina
Debug JTAG & Serial-Wire Debug Ports. JTAG or Serial-Wire Debug ports
Spotřeba 210µW/MHz 85µW/MHz


Pro porovnání - jádro 80C51 má 8 tisíc hradel!



Ale to je teorie od sdružení ARM, ale jak je to ve skutečnosti?

Podívejme se nejdřív, jak vypadá reálná implementace "jednoduššího" jádra ARM Cortex M0 v procesoru NXP LCP1113, obrázek následuje. Poznámka - ten druhý sériový port je k dispozici jen u mcu, které jsou v package LQFP48, což je ale dobře, to jde ještě zapájet.



A teď si to srovnejme s implementací jádra ARM Cortex M3 v procesoru NXP LCP1311: (následující schema)



Když budeme pořádně hledat, tak drobnosti najdeme, například ten výše zmíněný druhý sériový port, a to, že CPU u Cortex M3 je spojen s pamětí nejen přes system bus, ale též přes I-Code a D-Code bus. Ve skutečnosti se hlavní změny ukrývají uvnitř. Potvrzuje se známé úsloví, že čert je skryt v detailech. Vydáme se tedy na lov čerta a porovnáme instrukční soubory obou jader.



Co z tohoto přehledu instrukcí vidíme?

Úplně v prostředku jsou se světlým pozadím a zeleným textem znázorněny instrukce, které jsou obsaženy v jádře ARM7TDMI. Vidíme, že je jich silná podmnožina, proti těm, které umí jádro Cortex M3, které umí i instrukce ve středu vlevo, jsou světlým písmem na zeleném pozadí. A samotné jádro ARM Cortex M0 umí jen podmnožinu instrukcí většího jádra Cortex M3, což jsou i všechny ostatní instrukce na modrém pozadí. Co to znamená? Znamená to, že program pro Cortex M0 v binární, již přeložené podobě, umí zpracovat i Cortex M3, tedy že M0 je binárně kompatibilní s M3! Ale je zřejmé, že když se bude program překládat ze zdrojové podoby v jazyku C, tak následný běh na jádře Cortex M3 bude mnohem efektivnější, díky tomu, že překladač může využít i další instrukce (které se hadrwerově vykonávají v jádře) a nemusí tyto instrukce obcházet pomocí nahrazování větším počtem jednodušších instrukcí, tak, jak to musí činit při překladu pro jádro Cortex M0.
Nicméně v praxi nám to může být jedno, výkon mcu je tak velký, že pro jednodušší aplikace, bohatě vyhoví výkon jádra Cortex M0. Samotné jádro má cca 5 krát větší výkon na MHz než jádro 89C51, ale na rozdíl od něj může být jádro Cortex M0 taktováno až na 50 MHz. Další skutečností, kterou nám přináší rozšíření instrukčního souboru je to, že nyní už není třeba ani "čuchnout" k assembleru, pokud nemáme zájem. Starší jádro ARM7TDMI vyžadovalo i použití úseků kódu v assembleru (například při psaní handlerů na zpracování přerušení), což mnoho "pojídačů koláčů" nevydýchalo. Nyní mohou být v klidu, u jader Cortex M0 i M3, mohou být i komplikované aplikace napsány celé v jazyku C.


Jací výrobci nám mohou dnes nabídnout jádro Cortex M0 a M3?


Luminary Micro/TI

Luminary Micro je první výrobce jader Cortex M3. Tato dříve malá a neznámá firma se velmi výrazně prosadila na trhu a nakonec byla zakoupena formou Texas Instruments.
Cortex-M3 jádra mají následující produktové linie:

100/300/600/800/1000/2000/3000/5000/6000/8000/9000.

Poznámka: aby jste se v tom šíleným počtu řad vyznali, tak jsem připravil i další článek s product selectorem pro procesory Stellaris. Pokud se tedy chcete seznámit s šíří produkce Luminary Micro, tak směle klikněte na příslušný článek z dnešního dne.

Je to velmi široká nabídka těžící z relativně dlouhodobých zkušeností Luminary Micro s jádrem Cortex M3. procesory jsou vybaveny širokou nabídkou periferií. Zejména jde o:

Standard Digital:
GPIO, UART, SSI, I2C, PWM, CCP,

Standard Analog:
Analog Comparator, ADC,

Rozšířený Digital:
Quadrature Encoder, I2S, USB host/device/OTG at full speed, EPI to interface external memories and peripherals like SDRAM, host interface, IEEE1566 PTP (Precise Time Protocol), CAN, Ethernet MAC, RTC and two watch dog timers with independent time base.

Rozšířený Analog:
Hibernate for battery operation, Ethernet PHY and LDO.


ST Microelectronics

STM je velmi silná v oblasti trhu s ASIC (application-specific integrated circuit = integrovaný obvod pro specifické aplikace). I přesto, že má STM k dspozici spoustu různě modifikovaných jader, tak nen příliš silná v oblasti mcu pro obecné použití. To se snaží směnit uvedením linie STM32 na trh.

STM nabízí řadu STM32 se zvláštním jmennou konvencí. Každá část má tři deriváty: STM32F101/102/103, což znamená běžná řada, USB řada a výkonná řada. A každá část má dvě přípony. První z nich je kódování typu package, zakódované v písmenu T / C / R / V / Z pro 36/48/64/100/144 vývodů. Druhá (a poslední) přípona já dána kapcacitou paměti , která je zakódována 4/6/8/B/C/D/E pro 16KB/32KB/64KB/128KB/256KB/512KB.

STM má svůj vlastní set periférií pro jádra Cortex M3:
SPI, USART with IrDA and ISO7816 features, SDIO, Ethernet MAC 10/100, and I2S.


NXP

Jedině od NXP můžeme v současnosti získat jádra Cortex M0 (a také další jádra, mezi jinými i Cortex M3). NXP velmi agresivně vstupuje na trh 32 bitových mcu s jádry ARM. Nabízejí Cortex-M3 ve verzi 2 pod označením LPC1300/1700 a jádra Cortex-M0 pod označením LPC1100. LPC1300 je "entry level" a LPC1700 je "high performance", ale například i v řadě LCP1300 najdeme mcu s integrovaným USB interface. Na druhé straně LPC1700, je nejrychlejší mcu s jádrem Cortex-M3 (100MHz).

LPC1700 má integrováno mnoho periferií:
Ethernet MAC, CAN bus, I2S, motor control and analog features.


Atmel

SAM3U (U1/2/4) od výrobce ATEML je prvním mcu s jádrem Cortex-M3, které má integrován high-speed 480Mbps USB + PHY. Disponuje maximální frekvencí 96MHz a architekturou s vysokou datovou propustností díky 5-vrstvové AHB matici s 22 DMA kanály. Flash má podobu duální banky, což umožňuje bezpečné bootování programu.


Obecná poznámka na konec:
Teď, když konečně máme prima možnost zjistit, kolik lidí se o který článek zajímá, tak se opravdu zamýšlím, nakolik máme ARM mcu preferovat. Ono to vypadá, že na zprávu o zahájení prodeje Katalogu GME 2010 se podívá mnoho set lidí, ale na text o ARM procesoru je podívá max 200 lidí. Což je tedy dost málo v porovnání s naprosto opačným poměrem toho, kolik práce dají ty dva články napsat Možná mlčící většina, která nehlasuje v anketách a nijak se neprojevuje, má zřejmě zájem o články typu "Jemný úvod do Ohmova zákona" nebo "Jednoduché zapojení žárovky s vypínačem a ploché baterie" a články o ARM jsou pro ně, něco jako vědecká fantastika. Otázkou je, zda přijít o tyto čtenáře tím, že budeme moderní a progresivní a získáme několik málo nových čtenářů, kteří se zajímají o novinky a moderní směry v elektronice. Nebo zda upřednostníme tuto opravdu "nejširší" veřejnost a budeme honit počet návštěvníků, bez ohledu na to, že opakujeme tisíckrát probraná zapojení s jedním tranzistorem Chjo, opravdu těžká volba!