El potencial de las aplicaciones
de la tecnología machine-to-machine incluye telemática en automoción, alarmas,
rastreo de activos, medición de las distribuidoras de energía y muchas más.
Herramientas basadas en la web proporcionan un vehículo ideal para vendedores y
usuarios finales para interactuar con estos dispositivos, permitiendo funciones
tales como la supervisión remota, informes y además ayudan en las aplicaciones
de prototipaje, desarrollo y mantenimiento.
Los desarrolladores de
aplicaciones web para ambientes desktop favorecen los lenguajes de programación
interpretada tales como PHP, Perl, Python o Ruby. Particularmente atractivas
son las características de conveniencia de la programación de alto nivel que
reducen el tiempo de desarrollo. Por supuesto, también están disponibles
lenguajes que proporcionan la tecnología de contenido dinámico para la web.
Sin embargo, un lenguaje dinámico
que ofrece valor a los desarrolladores M2M debe ser invendible, y el recurso de
memoria y CPU de la mayoría de los recursos disponibles es demasiado alto. Los
desarrolladores M2M necesitan también un lenguaje capaz de asegurar la
respuesta en tiempo real.
Algunos vendedores de plataformas
M2M han presentado un lenguaje interpretado tal como Python para soportar un
rápido diseño de aplicaciones basadas en el web y acelerar la programación. Sin
embargo, para alcanzar un resultado que es conveniente para embebido, los
desarrolladores tienen que reducir dramáticamente las librerías soportando
Python, además de quitar apoyo para instrucciones específicas. Estos ajustes
comprenden la potencia del lenguaje, creando una solución de aplicación
embebida que es capaz sólo de realizar operaciones simples tales como control
de modem pero con valor limitado para funciones de nivel de aplicaciones
poderosas.
Como un compromiso entre C y un
lenguaje dinámico real, Java ha sido exitosamente presentado a un gran número
de plataformas celulares de consumidor. De nuevo, sin embargo, la diferencia
entre la liberación original y subsecuentes variantes embebidas introduce
ciertas limitaciones. En el caso de Java, su portabilidad para adaptarse a
plataformas de hardware diferentes no están disponibles rápidamente y
fácilmente en J2ME, la versión embebida de Java.
Los desafíos de velocidad
asociados usando una máquina virtual para hacer funcionar el bytecode Java
semi-compilado han restringido a los desarrolladores trabajando con Java en
diseños embebidos. Aunque la compilación dinámica ha extraído con éxito un
rendimiento más alto, Java no es una elección poderosa para los desarrolladores
buscando el rendimiento en tiempo real.
Para satisfacer las demandas en
rendimiento en tiempo real en aplicaciones M2M, una solución puede ser usar una
combinación de un lenguaje interpretado embebido para funciones de alto nivel
con un lenguaje más conveniente tal como C/C++ para las tareas de bajo nivel de
tiempo real.
Para satisfacer la demanda del
rendimiento en tiempo real en aplicaciones M2M, una solución puede ser usar una
combinación de un lenguaje embebible para funciones de alto nivel con un
lenguaje más conveniente tal como C/C++ para las tareas de bajo nivel y en
tiempo real.
Lua es un lenguaje interpretado
cuya API se concibe para permitir integración con código escrito en lenguajes
de nivel más bajo, especialmente C/C++, permitiendo a los desarrolladores
conmutar entre C/C++ y Lua como aplicaciones ideales para aplicaciones M2M que
requieren tanto rendimiento en tiempo real como productividad de alto nivel.
Escribir las funciones de alto
nivel en Lua proporciona los beneficios del código compacto y alta
productividad, mientras que el uso estratégico del código C/C++ permite
rendimiento en tiempo real e implementación eficiente de funciones relacionadas
con el hardware.
Para aplicaciones M2M, las
capacidades de networking de Lua y capacidades para soportar funciones basadas
en TCP/IP tales como Telnet o servidores web vienen con las ventajas de baja
footprint de memoria.
Bibliografía
- Taking the brakes off developing machine-to-machine applications. European Electronics engineer July 2009
Está bien pero el artículo está un poco anticuado, con la caida en picado de las placas ARM no es un problema integrar lenguajes de alto nivel en una solución en tiempo real, sobre todo con soluciones como remoteproc (http://www.mjmwired.net/kernel/Documentation/remoteproc.txt) de linux.
ResponderEliminar