¿Qué idioma usan los microcontroladores aparte de C?

6

Quiero comenzar a hacer dispositivos y leo sobre microcontroladores y otras cosas en Internet. Me pregunto si hay otros lenguajes para programar microcontroladores además de C.

    
pregunta user2635745

5 respuestas

17

Los chips no usan directamente C en absoluto. Tienen conjuntos de instrucciones que varían mucho entre diferentes arquitecturas.

Como una abstracción de muy bajo nivel de estos conjuntos de instrucciones, la mayoría de los fabricantes proporcionan un ensamblador, a través del cual puede traducir programas escritos en el lenguaje ensamblador relevante (que es aproximadamente una forma más fácil de leer de las instrucciones de la máquina) en formato binario que puedes subir a tu chip.

En el siguiente nivel superior, hay lenguajes como C. C es el idioma más dominante para la programación de microcontroladores en este nivel. Para algunas arquitecturas, también encontrará el compilador Pascal, BASIC o tal vez Fortran.

En teoría, lo único que necesita para usar un lenguaje determinado en una arquitectura dada es un compilador adecuado (aunque algunos, como Java, C #, etc., generalmente dependen de los entornos de tiempo de ejecución, y estos son prohibitivos para la mayoría de los usuarios). uC). En la práctica, no hay muchos compiladores disponibles.

    
respondido por el us2012
4

Como dijimos en el 2012, un µc no ejecuta realmente el lenguaje C en absoluto. En su lugar, ejecuta un lenguaje de máquina que es una representación binaria del conjunto de instrucciones del µc, con campos para un código de operación (qué hacer) y registre especificadores y / o direcciones (donde los datos se recuperan y / o almacenan). El lenguaje ensamblador es una representación simbólica de este lenguaje de máquina binario.

En el caso del lenguaje C, estas instrucciones de máquina son generadas por un compilador C, que casi siempre se ejecuta en una computadora separada de µc (una excepción es Linux integrado, que incluye el compilador gcc, que se ejecuta en µc con recursos suficientes para ejecutar un compilador).

Cuando el compilador se ejecuta en una PC, esto se conoce como compilación cruzada. Cada archivo fuente separado que contiene las declaraciones en lenguaje C se compila por separado, y la salida de cada uno se combina en un solo archivo descargable por programa enlazador. Este archivo descargable contiene las instrucciones en lenguaje de máquina mencionadas anteriormente y puede ejecutarse directamente en el µc.

Si desea ejecutar un idioma diferente en el µc, necesitará un compilador diferente para ese idioma. Sin embargo, hay una serie de idiomas que no se compilan en código de máquina, sino que se compilan en bytecodes estos no pueden ser ejecutados directamente por el µc, sino que deben ser ejecutados por un intérprete que se ejecuta en el µc (una variación es compilar los códigos de byte en lenguaje de máquina la primera vez que son ejecutados por el intérprete).

    
respondido por el tcrosley
3

Otro lenguaje candidato para la programación de microcontroladores es Ada. Ofrece muy buenas instalaciones para la programación de bajo nivel, así como una mejor detección de ciertos tipos de error antes de llegar a la etapa de ejecución del programa, lo que creo que me ayuda a desarrollar considerablemente más rápido que en C. El ejecutable resultante puede ser igual de pequeño como C, no es tan sorprendente cuando te das cuenta de que la mayoría del compilador Gnat Ada es el mismo optimizador y generador de código que el compilador de C más común (gcc).

Otro beneficio es que el código puede ser mucho más legible que C; otra forma de hacer que los problemas sean más fáciles de eliminar.

Más allá de los microcontroladores más pequeños, también ofrece buenas instalaciones orientadas a objetos y multitarea; el equivalente a un RTOS está integrado en el lenguaje.

Dos desventajas:

Ada tiene una reputación poco merecedora heredada de una versión de 30 años que es poco probable que encuentres en la actualidad; es posible que escuches reacciones muy emocionales contra ella. Ada-2005 es un lenguaje muy diferente ...

Y no todos los microcontroladores tienen un compilador de Ada y una cadena de herramientas. Dos populares que lo hacen, son el AVR de Atmel (para que pueda programar sus tableros Arduino en Ada) y el Texas Instruments MSP430 serie . También hay versiones de Gnat disponibles para muchas variedades del procesador ARM, incluida la distribución Debian de Raspberry Pi.

Cualquier otro objetivo de GCC puede potencialmente ser compatible con Ada, aunque la creación de GCC no suele ser un proyecto trivial ...

    
respondido por el Brian Drummond
1

Como dicen las otras respuestas, la mayoría de los uC vienen con cadenas de herramientas que admiten C y algunos otros idiomas similares, porque los idiomas más grandes, especialmente aquellos con recolección de basura, requieren muchos recursos.

Pero, en el espíritu de Ley de Atwood : "Todo será eventualmente portado a Javascript", le doy el Espruino , "El primer microcontrolador de JavaScript del mundo para principiantes o expertos.":

    
respondido por el Macke
0

Como uno de los otros usuarios comentó debajo de su pregunta, Arduino es muy popular y versátil en términos de proyectos y usos. Tiene su propio lenguaje que es muy similar a C ... por ejemplo, declara bibliotecas, variables y realiza llamadas a funciones. Sin embargo, tiene algunas de sus propias funciones inherentes para las que tendrá que aprender la sintaxis.

    
respondido por el ridecontrol53

Lea otras preguntas en las etiquetas