# Sistema incrustat

Un sistema incrustat (o sistema integrat o també sistema encastat) és un sistema informàtic dissenyat per realitzar una o poques funcions específiques normalment en un sistema de computació en temps real i que, és encapsulat totalment pel dispositiu que controla. A diferència d'un ordinador d'ús personal, que està dissenyat per tal de cobrir un ampli rang de necessitats, els sistemes encastats cobreixen necessitats específiques. La majoria dels components que es troben en un sistema encastat són a la placa mare i el seu aspecte acostuma a ser diferent del d'un ordinador.

## Història

El primer sistema integrat modern recognoscible va ser l'ordinador d'orientació Apollo (AGC) desenvolupat per Charles Stark Draper de l'Institut de Tecnologia de Massachusetts l'any 1967, en què va ser el sistema de guiat de la missió lunar Apollo. Cada missió lunar tenia dos sistemes AGC, una càrrega de sistema de guiat inercial i un altre per al mòdul lunar. En l'inici del projecte, l'ordinador AGC va ser considerat el component menys fiable del projecte, ja que incorporava uns nous circuits integrats monolítics desenvolupats recentment per reduir mida i pes.
Un dels primers sistemes integrats produït en massa va ser l'equip d'orientació Autonetics D-17 pel míssil Minuteman, introduït l'any 1961. Des d'aquestes primeres aplicacions en la dècada dels 60, els sistemes integrats han baixat de preu i hi han tingut un augment dramàtic en la capacitat de processament i funcionalitat.
En l'apartat de microprocessadors, entre ells, hi ha l'Intel 4004 que va ser dissenyat per a les calculadores i altres sistemes petits però requeria memòria externa i xips de suport. Però a principis de la dècada dels 80, la memòria i els components d'entrada i sortida necessaris havien estat integrats en el mateix xip del processador formant un microcontrolador. Aquests, permeten trobar aplicacions en què un ordinador de propòsit general seria massa costós.

## Característiques

Els sistemes encastats es dissenyen generalment per a realitzar funcions específiques. Alguns d'ells tenen restriccions lligades al rendiment per tal de funcionar en temps real però hi ha d'altres que simplement no tenen cap restricció i són sistemes simples amb la finalitat de reduir el cost.
Els sistemes encastats no sempre són dispositius independents sinó que són una peça que forma part d'un sistema més gran i complex que duu a terme una tasca de propòsit general. Per exemple, un sistema incrustat que es trobi en un automòbil i proporcioni una funció especifica com captar informació de l'exterior treballaria en conjunt amb altres sistemes encastats per tal d'aconseguir una resposta que afectaria a tot el sistema.
Els programes sobre un sistema encastat funcionen sovint amb limitacions a temps real i amb els recursos de maquinari limitats: sovint no hi ha accionament de disc, sistema operatiu, teclat o pantalla. El programari pot no tenir un sistema de fitxers, o si un està present, una memòria flaix pot substituir els mitjans usuals d'emmagatzemament. Si una interfície de manegament està present, pot ser un teclat numèric petit i/o un indicador de vidre líquid.
Ja que molts sistemes encastats són produïts en massa per milions, la reducció del cost és una preocupació important. Alguns sistemes encastats no requereixen gran capacitat de procés o recursos i això permet que el cost de producció sigui reduït al mínim usant un processador relativament lent i una àrea de memòria reduïda. El sistema pot necessitar executar ràpidament algunes funcions, però la majoria de les seves altres funcions no necessitaran molta velocitat.
Així doncs, moltes parts d'un sistema encastat tindran sovint un rendiment de funcionament baix. La lentitud no és velocitat de rellotge. L'arquitectura sencera d'un sistema encastat sovint se simplifica intencionadament per obtenir costos més baixos comparats al maquinari d'ús general. Per exemple, els sistemes encastats utilitzen sovint els perifèrics controlats per les interfícies síncrones sèrie, que són centenars de voltes més lents que els perifèrics utilitzats als ordinadors.
El firmware és el nom per al programari que s'encaixa en el maquinari del dispositiu, programat en una o més memòries ROM/flaix. Els sistemes encastats resideixen a les màquines que s'espera que funcionin contínuament durant anys i sense errors. Per aquest motiu, el firmware es desenvolupa generalment amb més cura que no pas el programari per als ordinadors personals.
Finalment cal dir que, el sistema encastat pot estar fora de l'abast d'éssers humans (baix d'una perforació d'un pou de petroli, llançat en l'espai exterior, etc.), de manera que el sistema ha de poder reconfigurar-se fins i tot si s'ha ocasionat una corrupció catastròfica de les dades. Això s'assoleix generalment amb un component electrònic, estàndard, anomenat watchdog que reinicia el sistema amb la finalitat de tornar-la de nou funcional.

## Limitacions

Els sistemes integrats realitzen tasques i especificacions per a completar, i aquestes han de complir una sèrie de limitacions, les quals serien:
* Cost: El cost ha de ser tan baix com sigui possible, especialment si és produït en massa.
* Memòria: L'espai de memòria a contar és d'uns pocs gigabytes com a màxim (encara que la grandària actualment està menys limitada gràcies a la miniaturització dels elements).
* Potència de càlcul: S'ha de tenir la potència de càlcul necessària només per satisfer les necessitats de la tasca a processar. La finalitat d'això seria reduir el cost addicional que podria comportar un component de més potència i reduir l'excés de consum energètic (electricitat).
* Autonomia: El consum d'energia ha de ser tan baix com sigui possible a causa de la utilització de bateries i/o de panells solars o fins i tot de cel·les de combustible, tot depenent del tipus de projecte. Si disposa d'alimentació permanent, llavors la qüestió seria optimitzar el consum energètic.
* Temps: Tant el temps d'execució com el temps d'expiració d'una tasca s'han de determinar (els terminis són coneguts i acotats a priori). Aquesta última restricció s'aplica generalment en sistemes que tenen propietats en temps real.
* Fiabilitat: Si succeeix que alguns d'aquests sistemes encastats fallen, poden posar vides o inversions significatives en perill. Per això se'ls anomena “sistemes crítics” i mai han de fallar. Per "mai fallen" s'ha d'entendre per proporcionar sempre, resultats precisos i pertinents dins del temps esperat pels usuaris (maquinària i/o humà) d'aquests resultats.
* Seguretat: Aquests sistemes poden utilitzar informació confidencial de l'usuari o usuaris i, per tant, ha de ser mantinguda i protegida.
Tots els sistemes incrustats han de complir, amb més o menys mesura i depenent de l'aplicació que se'l vulgui donar, les limitacions esmentades i el cost del projecte ha de ser el just i necessari, sempre tenint en compte els apartats de fiabilitat i seguretat, que poden encarir el cost del sistema però solen ser prioritàries.

## Exemples de sistemes encastats

Com a exemple d'aquests sistemes es poden esmentar els següents dispositius:
* Telèfons mòbils
* Equips de xarxa d'ordinadors, incloent-hi encaminadors, servidors de temps i tallafocs.
* Impressores
* Copiadores
* Calculadores
* Consoles de videojocs
* Aparells electrodomèstics, incloent-hi els forns de microones, rentadores, televisions, reproductors i gravadors de DVD
* Controladors de motors i controladors antibloqueig del fre per als automòbils
* Productes casolans d'automatització, com els termòstats, condicionadors d'aire, sistemes de reg, i sistemes de supervisió de seguretat
* Caixers automàtics (en anglès ATMs)
* Accionaments de disc (impulsions de disqueteres i impulsions de disc dur)
La llista no acaba aquí, ja que avui en dia hi han sistemes encastats a molts àmbits.

## Arquitectura més freqüent d'un sistema incrustat

Un sistema encastat consta d'una arquitectura semblant a la d'un ordinador. Aquests són alguns dels elements bàsics dels quals pot estar format:
* Microprocessador: És l'encarregat de realitzar les operacions de l'algorisme principal del sistema. Executa codi binari per dur a terme una determinada tasca i orquestra el funcionament dels elements que l'envolten.
* Memòria: En aquesta es troba emmagatzemat el codi dels programes que el sistema pot executar així com les dades. La seva característica principal és que ha de tenir accés de lectura i escriptura el més ràpid possible per tal que el processador sigui més eficient.
* Memòria cau: Aquest tipus de memòria és molt més ràpida que la principal i és en la qual s'emmagatzema el codi i les dades que s'han consultat últimament. Com que el sistema realitza petits processos que sovint són repetits, la cau ajuda a estalviar temps, ja que no farà falta accedir a la memòria principal si la dada o la instrucció es troben a la memòria cau. Normalment fa d'intermediària entre la memòria RAM i el disc dur.
* Disc dur: En aquest la informació no és volàtil i pot arribar fins a capacitats molt elevades. Normalment acostuma a ser magnètic, però com que la seva mida és excessiva, pot no ser compatible amb alguns sistemes encastats. A més a més, en contenir parts mòbils, els fa inviables en entorns on estiguin exposats a certes condicions de vibració.
* Chipset: Xip que s'encarrega de controlar les interrupcions dirigides al microprocessador, l'accés a memòria i al bus a més d'oferir temporitzadors, comptadors, rellotges, etc.
* Entrada/sortida: Per la banda d'entrada poden existir ports per ratolins, teclats, vídeo en format digital, comunicacions, etc. Per la banda de sortida podem tenir ports de vídeo per monitors o televisions, pantalles de cristall líquid, altaveus, comunicacions sèrie o paral·lel, etc.

## Vegeu també

* Programari incrustat
* FreeRTOS

## Referències

* ↑ Michael Barr. «Embedded Systems Glossary». Netrino Technical Library. [Consulta: 21 abril 2007].
* ↑ Heath, Steve. Embedded systems design (en anglès). 2a edició. Newnes, 2003, p. 2.

## Bibliografia

* John Catsoulis. Designing Embedded Hardware, 2nd Edition. O'Reilly, maig 2005. ISBN 0-596-00755-8.
* James M. Conrad; Alexander G. Dean Embedded Systems, An Introduction Using the Renesas RX62N Microcontroller. Micrium, setembre 2011. ISBN 978-1935-7729-96.

## Enllaços externs

* Modern Embedded Systems Programming Video Course YouTube, 2013 (anglès)
* Trends in Cyber Security and Embedded Systems Dan Geer, novembre 2013 (anglès)