# Programari incrustat

Programari incrustat (embedded software), és aquell programari que corre dins d'un sistema incrustat (embedded system).
En general, i donat la naturalesa dels sistemes on s'inclouen, aquest software acostuma a funcionar de forma autònoma, amb cap o molt poca intervenció humana, interactuant amb l'entorn físic o informàtic. Aquests sistemes autònoms poden ser aïllats, tot i que són també poden ser connectats a través d'una xarxa. Aquests sistemes estan subjectes a restriccions funcionals que impliquen la seva definició, la seva robustesa, el seu disseny, la seva capacitat per complir una tasca amb recursos específics sovint associades a sancions temporals o del seu consum d'energia.
Amb la difusió massiva de sensors i actuadors electrònics, els sistemes complexos es beneficien d'una instrumentació important. Els intercanvis d'informació amb l'exterior i la capacitat d'adaptació d'aquests sistemes a l'entorn requereixen un control estricte sobre el bon funcionament d'aquests sistemes amb mòduls flexibles, autocarregables i autoconfigurables. Els sistemes incrustats o programari encastat han de posseir doncs propietats, a nivell local, ja que aquests sistemes autònoms han de suportar sols a sol·licituds imprevisibles del seu entorn.

## Sistemes i programaris incrustats

Els sistemes incrustats són cada vegada més presents en la nostra vida quotidiana (aeronàutica, automòbils, telefonia mòbil, electrodomèstics, etc.). Interconnectats i comunicants, concebuts per assegurar funcionalitats crítiques, tals sistemes imposen verdaderes ruptures tecnològiques. Factors d'innovació, mitjans de diferenciació, són essencials per al desenvolupament de les activitats industrials i la millora de la competitivitat. Els sistemes encastats són una part cada vegada més important del programari encastat. El disseny i desenvolupament de tal programari necessita gestionar el cicle complet de desenvolupament i garantir un bon nivell de fiabilitat.

## Models de programació

Existeixen diferents models de programació per sistemes incrustats de baixa potència de còmput.

### Bare-metal

Un dels models més senzills és el de tenir un bucle sense fi on es van succeint les instruccions a realitzar que, ocasionalment poden ser interrompudes per interrupcions, tant externes (esdeveniments de Hardware extern) com internes (comptadors, perifèrics, etc.).
Habitualment aquest model es compon del bucle sense fi ja esmentat i una funció d'inicialització, on s'executen les comandes necessàries per engegar el sistema segons els paràmetres.

### Sistema Operatiu

Quan la complexitat del sistema augmenta, és habitual usar algun Sistema Operatiu per dividir el codi en diferents tasques funcionant concurrentment. Normalment s'usen Sistemes Operatius de Temps Real especialment dissenyats per sistemes encastats.
Els Sistemes Operatius per sistemes encastats proporcionen una sèrie de mecanismes per la creació de diferents tasques, per comunicar-se entre elles i mecanismes de controlar el temps.
Aquests Sistemes Operatius acostumen a compilar-se juntament amb el codi de l'aplicació per formar un executable que és el que executar el microprocessador.

## Referències

* 1 2 Lluís Suñol Elías. «Sistema domòtic amb integració de telefonia mòbil» (pdf), 01-01-2011. [Consulta: 21 maig 2011].
* 1 2 3 Ricardo J. Machado; João M. Fernandes. «Integration of Embedded Software with Corporate Information Systems» (pdf) (en anglès). Universitat del Miño. [Consulta: 21 maig 2011].

## Enllaços externs

* Embedded Software PDF(anglès)