Modularizarea proiectării sistemelor electronice

by gabi

În domeniul proiectării hardware-ului dispozitivelor electronice a avut loc o revoluție discretă. Pe măsură ce integrarea siliciului a continuat (alimentată de aspectele economice ale Legii lui Moore), inginerii au migrat treptat de la dezvoltarea la nivel de componente și circuite la lucrul cu plăci, module și subsisteme. Avantajul a constat într-o îmbunătățire spectaculoasă a eficienței proiectării electronice. Este o schimbare care se repetă acum în domeniul software, dezvoltatorii căutând să utilizeze cu precădere module reutilizabile, în loc să apeleze în continuare la liniile de cod pe care le scriu ei înșiși.

Există multe avantaje care decurg din trecerea la un design modular. Unul dintre acestea este o mai mare capacitate de a beneficia de economiile de scară care rezultă din utilizarea unor platforme care atrag mulți clienți. Utilizatorii industriali au o experiență îndelungată cu hardware-ul modular. Standardele Versa Module Eurocard (VME) și CompactPCI au oferit integratorilor și producătorilor de echipamente originale (OEM) – care lucrează în piețe cu volume mici – posibilitatea de a utiliza echipamente de calcul de înaltă performanță. Aceștia puteau realiza o personalizare mai amplă a capabilităților unui computer fără a fi nevoiți să investească timp și efort în proiectarea plăcilor de circuite imprimate (PCB) de ultimă generație. De atunci, Legea lui Moore oferă câștiguri incredibile în ceea ce privește funcționalitatea, reducând în același timp costul diferitelor părți componente. Computerul pe o singură placă Raspberry Pi este un exemplu semnificativ.

Echipamente hardware de serie eficiente din punct de vedere al costurilor

Prin valorificarea economiilor de scară obținute cu ajutorul unei platforme SoC (System on a Chip) pentru telefoane inteligente, consorțiul din spatele Raspberry Pi a reușit să livreze un produs mult mai eficient decât ar fi fost posibil cu un proiect creat inițial pentru uz educațional. Costurile de inginerie nerecurrente (NRE) suportate de furnizorul de siliciu au fost ușor absorbite de piața țintă principală, oferind o valoare mult mai mare utilizatorilor țintă ai Raspberry Pi. Acest avantaj în materie de costuri a fost transferat către sectorul industrial. Integratorii și producătorii de echipamente originale (OEM) au profitat de modularitatea platformei Raspberry Pi, utilizând busul HAT de expansiune pentru a adăuga propriile interfețe personalizate.

Utilizarea modulelor Pi degrevează echipele de ingineri de necesitatea de a procura componente similare și de a le proiecta pe PCB-uri personalizate. Acestea presupun adesea verificări funcționale și de integritate a semnalelor care consumă mai mult timp decât cele necesare pentru a crea modulele HAT. Foarte des, aceste module personalizate pot utiliza PCB-uri relativ simple cu două- sau patru-straturi.

Apariția modulelor software de serie

A apărut o tendință similară de modularizare a software-ului. Inginerii se pot concentra acum exclusiv pe elementele unei aplicații în care pot adăuga valoare. Această tendință este determinată nu doar de economiile de scară și de abilitatea unor furnizori de a amortiza eficient NRE, ci și de tendința mai largă de integrare în rețea și de modele de afaceri bazate pe servicii. În prezent, un sistem embedded este adesea incomplet dacă nu face parte dintr-un sistem mai mare de sisteme, cum ar fi Internetul lucrurilor (Internet of Things – IoT). În acest mediu, un dispozitiv poate fi utilizat pentru a contribui la furnizarea unuia sau mai multor servicii – multe dintre acestea urmând să fie modificate pe durata de viață a hardware-ului utilizat pentru a le susține. Această combinație între IoT și cloud generează noi modele de afaceri care valorifică aceste capabilități, cum ar fi software-ul ca serviciu (SaaS) și plata la utilizare. Flexibilitatea a devenit un criteriu cheie în acest mediu comercial: un criteriu care îi împinge pe cei care implementează să caute structuri mai modulare.

Modularitatea începe cu sistemul de operare. Acesta suportă abstractizări care sunt vitale pentru construirea unor medii flexibile și modulare. În general, un sistem de operare oferă un set de servicii care variază de la simple intrări/ieșiri până la stive complete de rețele, toate acestea fiind accesate printr-un set de interfețe de programare a aplicațiilor (API) documentate. Atât timp cât serviciile continuă să susțină API-urile, codul care le furnizează se poate schimba fără a afecta aplicațiile care utilizează respectivele API-uri. Acest lucru este la fel de adevărat pentru un simplu planificator în timp real, FreeRTOS, care este livrat cu multe instrumente de dezvoltare pentru microcontrolere, precum și pentru implementări RTOS comerciale mai complexe, cum ar fi VxWorks de la Wind River. VxWorks definește standardul industrial pentru sistemele de operare embedded, alimentând unele dintre cele mai critice infrastructuri și dispozitive.

Linux și alte sisteme de operare pot face ca managementul memoriei să meargă mai departe, făcând posibilă izolarea sarcinilor unele de altele. O posibilă problemă cu structurile RTOS simple este că acestea operează într-un spațiu de memorie complet nepartiționat. Bug-urile sau comportamentul malițios într-o anumită operațiune pot duce la suprascrierea accidentală a datelor și a codului într-o altă sarcină, ceea ce poate duce la o blocare a sistemului sau la alte rezultate nedorite. Linux utilizează adresarea virtuală, mediată de o unitate hardware de management a memoriei, pentru a împiedica accesul diferitelor sarcini (task-uri) la spațiile de memorie ale altora. Acestea pot interacționa doar prin intermediul API-urilor sistemului de operare sau al protocoalelor inter-aplicații construite pe baza acestor API-uri.

Adresarea memoriei virtuale nu este o cerință absolută pentru izolarea sarcinilor (task-urilor). Unele arhitecturi de microcontrolere, inclusiv mai mulți membri ai familiilor Arm Cortex-M și Cortex-R, pot impune protecția memoriei într-un spațiu de memorie plat. Arm oferă, de asemenea, modul software securizat Trustzone în mai multe dintre procesoarele sale, ceea ce face posibilă izolarea software-ului sensibil de sarcinile la nivel de utilizator. Cu această protecție, devine mai ușor de combinat codul personalizat cu gama tot mai largă de module software din comerț care au fost dezvoltate pentru a face față sarcinilor obișnuite.

Integrarea funcțiilor ‘open source’ și a celor proprietare

În prezent, inginerii au acces la o gamă de module software gratuite, cu sursă deschisă și stive de protocoale disponibile prin Github, Sourceforge și alte servicii. De asemenea, sunt disponibile stive comerciale care oferă un suport mai mare, funcționalități suplimentare sau certificare pentru aplicații critice din punct de vedere al siguranței. Proiectele de referință elaborate de producătorii de siliciu vor combina adesea o serie de funcții ‘open source’ și proprietare pentru a facilita clienților construirea de prototipuri până la implementări complete ale produselor. În unele cazuri, proiectul de referință implementează o aplicație completă pe care utilizatorul final o poate adapta la propriile nevoi.

Unii proiectanți de sisteme profită de modularitatea din ce în ce mai mare a software-ului pentru a construi medii de dezvoltare care ajustează parametrii și generează automat codul. Aceste instrumente utilizează adesea reprezentări software bazate pe blocuri pe care dezvoltatorul le asamblează pe o interfață grafică de utilizator. Un exemplu este MPLAB Code Configurator de la Microchip pentru familiile de microcontrolere PIC8, PIC16 și PIC32.

Aplicațiile avansate, cum ar fi învățarea automată și procesarea imaginilor, sunt exemple de domenii în care utilizatorii pot beneficia de investiția NRE ridicată a specialiștilor și pot evita anii de timp de dezvoltare pe care un astfel de software i-ar necesita dacă utilizatorii ar trebui să îl construiască de la zero. Caffe, PyTorch și Tensorflow de la Google fac posibilă construirea, antrenarea și reglarea unor modele complexe de inteligență artificială (AI) care se integrează cu ușurință în pipeline-urile de procesare embedded. Pentru procesarea imaginilor, OpenCV este o bibliotecă utilizată pe scară largă care poate fi integrată cu ușurință în aplicații în timp real. Odată cu ascensiunea învățării automate, un model de utilizare din ce în ce mai comun în prezent este ca OpenCV să preproceseze datele de imagine înainte de a fi transmise unui model de inteligență artificială construit cu ajutorul Caffe sau Tensorflow, codul personalizat fiind utilizat în principal pentru a oferi răspunsul în timp real la evenimentele detectate de model.

Reunirea tuturor elementelor

Dezvoltatorii au acum acces la module și instrumente software orientate spre cloud care se integrează cu ușurință cu stive de rețele și implementări RTOS comune. Acest lucru permite integrarea în IoT a unor sisteme embedded de diferite niveluri de complexitate. Platforma IoT Connect™ de la Avnet , de exemplu, oferă procesare bazată pe cloud pentru sarcini complexe, cum ar fi inteligența artificială. Deoarece sistemul este definit atât de serviciile software din cloud, cât și de cele din dispozitivele embedded, furnizorii de cloud, cum ar fi Amazon Web Services și Microsoft Azure, oferă acum o gamă de oferte care le reunesc pe cele două: toate valorificând modularitatea componentelor software pe care le utilizează.

Modularizarea schimbă setul de competențe necesare inginerilor de software embedded. Echilibrul responsabilităților se mută de la dezvoltarea de cod la abilitatea de a construi arhitecturi flexibile bazate pe module preexistente care permit o codificare personalizată ușoară și o configurare în timp de execuție pe măsură ce sunt implementate noi servicii. Prin valorificarea acestei modularități, producătorii de echipamente originale și integratorii de sisteme pot ține cu ușurință pasul cu cerințele clienților, care ar fi pur și simplu de neconceput prin mijloace tradiționale.

Autor: Cliff Ortmeyer, Global Head of Technical Marketing

Farnell | ro.farnell.com

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

Adaugă un comentariu