Supongo que ya tienes esta respuesta. Sólo voy a dar una perspectiva sobre la historia y la evolución de los sistemas embebidos desde los dispositivos autónomos hasta los sistemas IOT.
Los sistemas embebidos más antiguos (pueden tener más de 20 años)
He trabajado en el rediseño de algunos de los sistemas embebidos más antiguos que estaban basados en procesadores i386 y procesadores TI más antiguos. Normalmente se pueden encontrar estos sistemas embebidos heredados en la industria aeroespacial. La razón es que la estricta política de certificación de productos en la industria aeroespacial no exige una actualización frecuente del sistema. Por lo tanto, los sistemas más antiguos se utilizan mucho hasta la fecha, a menos que los chips o la tecnología se vuelvan obsoletos y se vean obligados a rediseñar el sistema.
Estos dispositivos heredados son autónomos, no tienen conectividad de red, no tienen USB, no admiten pantalla LCD, no tienen WiFI. Todo lo que soportan es el puerto Rs232, VFD (Vacuum Florescent Display ) y el firmware que se ejecuta en NOR flash. El código está escrito en ensamblador + C.
La única forma en que estos sistemas embebidos heredados se comunican con el mundo exterior es mediante el puerto RS232. Toda la actualización del firmware y de la configuración del sistema se realiza a través del puerto RS232. Era muy difícil gestionar y controlar estos sistemas antiguos, incluso hasta el punto de actualizar el firmware, capturar registros de errores, etc.
Evolución de los sistemas embebidos
Si se observa la evolución de los sistemas embebidos, se tendrá una mejor idea para entender la respuesta a esta pregunta. Al principio, los sistemas embebidos eran dispositivos autónomos que ejecutaban código ensamblador o código c desnudo; a medida que la tecnología evolucionaba, los sistemas embebidos eran capaces de ejecutar sistemas operativos y podían conectarse a una red alámbrica o inalámbrica. Con la evolución de Internet y la invención de los teléfonos inteligentes, el uso de Internet y de los servicios basados en Internet se hizo muy popular y práctico. La gente empezó a tener la información en la punta de los dedos.
Así que, por un lado, la tecnología embebida estaba evolucionando de un procesador de 8 bits a uno de 16 bits, 32 bits y ahora 64 bits, que soportaba una arquitectura multi-núcleo, que funcionaba a gigahercios de reloj, que soportaba gigabytes de memoria, que tenía periféricos integrados y que era capaz de ejecutar sistemas operativos; por otro lado, la conectividad de red, wifi, redes gigabit, internet (redes 3G, 4G), smartphones, servicios en la nube, big data estaba evolucionando.
A medida que la tecnología evolucionaba, los sistemas embebidos que antes eran autónomos eran capaces de soportar todo tipo de conectividad de red utilizando redes inalámbricas o por cable. De este modo, era más fácil gestionar y controlar la enorme cantidad de dispositivos integrados. La supervisión y el control remotos de los dispositivos integrados se hicieron posibles.
Los teléfonos inteligentes llevaron la conectividad a Internet al siguiente nivel. Las aplicaciones móviles ayudaron a la gente a estar siempre conectada a Internet para utilizar los servicios basados en Internet, como el pago de facturas, el comercio electrónico, las redes sociales, el videochat, etc.
La gente empezó a utilizar sus aplicaciones móviles para controlar y gestionar a distancia los sistemas integrados. Los sistemas de automatización del hogar, los sistemas de videovigilancia, etc., se controlan y gestionan a distancia mediante aplicaciones móviles. Los conceptos de casas inteligentes, edificios inteligentes, etc. empezaron a evolucionar.
Poco a poco, los sistemas integrados se volvieron más inteligentes, más conectados y más fáciles de usar. Era posible ejecutar análisis de datos en los sistemas integrados, era posible conectarse a la nube y enviar los datos, era posible proporcionar una aplicación móvil para supervisar y controlar estos sistemas. Así, el sistema que antes era autónomo evolucionó hacia sistemas que pueden conectarse a la nube.
En este punto, se empezó a hablar de Internet de las cosas, hogares inteligentes, edificios inteligentes, etc.
Aunque todas estas terminologías parezcan diferentes, en algún lugar del fondo están conectadas, sólo tenemos que conectar estos puntos para obtener una visión holística.
Miles de sistemas integrados, como sensores, termostatos, cámaras de vigilancia, grabadoras de vídeo, etc., producen una enorme cantidad de datos. Estos datos debían ser capturados y procesados para crear una información completa. Esta información podía utilizarse para comprender el comportamiento del sistema, el comportamiento del cliente, los modos de fallo, el estado de actualización del firmware y muchas más cosas para gestionar y manejar mejor estos sistemas.
La evolución de Inten…
Las herramientas adecuadas para el IoT son omnipresentes. Amazon, Google, AT&T, Intel, PTC y muchos más ofrecen un marco para definir, integrar, suministrar, mantener y desactivar dispositivos con seguridad y análisis integrados. Todas las soluciones, independientemente de su proveedor, tienen limitaciones generalmente basadas en su modelo de negocio para obtener ingresos. En el caso de Amazon y Google, los ingresos de la CPU y el almacenamiento pueden ser los mismos, lo que significa que todas sus soluciones se almacenan y procesan en la nube.
La clave del IoT no está en la plataforma o el marco, sino en la intención y la capacidad del creador para superar las principales limitaciones del espacio de soluciones, que son la latencia, la frecuencia de los datos y la potencia del móvil.
El desarrollo de software embebido ya no es tan sencillo como antes. Crear un dispositivo autónomo era y sigue siendo un reto para muchos equipos de desarrollo. En la era del IoT, en la que estamos empezando a conectar absolutamente todo -incluidos los cepillos de dientes- la complejidad del sistema se está disparando. El desarrollador tradicional, desconectado, se está encontrando con que hay múltiples retos nuevos que deben ser abordados para lograr el éxito:
Desafío nº 1: la conectividad
Parece sencillo, pero hay muchas formas diferentes de conectarse a Internet. Los desarrolladores podrían conectarse a través de WiFi, Ethernet, celular, LoRa, un puente Bluetooth y muchas otras fuentes. Cada una de ellas tiene sus propias ventajas y desventajas, junto con diferentes pilas de software que los desarrolladores deben aprender y comprender para que el hardware funcione. Esto ni siquiera cubre las otras consideraciones de software sobre qué protocolos utilizar, como UDP, COAP, TCP/IP, y varios otros o si utilizar varios protocolos simultáneamente. Luego está el reto de aprender y utilizar TLS y/o MQTT y entender cómo funciona todo eso cuando se lanza un servidor. Por supuesto, los desarrolladores pueden utilizar pilas de software preexistentes para ayudar a disminuir el desafío, pero todavía tienen que entender lo que está sucediendo en caso de que algo se rompa o tenga que ser modificado.
Reto nº 2 – Actualizaciones en el aire
Ahora que el dispositivo está finalmente conectado a Internet, podemos actualizar su firmware a distancia, lo que parece una gran idea. Con un dispositivo autónomo, los desarrolladores solían publicar una nueva imagen de firmware en un sitio seguro y luego enviaban un correo electrónico a todos sus clientes para que «vinieran a buscarlo». Con el IoT, se espera que las actualizaciones de software aparezcan milagrosamente y se realicen por sí solas. Incluso en un pequeño despliegue que incluya varios miles de dispositivos, los desarrolladores tienen que averiguar cómo:
Generar un trabajo de actualización de firmware
Asegurar sus actualizaciones
Validar que provienen de una fuente de confianza
Deshacer la actualización si hay un problema
Determinar cuándo es apropiado actualizar un dispositivo
Todo esto es un asunto complicado y que requiere mucho tiempo y que los desarrolladores tienen que entender para poder desplegar su producto con éxito.
Reto nº 3 – Seguridad
Los dispositivos conectados están ahora tan bien conectados que cualquier cosa en Internet puede verlos. Por ello, los desarrolladores no sólo tienen que aprender a conectarse, sino también a proteger sus dispositivos de las amenazas de seguridad, que evolucionan constantemente y son cada vez más sofisticadas. La seguridad no es algo que pueda añadirse a un sistema al final del ciclo de diseño. Y no es algo que pueda aprenderse de la noche a la mañana. Hay que pensar detenidamente en cómo se divide el sistema, cómo se aísla y qué información hay que proteger. Los desarrolladores deben identificar claramente el grado de seguridad que debe tener su sistema. La seguridad de un cepillo de dientes eléctrico será sin duda mucho menor que la de un contador inteligente.
Desafío #4 – Depuración
A medida que más equipos construyen dispositivos conectados, la complejidad aumenta. Lo más probable es que también aumente el tiempo dedicado a la depuración. A medida que se integra el software de código abierto y otros paquetes de software, seguramente se producirán comportamientos extraños y nuevos en el sistema, a menos que todos hayan sido diseñados para trabajar juntos en primer lugar. Las encuestas sobre sistemas integrados han demostrado que los desarrolladores dedican ya una media del 40% de su tiempo a la depuración. La depuración requiere mucho tiempo y dinero en cada proyecto integrado. Por esta razón, es importante que los desarrolladores comprendan todas las técnicas de depuración que tienen a su disposición y cómo evitarlas en primer lugar.
Desafío #5 – El ritmo de los cambios
Puede que sólo sea yo, pero durante los primeros 10 años de mi carrera, parecía que la forma de diseñar los sistemas embebidos y las tecnologías que utilizábamos eran relativamente las mismas. Cada año salía un procesador más potente, pero la mejora era gradual. En los últimos cinco años se ha producido un gran salto en las tecnologías disponibles y en lo que tienen que hacer. Empezó con la conectividad, pero se está extendiendo rápidamente no sólo a la seguridad, sino también a la inteligencia artificial y los sistemas. Los desarrolladores están empezando a descubrir que las tecnologías disponibles cambian más rápido de lo que pueden aprender.
Estos son los principales retos con los que veo a los equipos de desarrollo luchando cuando empiezan a pasar de diseñar dispositivos autónomos a dispositivos conectados. Estos retos no son, desde luego, insuperables. En muchos casos, las soluciones ya existen en una variedad de formas. El truco consiste en cómo los desarrolladores y los equipos se ponen al día y luego mantienen estas nuevas habilidades que todo desarrollador necesita.