Fiecare proiect pentru o nouă aplicație necesită un microcontroler sau un microprocesor. Atunci când luați o decizie între cele două opțiuni, există câțiva factori de luat în considerare. Acest articol oferă o imagine de ansamblu asupra microprocesorului, microcontrolerului și a arhitecturilor eterogene. Atunci când se decide între un microprocesor (MPU) și un microcontroler (MCU), tipul de aplicație este adesea un factor critic. Selecția finală, pe de altă parte, depinde de criterii precum sistemul de operare și memoria. Cu toate acestea, uneori o combinație între cele două este justificată, având denumirea de arhitectură eterogenă.
Sistemul de operare
Un microprocesor este cea mai bună alegere pentru aplicații extinse, industriale cu calcul intensiv, precum și pentru aplicații de larg consum, care se bazează pe sisteme de operare precum Linux sau Android și necesită numeroase conexiuni de mare viteză sau utilizează interfețe de operator cu un domeniu de funcționare extins. În loc de un sistem de operare, majoritatea microcontrolerelor utilizează doar programare logică secvențială, care rulează programe aproape fără nicio intervenție umană, datorită buclelor secvențiale de procesare și a condițiilor de stare a mașinii. Cu toate acestea, multe microcontrolere performante pot dispune un sistem de operare în timp real (RTOS), cum ar fi FreeRTOS, pentru a răspunde proceselor cu timp de latență scăzut într-o manieră deterministă, în aplicațiile care necesită un comportament robust în timp real.
Embedded Linux s-a bucurat de un mare succes, fiind un sistem de operare universal, cu o mulțime de software-uri gratuite, suport hardware extins și un ecosistem în creștere. Un alt punct în plus: Nu există nicio taxă de utilizare sau de licență. Cu toate acestea, o aplicație care rulează cu Embedded Linux necesită cel puțin 300 până la 400 DMIPS (ARM-Dhrystone MIPS) ceea ce înseamnă ca un microprocesor este o alegere mai bună. În această aplicație, un microcontroler nu generează suficientă putere de calcul și nici nu este echipat cu suficientă memorie.
Dacă este un sistem de control complex sau unul critic din punct de vedere al controlului în timp, atunci un RTOS este util, dar necesită un microcontroler de înaltă performanță care să furnizeze cel puțin 50 DMIPS. Această cerință este mult mai mică decât necesarul pentru Embedded Linux; RTOS-urile tradiționale sunt proiectate să fie simple, astfel încât să funcționeze pe un microcontroler. Acest lucru are sens atunci când este vorba de un hardware de calcul în timp real, cum ar fi un sistem ABS pentru vehicule, unde o latență prea mare a răspunsului poate avea consecințe fatale. Chiar dacă trebuie susținute un număr mai mare de surse de întrerupere, funcții și interfețe standard de comunicații, este recomandat un microcontroler dotat cu RTOS.
Memoria
O altă diferență importantă între microprocesoare și microcontrolere constă, de obicei, în faptul că microprocesoarele se bazează pe o memorie externă pentru salvarea și executarea programului și nu – ca în cazul microcontrolerelor – pe o memorie flash încorporată. În microprocesoare, programul este în mod normal stocat pe o memorie non-volatilă, cum ar fi, de exemplu, eMMC sau Serial Flash. În momentul pornirii, programul este încărcat într-un DRAM extern și executat aici. Atât DRAM-ul, cât și memoria non-volatilă pot avea câteva sute de megabaiți sau chiar gigabaiți. Acest lucru înseamnă că microprocesoarele nu sunt limitate în ceea ce privește capacitatea memoriei, aproape niciodată. Un posibil dezavantaj este că proiectarea straturilor PCB poate fi mai complexă datorită memoriei externe.
Actualele microcontrolere performante, cum ar fi STM32H7 produse de STMicroelectronis, oferă o memorie programabilă de maxim 2 MB, care poate fi insuficientă pentru multe aplicații. Deoarece programul se bazează pe o memorie integrată (On-Chip), avantajul său este că realizează mult mai rapid procesele de pornire și resetare.
Puterea de calcul este un criteriu clasic de selecție. Cu toate acestea, delimitarea între microprocesoare și microcontrolere a devenit foarte confuză în această privință. De exemplu, acest lucru devine evident dacă aruncați o privire asupra arhitecturii ARM, una dintre cele mai distribuite de pe piața de microcontrolere și microprocesoare. ARM oferă diferite arhitecturi de procesare pentru diverse cerințe:
Cortex-A oferă cele mai înalte performanțe dintre toate și este deja optimizată pentru sisteme de operare complete. Acestea sunt destinate în principal pentru dispozitive puternice, cum ar fi telefoane inteligente sau servere.
Cortex-M sunt mai mici, cu mai multă periferie integrată, cu un consum de energie mai mic și, prin urmare, sunt optimizate pentru aplicații embedded.
Dhrystone este utilizat ca reper pentru a compara performanțele diferitelor procesoare. Pe baza acestui punct de referință, diferența dintre un microcontroler economic obișnuit, cu 30 DMIPS și un microcontroler cu cele mai mari performanțe disponibile în prezent, inclusiv o memorie programabilă flash integrată, este de 1027 DMIPS. În schimb, microprocesoarele pornesc de la un minim aproximativ de 1000 DMIPS.
Consumul de energie
Microcontrolerele au un scor ridicat atunci când vine vorba de consumul de energie, care este mult mai mic decât cel al microprocesoarelor. Deși microprocesoarele au un mod de economisire a energiei, consumul lor este totuși considerabil mai mare decât cel al unui microcontroler tipic. Mai mult, memoria externă face mai dificilă trecerea microprocesorului la un mod de economisire a energiei. Pentru aplicațiile cu consum ultra redus de energie, în care un timp îndelungat de funcționare a bateriei este esențial și care nu are decât o interfață de utilizator foarte puțin folosită sau deloc, microcontrolerele sunt alegerea mai bună, în special pentru electronice de larg consum sau dispozitive de măsurare inteligente.
Conectivitatea
Majoritatea microcontrolerelor și microprocesoarelor sunt echipate cu toate interfețele periferice convenționale. Cu toate acestea, dacă sunt necesare dispozitive periferice ultra-rapide, atunci utilizatorii nu vor găsi interfețe relevante, precum Gigabit Ethernet, în sectorul microcontrolerelor, în timp ce aceste interfețe au devenit practic o caracteristică standard în microprocesoare. Acest lucru este complet justificat, deoarece microcontrolerele abia pot prelucra volumul de date pe care îl suportă. O întrebare cheie care trebuie pusă este: există suficientă lățime de bandă și canale disponibile pentru a gestiona traficul de date existent?
Performanța în timp real
Dacă este vorba despre performanțe în timp real, componenta aleasă este cu siguranță un microcontroler. Datorită nucleului procesorului, memoriei flash integrate și a software-ului (RTOS sau Bare Metal OS), microcontrolerul desfășoară o muncă excepțională îndeplinindu-și sarcinile în timp real. Deoarece microprocesoarele Cortex-A sunt cele mai bune la procesarea secvențială de tip pipelining, utilizatorii trebuie să se aștepte la o procesare complexă, cu timpi de latență mai mari pe durata întreruperilor și salturilor. Procesarea robustă în timp real este dificil de realizat cu un microprocesor, datorită sarcinilor multiple ale sistemului de operare.
Circuite integrate de bază ale unui sistem
O sursă de alimentare este deja integrată în microcontrolere, având nevoie doar de un singur traseu de tensiune. Microprocesoarele, pe de altă parte, necesită numeroase trasee de circuit pentru a alimenta nucleul și celelalte componente. Alimentarea este livrată, de exemplu, de circuite integrate speciale, așa-numitele cipuri de bază ale sistemului, care nu trebuie decât configurate.
Arhitectură eterogenă
Cu toate acestea, linia de delimitare dintre microprocesor și microcontroler devine tot mai neclară. Odată cu introducerea lui STM32MP1, dotat cu unul sau cu două nuclee Cortex-A7 (tipice pentru un microprocesor) și cu un nucleu Cortex-M4, reprezentativ pentru clasa microcontrolerelor, STMicroelectronics a adăugat în portofoliul său un microcontroler puternic, pentru aplicații performante cu consum mare de resurse, bazat pe un software open source. Acest lucru deschide opțiunea de a combina avantajele ambelor lumi. De exemplu, un OpenST Linux poate fi rulat pe nucleele de microprocesor, în timp ce nucleul M4 rulează un FreeRTOS pentru a satisface cerințele de lucru în timp real și de siguranță, necesare în monitorizarea proceselor.
Datorită acestei separații, toate funcțiile sistemului de operare, cum ar fi un HMI cu control tactil sau comunicarea prin rețea, pot fi utilizate fără a influența cerințele de siguranță ale întregii aplicații. Arhitecturile eterogene au, de asemenea, un avantaj atunci când vine vorba despre timpul de latență în momentul pornirii sistemului sau a consumului de energie, deoarece procesorul cel mai adecvat poate fi ales în funcție de tipul aplicației. De exemplu, cu ajutorul RAM-ului de retenție, M4 poate porni în câteva milisecunde în timp ce A7 are un timp de latență la pornire de până la o secundă. Acest lucru face posibil, de exemplu, menținerea microprocesorului în modul Oprit, în timp ce microcontrolerul efectuează o conversie A/D, economisind aproximativ trei sferturi din energia consumată, în comparație cu configurația în care ambele componente sunt pornite.
Proiect de referință pentru STM32MP1
STM32MP1 este disponibil cu placa de evaluare (STM32MP157C-EV1) și Discovery Kit (STM32MP157C-DK2) drept proiect de referință. Dezvoltatorii beneficiază de suport în proiectarea sistemului. Placa este bazată pe combinația dintre STM32MP1 și tehnologiile de la partenerii certificați precum Nanya. Aceasta dispune de un SDRAM DDR3L de 4-Gbiți, un e-MMC de 4 GB de la Kioxia (anterior Toshiba) și de un circuit optimizat PMIC (Power-Management IC) – STMPIC1 – drept cip de suport.
Concluzie
Este greu de spus când un microprocesor sau un microcontroler este alegerea mai bună, dar regula spune că ar trebui să cântăriți întotdeauna diferitele avantaje oferite de ambele variante. Următoarele criterii pot fi utilizate ca un ghid simplificat de selecție:
- Microcontrolerele sunt ideale pentru aplicații mobile mai ieftine, în care consumul de energie este una dintre principalele probleme, precum și pentru aplicațiile cu cerințe de timp real.
- Microprocesoarele se potrivesc perfect pentru aplicațiile de calcul intens care rulează un sistem de operare și necesită interfețe cu viteză mare. Jocurile, precum și alte aplicații care necesită grafică intensivă sunt conectate la rețea folosind microprocesoare speciale.
Autor: Hao Wang, Digital Product Manager
Rutronik | https://www.rutronik.com