¿Sugerencias para el lenguaje más apropiado (el mejor) para programar un sistema embebido? [cerrado]

StackOverflow https://stackoverflow.com/questions/649197

  •  19-08-2019
  •  | 
  •  

Pregunta

Estoy buscando hacer una codificación integrada para un dispositivo que tiene aproximadamente 20MHz, tiene 6mb de ram, con un procesador ARM32. ¿Alguien puede sugerir el mejor / más apropiado lenguaje para programar un sistema embebido? Estoy considerando:

  • Lua
  • TinyPy
  • C
  • Java ME
  • C #
  • alguien ha sugerido JavaScript

¿Alguna sugerencia? Gracias

Editar: parece que C y Lua son los ganadores. ¡Saludos a todos!

Editar - El tiempo real no es un problema, es más el limitado RAM / CPU que dicta las cosas.

¿Fue útil?

Solución

He he usado Lua en un procesador ARM OMAP . La estrecha integración de Lua con C permite ir al metal siempre que lo necesite, y su pequeño tamaño lo hace adecuado para una amplia gama de plataformas. Desarrollé la interfaz de usuario para mi firmware en Lua en mi Mac y luego la traje a la plataforma integrada sin cambios.

Si bien el procesador OMAP era lo suficientemente robusto como para ejecutar otros lenguajes como Java o Python, no sabía a qué hardware estaba apuntando cuando comencé el código. Lua fue una apuesta segura.

Otros consejos

Si está sacando el dispositivo desde cero o interactuando directamente con periféricos no estándar, C es realmente el único camino a seguir.

Si ya tiene un sistema operativo incorporado o puede portar uno sin dificultad, es posible que tenga más flexibilidad para agregar uno de los lenguajes más script-y. C # está fuera de discusión a menos que esté en WinCE, y luego estará restringido a .NET Micro.

Más allá de eso, "mejor" tiene poco significado sin describir para qué se usará su dispositivo. Algunos idiomas tienen mejor soporte para ciertas tareas que otros.

C es probablemente su mejor apuesta para recursos de CPU tan limitados.

Estaría tentado a ir con la C recta, pero luego he estado escribiendo C durante casi 30 años. Lua y TinyPy me parecen demasiado nuevas, experimentales; los dispositivos integrados deben ser muy robustos.

Java ME tiene buenos puntos. No sé acerca de C # en un mundo incrustado.

Es importante especificar qué espera que haga este dispositivo. ¿Es algún tipo de aplicación de control? ¿Tiene que implementar algoritmos? ¿Qué pasa con el soporte de punto flotante? GUI? ¿Es crítico el rendimiento? ¿Estás planeando usar un sistema operativo?

Responder estas preguntas es un prerrequisito crucial para elegir un lenguaje de programación.

Dicho esto, los sistemas embebidos tienen que ser confiables, así que buscaría alguna solución probada. C es probablemente la opción más sólida y mejor soportada para chips ARM, pero YMMV depende de sus necesidades específicas.

C es sin duda el lenguaje más utilizado en sistemas embebidos. También parece ser el idioma más hablado en general http://www.langpop.com/

Editar: hmm. Me acabo de dar cuenta de que el 'incrustado' que parece estar describiendo no se trata de agregar un lenguaje de automatización a una aplicación, sino de comprimir una aplicación en una plataforma incrustada. Como otros sugieren, a menos que realmente lo necesite, omita los lenguajes incorporables y programe su aplicación en C. Casi no hay sobrecarga de tiempo de ejecución para eso, excepto lo que realmente usa.

Sin ningún orden en particular, Lua, JavaScript y TCL son muy adecuados para la incrustación. Lua ha sido el más fácil de integrar. Javascript podría ser el más rápido. Los tres tienen un buen manejo para el código no confiable, pero el TCL es más robusto, por ejemplo, el código no confiable puede ejecutar código no confiable (si es confiable para hacer eso).

A menos que tenga un RTOS disponible que admita una variedad de lenguajes alternativos, C o C ++ (dependiendo de la cadena del compilador) es el camino a seguir.

Es probable que su decisión esté determinada por las herramientas disponibles para este procesador.

C es, con mucho, el lenguaje más compatible para los procesadores integrados, por lo que no puede equivocarse con eso, y será una buena experiencia si tiene que escribir software para otros chips en el futuro.

C ++ se está volviendo más popular para los sistemas integrados. Más allá de eso, depende de sus prioridades (tiempo de comercialización, uso de recursos, velocidad) y la calidad de las herramientas que utiliza.

C el mejor

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top