stringtranslate.com

Software integrado

El software integrado es software informático , escrito para controlar máquinas o dispositivos que normalmente no se consideran computadoras, comúnmente conocidos como sistemas integrados . 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 primer plano del chip SMSC LAN91C110 (SMSC 91x), un chip Ethernet integrado

Un rasgo característico preciso y estable es que ninguna o 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 incorporan 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 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 como enrutadores , elementos de redes ópticas, aviones , misiles y sistemas de control de procesos . [6]

Sistemas operativos

A diferencia de las computadoras estándar que generalmente usan sistemas operativos como macOS , Windows o Linux , el software integrado puede no usar ningún sistema operativo. Cuando utilizan uno, se puede elegir entre una amplia variedad de sistemas operativos, normalmente un sistema operativo en tiempo real . El código para software integrado normalmente se escribe en C o C++ , pero ahora también se utilizan comúnmente varios lenguajes de programación de alto nivel , como Java , Python y JavaScript , para microcontroladores y sistemas integrados. [7] Los lenguajes ensambladores tambié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.

Interfaz de usuario de texto del sistema integrado mediante MicroVGA [nb 1]

La mayoría de los consumidores están familiarizados con las aplicaciones de software que brindan 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 capacidades y requisitos 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 dispositivos, 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 particular (tradicionalmente un sistema operativo en tiempo real o RTOS) funcione en un entorno de hardware particular. (una computadora o tarjeta CPU), integrada 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 básico de lectura de esquemas y lectura de hojas de datos de componentes para determinar el uso de registros y sistemas 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 hardware, aunque los archivos XML y otros resultados pueden pasarse a una computadora para su visualización. Generalmente se utilizan sistemas de archivos con carpetas, aunque 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 hardware de depuración como depuradores JTAG o SWD . Los desarrolladores de software suelen tener acceso al código fuente completo del kernel (SO).

El tamaño de la memoria de almacenamiento y la RAM pueden variar significativamente. Algunos sistemas funcionan con 16 KB de Flash y 4 KB de RAM con una CPU que funciona a 8 MHz, otros sistemas pueden rivalizar con las computadoras contemporáneas. [9] Estos requisitos de espacio llevan a que se realice más trabajo en C o C++ integrado , 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, por ejemplo, para microcontroladores ARM Cortex-M4 , Cortex-M7 y ARM11 más antiguo utilizado en Raspberry Pi e Intel Galileo Gen. 2 ) no se utilizan comúnmente; mientras que una implementación del lenguaje interpretado Python 3, MicroPython  , está disponible expresamente para uso con microcontroladores, por ejemplo, microcontroladores basados ​​en ARM de 32 bits (como BBC micro:bit ) y PIC de 16 bits .

Protocolos de comunicación

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 serie , 1-Wires , Ethernet y USB .

Los protocolos de comunicaciones 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

Notas

  1. ^ Para obtener más detalles sobre MicroVGA, consulte este PDF.

Referencias

  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 Embebidos para Adquisición y 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 [ URL básica PDF ]
  7. ^ Mazzei, Daniele; Montelisciani, Gabriele; Baldi, Giacomo; Fantoni, Gualtiero (2015). "Cambiar el paradigma de programación para lo integrado en el dominio de IoT ". Internet de las cosas (WF-IoT), 2.º Foro Mundial del IEEE de 2015. Milán: IEEE. págs. 239–244. doi :10.1109/WF-IoT.2015.7389059.
  8. ^ "Stroustrup sobre 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 integrado". Red de tecnología Oracle .