Alegerea corectă a plăcilor embedded

by gabi

Proiectanții de sisteme embedded care doresc să utilizeze plăci standard pentru dezvoltare și producție trebuie să facă multe alegeri. În prezent, există numeroase oferte bazate doar pe arhitectura Arm. Politica de licențiere deschisă adoptată de Arm pentru proprietatea intelectuală a procesoarelor sale a permis o explozie a ofertelor de microcontrolere și de sisteme pe cip (SoC) cu nuclee multiple care, la rândul lor, au dus la crearea a numeroase oferte de plăci cu costuri reduse și performanțe ridicate. Puterea de calcul, care înainte costa mii de euro și necesita o soluție personalizată poate fi acum oferită de plăci gata pregătite pentru utilizare care costă mult sub 100 €, chiar și în volume mici.

Concentrarea pe nevoi

BeagleBone AI-64

Când vine vorba de luarea unei decizii de achiziție, întrebarea este cum să te concentrezi rapid pe oferta potrivită într-un domeniu de oferte care variază de la modele bazate pe Arm Cortex-M la puterea de procesare avansată a procesoarelor Cortex-A multi-nucleu, însoțite acum adesea de AI și acceleratoare grafice.

În unele cazuri, pot exista diferențe clare odată ce inginerul ia în considerare nivelul necesar de performanță. În cazul în care performanța aplicațiilor nu reprezintă o preocupare principală, gama Arduino de computere pe o singură placă reprezintă o opțiune bună și ieftină pentru codul creat pentru a controla perifericele hardware. În alte cazuri, Linux poate fi o cerință pentru abilitatea sa de a gestiona baze mari de cod. Acesta, la rândul său, necesită, de obicei, utilizarea unei unități de management a memoriei virtuale, așa cum se găsește în gama de procesoare Cortex-A de la Arm.

Performanța, chiar și în cazul plăcilor bazate pe procesoare din gama Cortex-A, poate varia într-o plajă largă. De exemplu, Beaglebone Black se bazează pe un singur nucleu de procesor de aplicații Cortex-A8 însoțit de mai multe microcontrolere Cortex-M3 pentru procesarea în timp real. Raspberry Pi 4 utilizează versiunea mai recentă Cortex-A72 într-o configurație cu patru nuclee, care oferă o performanță cumulată mai mare. Dar este greu, însă, de prezis cum s-ar putea descurca acesta în fața lui Beaglebone AI-64, care combină un Cortex-A72 dual-core cu trei nuclee Cortex-R5.

Găsirea soluției potrivite

Alegerile devin mai clare atunci când luați în considerare răspunsul I/O al aplicației țintă și nevoile de performanță software. De exemplu, procesoarele Cortex-R5 sunt optimizate pentru controlul în timp real, în cazul în care este necesar să se gestioneze multe canale de I/O și întreruperi. Nucleele Cortex-A se concentrează, mai degrabă, pe randamentul codului aplicației decât pe I/O.

Deși plăcile embedded combină adesea Cortex-A cu procesoare Cortex-M sau Cortex-R pentru a gestiona buclele de I/O și de control în timp real, alte coprocesoare devin acum uzuale, precum acceleratoarele axate pe inteligența artificială (AI). Această schimbare recunoaște necesitatea de a implementa rețele neurale instruite și alte modele de învățare automată pe hardware de calcul embedded și edge. S-a constatat că rețelele neurale sunt foarte potrivite pentru o varietate de aplicații de tip edge computing, cum ar fi urmărirea obiectelor în medii complexe și detectarea anomaliilor.

Examinarea plăcii potrivite pentru industrie

Un caz-cheie de utilizare pentru detectarea anomaliilor se află în întreținerea predictivă, care utilizează modificări subtile ale vibrațiilor, ale emisiei de căldură și alte semnale pentru a determina dacă un echipament trebuie reparat sau întreținut înainte de a se defecta complet. Întreținerea predictivă folosind inteligența artificială poate economisi bani și crește producția în fabricile industriale, eliminând necesitatea întreținerii de rutină care oprește echipamentele sau întregi linii de producție la intervale regulate, chiar dacă reparațiile nu sunt necesare.

Deși este posibilă rularea unor modele de rețele neurale pe nuclee de uz general, cum ar fi seria Cortex-A, furnizorii au recunoscut nevoia de performanță suplimentară cu oferte precum Beaglebone AI-64, care, pe lângă procesoarele de uz general, oferă acceleratorul C7x+ în combinație cu o unitate avansată de virgulă mobilă vectorială. Aceste unități oferă tipul de procesare numerică necesar nu doar pentru a efectua inferențe pe modelele de inteligență artificială, ci și pentru a susține un element de instruire online. În timp ce inferența utilizează, de obicei, aritmetica numerelor întregi, antrenarea rețelelor neurale necesită, în general, precizia suplimentară oferită de virgula mobilă. Deși instruirea pe scară largă se va efectua, probabil, în cloud, iar modelul rezultat va fi descărcat pe un computer periferic (edge), capabilitatea locală în virgulă mobilă oferă posibilitatea de a efectua ajustări fine ale modelului pe teren, precum și de a oferi o manipulare avansată a datelor pentru a furniza modelului date sursă mai bune.

Performanțe mai mari pentru AI pot fi obținute prin intermediul unor plăci precum J1010 realizată de Seeed Studio și care se bazează pe tehnologia Nvidia Jetson, cuplată cu un procesor gazdă Arm Cortex-A57. Cele 128 de nuclee ale unității de procesare grafică de uz general (GPU) pot oferi 500GFLOPS. Pentru modelele mai complexe, seria J20 utilizează un modul Jetson Xavier, cu un debit maxim de 21 tera operații pe secundă.

Comparație pentru diverse aplicații industriale

Deși performanța pentru aplicația țintă va fi întotdeauna un parametru cheie pentru selectarea plăcilor, alte considerente vor juca adesea un rol esențial în reducerea unei liste potențial lungi de candidați la una mult mai scurtă. În domeniul controlului industrial, aspecte precum durata ciclului de viață al produsului, rezistența la pericolele din mediu și accesul la I/O joacă un rol major în găsirea unei plăci din comerț care poate susține aplicația. Raspberry Pi, de exemplu, este proiectată, în primul rând, pentru a avea o formă compactă și s-ar putea să nu ofere plasarea optimă a porturilor de I/O pentru un dispozitiv care va fi montat în rack sau pe șină DIN.

Arduino Uno R4

Alte plăci care au cea mai mare parte a porturilor de I/O dispuse de-a lungul unei laturi a plăcii vor fi mai ușor de integrat în carcasa finală și de conectat la cabluri. În plus, plăcile destinate aplicațiilor industriale au adesea un suport mai amplu pentru extinderea I/O. Atât familia Beaglebone, cât și familia Arduino suportă în prezent o gamă largă de extensii ‘cape’ și, respectiv, ‘shield’, care pot oferi o varietate enormă de opțiuni de I/O.

În aplicații precum monitorizarea utilajelor, inspecția industrială și procesarea senzorilor, compatibilitatea cu temperatura și rezistența la vibrații vor fi adesea considerente importante. Conectorii proiectați pentru utilizarea “de birou” se pot desprinde cu ușurință într-un mediu în care mașinile sunt predispuse la vibrații mecanice puternice. Similar, plăcile destinate utilizării domestice sau la birou pot fi mai predispuse la defecțiuni într-un mediu în care temperatura poate atinge extreme mai mari. O abordare în acest caz este utilizarea de carcase specializate care încorporează soluții de gestionare a cablurilor și control termic prin intermediul ventilatoarelor sau al schimbătoarelor de căldură.

Cu toate acestea, sunt disponibile plăci de serie care au fost dezvoltate pentru a face față unei utilizări industriale. Un exemplu este Beaglebone Black Industrial, construită în jurul procesorului Texas Instruments AM335x Cortex-A8, similară altor plăci din gamă, dar care se mândrește cu o plajă de temperaturi de operare de la -40°C la +85°C. Gama de plăci Portenta produsă de Arduino, bazată pe microcontrolere Arm Cortex-M multi-nucleu, este proiectată pentru a funcționa în același interval extins de temperatură, ceea ce o face potrivită pentru controlul mașinilor din mediul industrial. Accentul pus pe controlul industrial se reflectă, de asemenea, în facilitățile de I/O de pe placă, care includ suport pentru conectarea la RS485 și CANbus fieldbus și interfețe analogice pentru senzori de temperatură și bucle I/O de 4-20mA, alături de porturi Wifi, USB și Ethernet.

Încorporarea suportului pentru dezvoltare de cod

Suportul de dezvoltare este, de asemenea, un aspect esențial și poate fi cel mai important. Reducerea timpului de proiectare este ajutată în mare măsură de disponibilitatea numeroaselor seturi de instrumente ‘open-source’ care există acum pentru mediile Linux suportate de familii de plăci precum colecțiile Raspberry Pi și Beaglebone. În trecut, dezvoltatorii de sisteme embedded trebuiau să fie familiarizați cu limbajele de programare de nivel scăzut, cum ar fi C și C++ și cu asamblarea la nivel de driver, în timp ce, acum, multe lucruri pot fi realizate în limbaje interpretate, cum ar fi Python.

Pe de altă parte, Linux nu este esențial pentru a avea acces la instrumente de dezvoltare mai ușoare. În cazul în care consumul de putere și costul produsului țintă sunt importante, iar cerințele aplicației sunt relativ scăzute, plăcile cu Linux se vor dovedi adesea prea scumpe și prea greoaie. În situații cum ar fi controlul în timp real cu intrări multiple de senzori în timp real, platforma Arduino are multe avantaje și nu obligă dezvoltatorii să renunțe la Python. Arduino IDE oferă suport complet pentru Python, iar ecosistemul include, de asemenea, suport pentru funcții de procesare a imaginilor prin intermediul software-ului OpenMV. Acest lucru ajută la crearea de sisteme robotice și camere inteligente cu o amprentă hardware minimă.

Decizii bine documentate

De la Arduino la Jetson, dezvoltatorii de sisteme embedded pot integra în sistemele lor o gamă largă de oferte de plăci. Deși la început alegerea poate părea descurajantă, cerințele precise ale aplicației țintă vor conduce adesea inginerul către un set de opțiuni valabile. Furnizorii experimentați care au acces la un număr mare de astfel de module, cum este Farnell, pot ajuta la îndrumarea către o decizie finală corectă.

Autor: Simon Wade, Product Segment leader, Single Board Computing

Farnell | ro.farnell.com

S-ar putea să vă placă și