2009-02-27 17 views
14

Tengo curiosidad por ver qué tan populares son las alternativas a C en el mundo de los desarrolladores integrados, p. Ada ...Desarrollo de plataforma integrada en (! C)

he utilizado solamente siempre C (con un poco de ensamblador), pero luego mis objetivos cuentan con recursos muy limitados. ¿Hay algún otro movimiento en este espacio para otra cosa? ¿Qué está ganando la cerámica en decodificadores?

If! C ¿cuál fue el motivo subyacente?

  • apoyo del compilador para la meta
  • traza \ herramientas de análisis estático
  • otra ...

Gracias.

+2

+1. No entiendo por qué alguien votaría por esto, y mucho menos marcarlo como ofensivo. Supongo que quieren que te quedes con C :) –

+1

No reaccionaría de esta manera. Solo déjalo cambiar a gris. – Svante

+1

lol, otra marca ofensiva. Algunas personas tienen sus bragas en un montón. –

Respuesta

5

Forth es muy popular para el desarrollo integrado.

Además, aunque Smalltalk probablemente no sea popular en la comunidad integrada, embedded development es definitivamente popular en la comunidad de Smalltalk.

1

No he utilizado yo mismo, pero Bascom es muy popular para los microcontroladores AVR. Es un IDE Básico que le permite interactuar con los periféricos muy fácilmente. Conocí gente de hardware que lo usó con éxito.

1

Sí. Java se está volviendo más popular: muchos procesadores han agregado instrucciones que pertenecen principalmente a Java y lenguajes similares (.net). Además, uclinux se ejecuta en microcontroladores, por lo que puede utilizar prácticamente cualquier idioma para algunos de los micros más grandes.

Básico sigue siendo común, como es el montaje.

Verás Ada en algunos proyectos de gobierno.

Y algunos ingenieros están incluso poniendo Lua y otros intérpretes en sus micros por lo que sus clientes pueden ampliar la funcionalidad.

Pero C sigue siendo dominante.

-Adam

+0

LOL en el downvote - si piensa que esto es un error, por favor, comentario, me gustaría saber lo que dije incorrectamente para que pueda arreglarlo o defenderlo! –

+0

@ Adán-te dio un upvote ... tengo que hablan hasta por mis hermanos Java RT/incrustados ... JA – andersoj

2

Tal vez no es el gran paso de C que está buscando, pero C++ también es muy razonables popular para los proyectos integrados.

+1

Bueno, eso depende .... si utiliza los aspectos de programación polimórficos y genéricas de C++, comienza a parecer una mucho menos como "C estándar". Si simplemente utiliza clases para encapsular datos y métodos (bueno, pero factible en C), entonces está en el primer nivel de uso de C++. Cada vez que veo un currículum que dice "C/C++", lo primero que comienzo a sondear es la profundidad del conocimiento de C++. Por lo general, es bastante superficial. – Dan

0

he utilizado Ada en el proyecto integrado de aviónica militar, debido a los requerimientos del cliente. Hay muchas herramientas de Ada para el desarrollo integrado, pero la mayor parte es muy costosa. Personalmente sólo tiene que utilizar C.

0

Hay un compilador Pascal de 8051

+0

Y freePascal es compatible con ARM, MIPS y algunos otros. –

1

A principios del 90 hice un montón de desarrollo incrustado en el 8051 mediante Intel PLM51 y el sistema operativo DCX51.

PLM es muy simple lenguaje - pero muy potente

Ahora usamos C

0

Hay una group of folks trabajando para hacer Lua una opción viable para el trabajo incorporado. Están apuntando principalmente a ARM de 32 bits con 256K FLASH y 64K RAM o mejor, y parecen felices con su trabajo hasta el momento.

Se inspiran en parte en el clásico BASIC-Stamp, un intérprete BASIC que se ejecuta en un PIC moderadamente potente con el programa mismo almacenado en un dispositivo EEPROM de serie.

En el trabajo, sigo manteniendo el sistema integrado de un cliente que está escrito en un compilado de BASIC que se ejecuta en una CPU Zilog Z180. La tecnología de los 80 está por todas partes, con la mayor parte del sistema aún construido con paquetes DIP de 24 bandejas en los sockets. El compilador se ejecuta bajo CP/M-80 ejecutándose en un simulador Z80, que se ejecuta en el simulador de MS-DOS integrado en Windows. Aparte del asombro de la cizalladura de que cualquier cosa productiva se puede hacer de esta manera (y de que aún se pueden comprar 27C256 EPROMS borrables con UV, y que mi programador Data/IO PROM de casi 20 años aún funciona) realmente desearía que el cliente se mudara a un nuevo diseño de hardware para que el sistema pueda reescribirse en un lenguaje que se pueda mantener.

0

Depende del microcontrolador, muchos de ellos tienen C pero los compiladores son horribles, el ensamblador suele ser fácil y de mejor rendimiento, más eficiente, etc. Algunos como el msp, avr y el brazo son buenos para los compiladores de C y aquellos que usaría y usaría C (según el problema).

Me quedaría con C o ensamblador, está desperdiciando memoria, rendimiento y recursos usando cualquier otra cosa.

0

Pascal, Modula2 funcionan bien también. Básicamente, son prácticamente equivalentes a C, excepto por la imposibilidad de hacer alloca (aunque algunos lo tienen como extensión).

Pero el problema principal será el problema con cualquier compilador! C: qué prefieres, un compilador/cadena de herramientas mejor o el idioma de preferencia.

A pesar de que me gustan más las lenguas wirthianas, simplemente uso C, y estoy viviendo con las consecuencias, simplemente porque la cadena de herramientas es mejor.

Ha habido ejemplos en el pasado (Pascales, o incluso Conceptos básicos estrictamente compilados), pero C es principalmente la norma. Nunca entendí por qué.

0

Trabajé en un dispositivo que ejecutaba una versión increíblemente vieja de python (1.4 o algo así). No había forma de depurarlo (aparte de imprimir mensajes de depuración) para que cuando tu código tocara una excepción todo se detuviera y te rascaras la cabeza por una hora. Cada vez que realizaba un cambio y actualizaba el código que estaba ejecutando, le llevó unos 10 minutos interpretarlo y compilarlo.

No hace falta decir que en chatarra y se sustituye el microcontrolador con uno que ejecutó C.

+0

Escribí un sistema basado en microcontroladores con todo el código en C, que utilizaba un intérprete de python integrado para extensiones y scripts. Belleza. –

1

Si trabaja en el espacio de la tarjeta inteligente, se llega a utilizar Java Card. Sí, Java, en un micro de 8 bits. Es un poco divertido, en realidad. Tengo que desarrollar en Eclipse, prueba (& debug!) En el simulador de PC, y puedo estar seguro de que funcionará igual en la tarjeta.Es sólo una lástima Java es un lenguaje terrible para aplicaciones embebidas :)

0

Ver esta pregunta relacionada:

What languages are used for real-time systems programming.

En respuesta a su pregunta "por qué", desde el punto de vista de la adquisición gubernamental/militar, existe la percepción de que Java (idioma, plataforma, etc.) es la lingua franca en estos días y que las economías de escala en el lenguaje reducirá los costos de adquisición y mantenimiento. También existe la esperanza de que uno pueda capacitar eficientemente a un programador Java competente para que sea un programador RT/embedded razonable en Java, más rápido que si se requiere aprender un nuevo idioma. Este razonamiento es sospechoso, en mi opinión, pero responde la pregunta "por qué".

5

Cuando dice "desarrollo integrado", tenga en cuenta que debe tener en cuenta la escala del proyecto.

Al programar algo en la escala de un microcontrolador o el firmware de un ASIC, usted tiende a ver que C y el conjunto dominan la escena. Los desarrolladores integrados tienden a "especializarse" en estos lenguajes, ya que los compiladores están disponibles para casi todas las plataformas de destino integradas. Si su proyecto migra de, digamos, un chip con un núcleo de PowerPC a un chip con un núcleo ARM, puede estar bastante seguro de que su código C no será demasiado difícil de sobrepasar. Algunos chips tienen compiladores disponibles para otros idiomas, pero normalmente no coinciden con el compilador de C en términos de eficiencia del binario resultante. Como los sistemas integrados a menudo tienen pocos recursos, los diseñadores del sistema quieren que su código sea lo más eficiente posible (también es una de las razones por las que se ve mucho código de lenguaje ensamblador). He visto herramientas de desarrollo disponibles para lenguajes como C++, Pascal, Basic y otros, pero generalmente son herramientas de nicho que no son lo suficientemente maduras para igualar la eficiencia de los compiladores de C disponibles. Las herramientas de depuración para estos idiomas también tienden a ser más difíciles de encontrar que las disponibles para C/assembly.

También mencionó decodificadores. Los sistemas integrados en esta escala pueden incluir la potencia equivalente de una computadora de escritorio desde hace 7-8 años. Su RAM disponible, espacio de almacenamiento y poder de procesamiento les permite ejecutar sistemas operativos e intérpretes con todas las funciones para idiomas de más alto nivel. En estos sistemas más potentes, aún verá C y el lenguaje ensamblador que se está utilizando (para el código del controlador, sino nada más), pero otros idiomas (como Java, Lua, Tcl, Ruby, etc.) se están volviendo más y más comunes. El uso de lenguajes interpretados hace que el código de transferencia de una plataforma a otra sea aún más fácil, siempre que la plataforma tenga recursos suficientes para manejar la sobrecarga del intérprete de idiomas. Cualquier código de bajo nivel que se conecte directamente con el hardware (controladores) aún usa normalmente ensamblaje o C ya que los lenguajes de alto nivel no siempre tienen la capacidad de hacer este tipo de cosas. Cualquier cosa que se ejecute como una aplicación en la parte superior del sistema operativo incorporado generalmente se puede desarrollar y probar dentro de un emulador o máquina virtual, por lo que verá que se desarrollará una gran cantidad de código en cualquier idioma que el desarrollador se sienta cómodo.

Versión TLDR: C es popular porque es un lenguaje versátil con el que casi todos los desarrolladores están familiarizados. El ensamblaje es popular porque permite el acceso a hardware de bajo nivel de maneras que de otro modo serían difíciles o imposibles. Los lenguajes interpretados/con guiones, como Java, son cada vez más populares, pero los requisitos de recursos de los intérpretes para estos idiomas pueden ser demasiado para algunos sistemas integrados. La calidad y la variedad de disponibilidad de herramientas de desarrollo/depuración para los lenguajes C y ensamblador también hacen que estas opciones sean atractivas.

0

Si incluye el iPhone como una plataforma embebida continuación Objective-C

0

Teniendo en cuenta el número de veces que he tenido una excepción de Java fuera de la memoria de mi teléfono (la mayoría de las veces hago algo remotamente interesante), Me escapé de Java como un murciélago en un lugar caliente.

He oído que Erlang fue diseñado para el uso de teléfonos celulares. Creo que Lisp es una buena arquitectura para la compatibilidad con dispositivos remotos, si el dispositivo puede manejar el tiempo de ejecución.

0

Una gran cantidad de usuarios de vinos locales y pequeñas empresas que necesitan una solución barata han encontrado Tiny Tiger y Basic Stamp (utilizando BASIC) se adecua a sus necesidades.

Cuestiones relacionadas