2009-03-16 10 views
7

Estoy buscando hacer codificación incrustada para un dispositivo de aproximadamente 20MHz, tiene 6mb de RAM, con un procesador ARM32. ¿Alguien puede sugerir el mejor/el lenguaje más apropiado para programar un sistema integrado? Estoy considerando:Sugerencias para el lenguaje más apropiado (mejor) para programar un sistema integrado?

  • 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!

Edición - Real Time no es un problema, es más la limitación de ram/cpu dictando cosas.

Respuesta

4

Tengo used Lua on an ARM OMAP processor. 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 llevé a la plataforma integrada sin cambios.

Mientras que el procesador OMAP era lo suficientemente fuerte como para ejecutar otros lenguajes como Java o Python, no sabía a qué hardware me estaba dirigiendo cuando comencé el código. Lua era una apuesta segura.

4

Estaría tentado de ir con la letra C directa, pero luego escribí C durante casi 30 años. Lua y TinyPy parecen demasiado nuevos, experimentales, para mí; los dispositivos integrados deben ser muy robustos.

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

+1

Sin embargo, un lenguaje de script podría dar como resultado un código más robusto por las mismas razones que lo hace en server-land: la aritmética del puntero y la administración de la memoria eliminados de la lista de responsabilidades del programador . – slim

+0

No, solo significa que la responsabilidad se ha transferido a los codificadores de lenguaje de scripts, al tiempo que se agrega el problema de los errores de tipeo dinámicos. Si la implementación de Lua o TinyPy estuviera libre de errores, tendrías razón, en definitiva, pero son terriblemente nuevos en los que puedo confiar. –

+1

Lua ha estado presente desde el '93 (lanzado en '94), y el motor es de código abierto. Yo diría que es tan confiable como muchos compiladores para C y C++. – patros

6

C es probablemente la mejor opción para recursos de cpu tan limitados.

+2

No olvide que la gente solía escribir aplicaciones perfectamente viables en BASIC en procesadores de 2MHz 8 bit 6502 con 16K de RAM. Si necesita exprimir hasta el último bit de rendimiento, use C, pero el hardware descrito no descarta los intérpretes. – slim

+0

Estoy de acuerdo, acabo de ir con la respuesta más segura ya que el OP no dio ninguna indicación de lo que realmente querían hacer con el dispositivo. – patros

+0

Para un procesador integrado, tener 6 Mb está lejos de ser limitado. Por ejemplo, el PIC10F más pequeño tiene 16 bytes de RAM y 384 bytes de flash. Para eso, programa en ensamblador. :-) –

1

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 exprimir una aplicación en una plataforma incrustada. Como otros sugieren, a menos que realmente lo necesite, omita los idiomas incrustables y programe su aplicación en C. No hay casi gastos indirectos de tiempo de ejecución para eso, excepto por lo que realmente usa.

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

+0

Javascript: ¡es una idea interesante! ¿Como seria eso? – Chris

+0

Bueno, no he probado nada más nuevo que Spidermonkey desde hace unos años, pero es bastante simple, siempre y cuando no necesites anular el objeto global. Eso me confundió considerablemente. – SingleNegationElimination

8

Si está sacando el dispositivo del 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 enrutar uno sin dificultad, puede tener más flexibilidad para agregar uno de los lenguajes de script más. C# está fuera de cuestión a menos que esté en WinCE, y entonces estará restringido a .NET Micro.

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

+3

No estoy de acuerdo. http://en.wikipedia.org/wiki/.NET_Micro_Framework –

+0

ARM no es exactamente exótico ... es ampliamente utilizado en sistemas integrados, especialmente como núcleo de la CPU de un sistema en un chip. – RBerteig

4

Es importante especificar lo que 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? GUIs? Es el rendimiento crítico? ¿Estás planeando usar un sistema operativo?

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

Dicho esto, los sistemas integrados tienen que ser confiables, así que iré por alguna solución probada. C es probablemente la opción más sólida y mejor respaldada para los chips ARM, pero el YMMV depende de tus necesidades específicas.

1

A menos que tenga un RTOS disponible que admita una variedad de idiomas alternativos, C o C++ (según su cadena de compilación) es el camino a seguir.

1

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

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

C++ es cada vez más popular para los sistemas integrados. Más allá de eso, depende de tus prioridades (tiempo de comercialización, uso de recursos, velocidad) y la calidad de las herramientas que utilizas.

1

C la mejor

2

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

Cuestiones relacionadas