Casa > Exposició > Contingut

Arquitectures de programari incrustades

Mar 08, 2019

Hi ha diversos tipus d’arquitectura de programari d’ús comú.


Bucle de control senzill

En aquest disseny, el programari simplement té un bucle. El bucle truca les subrutines, cadascuna de les quals gestiona una part del maquinari o programari. Per tant, s’anomena bucle de control simple o bucle de control.


Sistema controlat per interrupció

Alguns sistemes integrats estan controlats predominantment per interrupcions. Això vol dir que les tasques realitzades pel sistema són activades per diferents tipus d'esdeveniments; es pot generar una interrupció, per exemple, per un temporitzador en una freqüència predefinida, o per un controlador de port sèrie rebent un byte.


Aquest tipus de sistemes s’utilitzen si els gestors d’esdeveniments necessiten una baixa latència i els gestors d’esdeveniments són curts i simples. Normalment, aquests tipus de sistemes també executen una tasca senzilla en un bucle principal, però aquesta tasca no és molt sensible a retards inesperats.


De vegades, el gestor d'interrupcions afegirà tasques més llargues a una estructura de cua. Més endavant, un cop finalitzada la gestió de les interrupcions, aquestes tasques s’executen pel bucle principal. Aquest mètode acosta el sistema a un nucli multitarea amb processos discrets.


Multitarea cooperativa

Un sistema de multitarea sense pretensions és molt similar a l'esquema de bucle de control simple, excepte que el bucle està amagat en una API. El programador defineix una sèrie de tasques i cada tasca té el seu propi entorn per "executar-se". Quan una tasca està inactiva, crida una rutina inactiva, normalment anomenada "pausa", "espera", "rendiment", "nop". (significa sense operació), etc.


Els avantatges i els desavantatges són similars als del bucle de control, excepte que l’addició de nou programari és més senzill, simplement escrivint una nova tasca o afegint a la cua.


Multitarea preventiva o multi-fil

En aquest tipus de sistema, una peça de baix nivell de codi canvia entre tasques o fils basant-se en un temporitzador (connectat a una interrupció). Aquest és el nivell al qual generalment es considera que el sistema té un nucli "sistema operatiu". Depenent de quanta funcionalitat es requereixi, introdueix més o menys les complexitats de la gestió de múltiples tasques paral·lelament conceptuals.


Com que qualsevol codi pot danyar potencialment les dades d’una altra tasca (excepte en sistemes més grans que utilitzen una MMU), els programes han de ser dissenyats i provats acuradament, i l’accés a les dades compartides ha de ser controlat per alguna estratègia de sincronització, com ara cues de missatges, semàfors o un no - Esquema de sincronització de bloqueig.


A causa d’aquestes complexitats, és freqüent que les organitzacions utilitzin un sistema operatiu en temps real (RTOS), que permet als programadors d’aplicacions concentrar-se en la funcionalitat del dispositiu en lloc de serveis del sistema operatiu, almenys per a sistemes grans; els sistemes més petits sovint no es poden permetre els costos associats a un sistema genèric en temps real, a causa de limitacions en relació a la mida de la memòria, al rendiment oa la durada de la bateria. L’elecció que es requereix d’un RTOS aporta els seus propis problemes, però, ja que la selecció s'ha de fer abans de començar el procés de desenvolupament d’aplicacions. Aquest moment obliga els desenvolupadors a escollir el sistema operatiu incrustat per al seu dispositiu en funció dels requisits actuals i, per tant, restringeix en gran mesura les opcions futures. La restricció de les opcions futures esdevé més un problema, ja que la vida del producte disminueix. A més, el nivell de complexitat creix contínuament a mesura que s’exigeixen dispositius per gestionar variables com a sèrie, USB, TCP / IP, Bluetooth, LAN sense fils, ràdio troncal, múltiples canals, dades i veu, gràfics millorats, múltiples estats, múltiples fils, nombrosos esperar estats i així successivament. Aquestes tendències condueixen a l’adopció del middleware incrustat, a més d’un sistema operatiu en temps real.


Microkernels i exokernels

Un micronúcleo és un pas lògic des d'un sistema operatiu en temps real. L’ordenació habitual és que el nucli del sistema operatiu assigna memòria i canvia la CPU a diferents fils d’execució. Els processos de mode d'usuari implementen funcions principals com ara sistemes de fitxers, interfícies de xarxa, etc.


En general, els microkernels tenen èxit quan la comunicació de commutació de tasques i entrecreuament és ràpida i fracassa quan són lentes.


Els Exokernels es comuniquen de manera eficient per les trucades de subrutines normals. El programari de l'aplicació disposa del maquinari i de tot el programari del sistema.


Nuclis monolítics

En aquest cas, un nucli relativament gran amb capacitats sofisticades s'adapta a un entorn incrustat. Això proporciona als programadors un entorn similar a un sistema operatiu d’escriptori com Linux o Microsoft Windows i, per tant, és molt productiu per al desenvolupament; a la baixa, requereix considerablement més recursos de maquinari, sovint és més car i, a causa de la complexitat d'aquests nuclis, pot ser menys predictible i fiable.


Exemples comuns de nuclis monolítics incrustats són incrustats en Linux i Windows CE.


Tot i l'augment del cost en maquinari, aquest tipus de sistema incrustat és cada vegada més popular, sobretot en els dispositius incrustats més potents, com ara els routers sense fils i els sistemes de navegació GPS. Aquests són alguns dels motius:


Hi ha disponibles ports per a conjunts de xips incrustats comuns.

Permeten la reutilització del codi disponible públicament per als controladors de dispositius, servidors web, tallafocs i un altre codi.

Els sistemes de desenvolupament poden començar amb amplis conjunts de característiques i, a continuació, es pot configurar la distribució per excloure la funcionalitat innecessària i guardar la despesa de la memòria que consumiria.

Molts enginyers creuen que executar el codi de l’aplicació en mode d’usuari és més fiable i fàcil de depurar, de manera que el procés de desenvolupament és més fàcil i el codi és més portàtil.

Les funcions que requereixen una resposta més ràpida del que es pot garantir es poden col·locar sovint en maquinari.

Components de programari addicionals

A més del sistema operatiu principal, molts sistemes incrustats tenen components de programari de capa superior addicionals. Aquests components consisteixen en piles de protocol de xarxa com CAN, TCP / IP, FTP, HTTP i HTTPS, i també inclouen capacitats d’emmagatzematge com ara sistemes de gestió de memòria flash FAT i FAT. Si el dispositiu incrustat té capacitats de so i vídeo, els controladors i codecs adequats estaran presents al sistema. En el cas dels nuclis monolítics, s'inclouen moltes d'aquestes capes de programari. A la categoria RTOS, la disponibilitat dels components de programari addicionals depèn de l’oferta comercial.


Arquitectures específiques del domini

En el sector de l'automòbil, AUTOSAR és una arquitectura estàndard per al programari incrustat.