česky english Vítejte, dnes je čtvrtek 21. listopad 2024

Platformová portabilita 32bitových mikrokontrolérů

Standardizace jednojádrové MCU platformy je v oboru vysoce žádaná, ale i v případě stejného jádra se návrháři stále potýkají s problémem připojení periférií a firmwaru.

Periférie jsou středobodem migrace

Většina návrhů začíná specifikací funkcí, které má systém uživateli nabídnout, a jak se k těmto funkcím dostat.

Bez názvu

Tím jsou dány potřebné obvody a on-chip periférie MCU k jejich ovládání. Pokud chce návrhář použít například průmyslové HMI rozhraní (člověk-stroj), bude muset MCU podporovat LCD dotykovou obrazovkou, LED diodami, zvukovou signalizací nebo jinou audio součástkou. MCU tak bude muset mít integrovaný řadič CAN pro komunikaci, AD převodník pro podporu dotykové obrazovky a PWM časovač pro zvukovou signalizaci. Čím má periférie větší funkčnost, tím méně externích obvodů potřebujete, což může snížit objem kódu, který musí návrhář napsat. Proto je k dosažení stejného výsledku snazší použít bzučák než nastavovat PWM.

Typicky bude návrhář potřebovat znát o jádru dva základní údaje: Je jádro dostatečně rychlé, aby na něm mohly běžet všechny softwarové úlohy potřebné pro zajištění funkcí finálního výrobku? Provádí všechny tyto úlohy efektivně? Pokud je odpověď na obě otázky „Ano“, potom se většina návrhářů příliš nezajímá o typ použitého jádra.

Zásadnější je objem softwaru a firmwaru, který lze pro podporu periférií přenést z jednoho jádra na druhé. Vzhledem k tomu, že 32bitový MCU kód bývá napsán v jazyce C, je většinou možné překompilovat tento kód na jakékoliv jádro. Avšak každý výrobce MCU má vlastnosti periférií a programovací modely, které jsou jedinečné pro jeho vlastní výrobky, bez ohledu na použité jádro. To je důvod, proč není portování kódu jednoduché.

Portování firmwaru

Každý výrobce MCU dodává firmwarovou knihovnu, která obsahuje kódy pro nastavení a provoz periférií, které jsou integrovány v jeho MCU. Jednotliví výrobci ale tyto periférie implementují různými způsoby, a každá periférie tak může mít odlišné vlastnosti. Z toho je zřejmé, že portování aplikace z jednoho MCU na druhý není snadný úkol.

Společnost ARM se s tímto problémem vypořádala definováním standardu pro vrstvu firmwarové abstrakce pod názvem Cortex™ Microcontroller Software Interface Standard (CMSIS). Tento standard převzali všichni výrobci MCU využívající jádra Cortex-M a používají ho ve svých firmwarových knihovnách. Tento standard ale neřeší problémy s portováním periférií, neposkytuje ani standard týkající se konvence proměnných nebo funkcí. Výsledkem je, že tento standard jen velmi málo šetří úsilí a práci potřebnou při portování aplikací mezi různými výrobci MCU s architekturou ARM.

Portabilní návrhy

I když výrobci MCU mohou používat stejné ARM jádro, není v jejich zájmu zjednodušit portabilitu na MCU jiného výrobce. Problém vytvoření portabilního návrhu se tím pádem přesouvá na návrháře. Aby byla portabilita snazší, může návrhář implementovat abstrakční vrstvu, která vytvoří standardní programovací rozhraní mezi MCU a periferním hardwarem a kódem aplikace. Existují minimálně dva způsoby, jak toho dosáhnout:

  • Můžeme vytvořit mezivrstvu nebo obal, který bude sloužit jako překladač mezi knihovnou periférií výrobce MCU a kódem aplikace. I když se jedná pravděpodobně o časově nejefektivnější řešení, znamená to přidání dalšího kódu do příkazových a datových cest.
  • Definování standardní funkce a variabilního pojmenovávacího schématu a jejich aplikace na knihovnu každé periférie. I když se vyhneme dalšímu kódu, může se jednat o časově hodně náročně řešení, především u komplexních periférií.

Portabilita musí být součástí vývojového procesu od samotného začátku. Kromě firmwaru/softwaru, je zde i otázka kompatibility vývodů, což při přechodu z jednoho výrobce MCU na druhého obvykle znamená přepracování návrhu desky plošných spojů. Také může být nutné vyměnit externí součástky, například kondenzátory a regulátory.

Reálná portabilita

Požadavek snadné portability mezi 32bitovými MCU od různých výrobců nebude splněn, dokud nebude vyřešena problematika portování periférií a knihoven firmwaru. Do té doby musejí návrháři nést zodpovědnost za portabilitu svých návrhů. Jedním ze způsobů jak to částečně řešit, je vybrat si MCU, který poskytuje snadnou migraci na jiný MCU v rámci produktové řady stejného výrobce.

Například společnost Microchip nedávno zjednodušila svou řadu kompilátorů C pomocí balíčku MPLAB® XC, který nabízí jeden kompilátor pro každou architekturu – 8, 16 a 32bitovou, a podporuje všechny PIC® MCU a dsPIC® Digital Signal Controller (DSC). Navíc, kromě rostoucí kompatibility mezi architekturami pro úsporu nákladů na vývoj kódu a kompatibility vývodů pro různé sady, tento balíček zjednodušuje návrh desek díky zaměnitelnosti součástek.

Zatímco návrháři čekají na standardní jádro (včetně standardních periférií a firmwaru), mohou si na začátku každého projektu alespoň ověřit potenciální úspěšnost svého návrhu na základě analýzy poměru cena/výkon migrace v rámci portfolia jednoho výrobce.

www.microchip.com