De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

El software integrado es el ordenador el software , escrita a máquinas de control o dispositivos que no son típicamente considerados como computadoras, comúnmente conocidos como sistemas embebidos . Por lo general, está especializado para el hardware particular en el que se ejecuta y tiene limitaciones de tiempo y memoria. [1] Este término a veces se usa indistintamente con firmware . [2]

Un rasgo característico preciso y estable es que no todas las funciones del software integrado se inician / controlan a través de una interfaz humana, sino a través de interfaces de máquina. [3]

Los fabricantes construyen software integrado en la electrónica de automóviles , teléfonos, módems, robots , electrodomésticos, juguetes, sistemas de seguridad, marcapasos , televisores y decodificadores, y relojes digitales , por ejemplo. [4] Este software puede ser muy simple, como los controles de iluminación que se ejecutan en un microcontrolador de 8 bits con unos pocos kilobytes de memoria con el nivel adecuado de complejidad de procesamiento determinado con un marco de computación probablemente aproximadamente correcto [5] (una metodología basada en algoritmos aleatorios ). Sin embargo, el software integrado puede volverse muy sofisticado en aplicaciones comoenrutadores , elementos de redes ópticas, aviones , misiles y sistemas de control de procesos . [6]

Sistemas operativos [ editar ]

A diferencia de las computadoras estándar que generalmente usan sistemas operativos como OS X , Windows o GNU / Linux , el software integrado puede no usar ningún sistema operativo. Cuando usan uno, se puede elegir entre una amplia variedad de sistemas operativos, generalmente un sistema operativo en tiempo real . El código para software integrado generalmente se escribe en C o C ++ , pero varios lenguajes de programación de alto nivel , como Java , Python y JavaScript , ahora también son de uso común para microcontroladores y sistemas integrados. [7] Lenguajes de ensamblajetambién se utilizan a menudo, especialmente en el arranque y el manejo de interrupciones . Ada se utiliza en algunos proyectos militares y de aviación.

Diferencias con el software de aplicación [ editar ]

La mayoría de los consumidores están familiarizados con el software de aplicación que proporciona funcionalidad en una computadora. Sin embargo, el software integrado suele ser menos visible, pero no menos complicado. A diferencia del software de aplicación, el software integrado tiene requisitos y capacidades de hardware fijos, y la adición de hardware o software de terceros está estrictamente controlada.

El software integrado debe incluir todos los controladores de dispositivo necesarios en el momento de la fabricación, y los controladores de dispositivo están escritos para los distintos dispositivos de hardware. Estos controladores de dispositivo, llamados BSP ( paquete de soporte de placa ), forman la capa de software que contiene controladores específicos de hardware y otras rutinas que permiten que un sistema operativo en particular (tradicionalmente un sistema operativo en tiempo real, o RTOS) funcione en un entorno de hardware en particular. (una computadora o tarjeta CPU), integrado con el propio RTOS. El software depende en gran medida de la CPU y de los chips específicos elegidos. La mayoría de los ingenieros de software integrado tienen al menos un conocimiento pasajero de lectura de esquemas.y lectura de hojas de datos de componentes para determinar el uso de registros y sistema de comunicación. La conversión entre decimal , hexadecimal y binario es útil, además de utilizar la manipulación de bits . [8]

Las aplicaciones web se utilizan a menudo para administrar el hardware, aunque los archivos XML y otros resultados se pueden pasar a una computadora para su visualización. Normalmente se utilizan sistemas de archivos con carpetas, sin embargo, las bases de datos SQL suelen estar ausentes.

El desarrollo de software requiere el uso de un compilador cruzado , que se ejecuta en una computadora pero produce código ejecutable para el dispositivo de destino. La depuración requiere el uso de un emulador en circuito y depuración de hardware como depuradores JTAG o SWD . Los desarrolladores de software a menudo tienen acceso al código fuente completo del kernel (SO).

El tamaño de la memoria de almacenamiento y la RAM puede variar significativamente. Algunos sistemas se ejecutan en 16 KB de Flash y 4 KB de RAM con una CPU que opera a 8 MHz, otros sistemas pueden competir con las computadoras contemporáneas. [9] Estos requisitos de espacio conducen a que se realice más trabajo en C o C ++ incrustado , en lugar de C ++. Lenguajes interpretados como BASIC (mientras que, por ejemplo, Parallax Propeller puede usar BASIC compilado) y Java (Java ME Embedded 8.3 [10] está disponible para, por ejemplo , microcontroladores ARM Cortex-M4 , Cortex-M7 y ARM11 anterior utilizado en Raspberry Pi e Intel GalileoGen. 2) no se utilizan comúnmente; mientras que una implementación del lenguaje Python 3 interpretado - MicroPython  - está disponible expresamente para el uso de microcontroladores, por ejemplo, microcontroladores basados ​​en ARM de 32 bits (como BBC micro: bit ) y PIC de 16 bits .

Protocolos de comunicación [ editar ]

Las comunicaciones entre procesadores y entre un procesador y otros componentes son esenciales. Además del direccionamiento directo de memoria , los protocolos comunes a nivel de hardware incluyen I²C , SPI , puertos seriales , 1-Wires , Ethernets y USB .

Los protocolos de comunicación diseñados para su uso en sistemas integrados están disponibles como código cerrado de empresas como InterNiche Technologies y CMX Systems . Los protocolos de código abierto provienen de uIP , lwip y otros.

Ver también [ editar ]

  • Sistema Integrado

Referencias [ editar ]

  • Edward A. Lee, "Embedded Software", Advances in Computers (M. Zelkowitz, editor) 56 , Academic Press, Londres, 2002.
  1. ^ "Stroustrup en C ++ para incrustado (parte inferior p.2)" (PDF) . Consultado el 9 de diciembre de 2012 .
  2. Emilio, Maurizio Di Paolo (1 de septiembre de 2014). Diseño de sistemas integrados para la adquisición y el control de datos de alta velocidad . Saltador. ISBN 978-3-319-06865-7.
  3. ^ "ICS en software integrado" . Archivado desde el original el 22 de marzo de 2013 . Consultado el 22 de julio de 2013 .
  4. ^ "Métodos y tecnologías de sistemas integrados" . Archivado desde el original el 29 de octubre de 2013 . Consultado el 9 de diciembre de 2012 .
  5. ^ Alippi, Cesare (2014), Inteligencia para sistemas integrados , Springer, ISBN 978-3-319-05278-6.
  6. ^ http://ptolemy.eecs.berkeley.edu/publications/papers/02/embsoft/embsoftwre.pdf
  7. ^ Mazzei, Daniele; Montelisciani, Gabriele; Baldi, Giacomo; Fantoni, Gualtiero (2015). Cambiando el paradigma de programación para los integrados en el dominio de IoT . Internet de las cosas (WF-IoT), 2015 IEEE 2nd World Forum on. Milán: IEEE. págs. 239–244. doi : 10.1109 / WF-IoT.2015.7389059 .
  8. ^ "Stroustrup en software integrado" . Archivado desde el original el 3 de febrero de 2013 . Consultado el 9 de diciembre de 2012 .
  9. ^ "Ejemplo de CPU integrada" . Consultado el 9 de diciembre de 2012 .
  10. ^ "Java ME incrustado" . Red de tecnología de Oracle .