¿Cuáles son las ventajas de aprender C o C ++ para la programación de microcontroladores en lugar de usar lenguajes de nivel superior como Python?

Python requiere un sistema operativo sustancial para soportarlo, lo que conlleva el impacto obvio de una mayor huella de memoria, consumo de energía, etc. Lo que no es obvio es que en realidad puede interponerse en el camino de una aplicación que funcione correctamente. Un poco de código C haciendo un ataque de bits en un par de pines de E / S será completamente determinista, y dará como resultado una sincronización precisa y controlable en un escenario de programación simple. En un sistema operativo multitarea que ejecuta todo tipo de demonios y tiene una red con la que lidiar, el mismo código C básico estará plagado de pausas y tiempos inconsistentes. Es probable que el código equivalente escrito en Python sea aún peor. Hacer que funcione correctamente será una gran tarea, y el límite máximo de rendimiento siempre será menor. Esta es la gran diferencia entre usar código apretado en un Arduino frente a un tablero RPi o Beagle u otro SBC.

Debe distinguir entre microcontroladores como el Arduino y las computadoras System on a Chip como el Raspberry Pi. Los microcontroladores generalmente tienen muy poca memoria, de 16K a 256 KB, y no tienen sistema operativo. Debido a la pequeña huella de memoria, no pueden ejecutar un intérprete necesario para Python. (Hay algunos sistemas muy reducidos, vea Programación de un Arduino usando Python, en lugar de C / C ++ pero no es realmente práctico). C / C ++ son la única opción real aquí.

Un Raspberry Pi es algo muy diferente, normalmente ejecuta un sistema operativo Linux con mucha memoria y un intérprete de Python incorporado. Las ventajas de Python aquí son la simplicidad y la buena gama de bibliotecas. C ++ ofrece velocidad.

En estos días, Python es aceptable en estas plataformas.

Lo siento, esa es una afirmación incorrecta. Si eres un aficionado, haz lo que te parezca interesante y fácil. Si está construyendo un producto comercialmente, las restricciones son más estrictas; lo más importante es la viabilidad técnica y comercial del producto.

Digamos que los requisitos funcionales pueden satisfacerse con un chip de clase TI Sitara compatible con Python o una clase TI Tiva que ejecuta C. Encontrará que:

  1. Los chips en sí tienen diferencias de costo significativas. Mucho más importante, el Sitara necesita un montón de silicio de soporte (RAM, flash, etc.) para completar un sistema.
  2. La PCB Sitara más grande significa una carcasa del sistema más grande. Esto le costará más, si es aceptable desde la perspectiva del producto. El sistema más complejo también puede significar la diferencia entre sobrevivir con una placa de 2 capas y necesitar 6. Esto afecta directamente su costo: rendimiento de fabricación, pruebas, etc.
  3. El sistema Sitara usará más potencia. Incluso si esto no es un problema por decir, aún puede costarle. Ese poder disipado tiene que ir a algún lado. Podría significar la diferencia entre exprimirse con una caja de plástico súper barata y necesitar aluminio fundido más costoso.
  4. Todos esos chips adicionales del sistema Sitara le costarán en una miríada de complejidades no obvias y ocultas. ¿Puede obtener todo en las piezas de grado de temperatura automotriz que exige el proyecto? ¿Todos estos componentes tienen disponibilidad garantizada para los próximos 7 años? El esquema de reloj y la distribución son más complicados. ¿Cuánto más difícil ahora es cumplir con FCC, ETSI?

Como otros ya han mencionado, las restricciones comerciales sobre costo y eficiencia obligan a las personas a usar idiomas de bajo nivel.

Idealmente, usaría el ensamblaje para las operaciones de E / S y agregaría lenguaje C si necesita un poco de codificación. Se prefiere el lenguaje C, ya que es el lenguaje de bajo nivel que se puede transferir entre microcontroladores. Raspberry Pi tiene su propio sistema operativo, pero muchas veces el trabajo lo haría un chip mucho más simple. Incluso con Arduino Mega, el requisito de memoria se escala muy rápidamente y el proceso se ralentiza a medida que agrega más bibliotecas.

Los microcontroladores utilizados en las placas Arduino (y también en la mayoría de los dispositivos) no pueden ejecutar ningún sistema operativo y el rendimiento no es tan bueno, a pesar de que los casos de uso a menudo requieren una sincronización precisa. Por lo tanto, usar C / C ++ (e incluso Assembly) es una opción mucho más eficiente y sensata que un lenguaje de gama alta extremadamente lento y con muchos recursos como Python.

Además, C y C ++ pueden implementarse con una biblioteca de clase / función estándar mínima centrada en E / S, temporizadores, etc., haciendo que el código central sea casi inexistente y, por lo tanto, dejando espacio para el código de la aplicación.

Por otro lado, una Raspberry Pi está específicamente diseñada para ser útil como una computadora completa, por lo que puede ejecutar Linux fácilmente con una GUI. Python también está incluido. El precio de un Pi es sospechosamente similar al de un Arduino, a pesar de que Pi es mucho más potente, pero tenga en cuenta que un chip microcontrolador optimizado para usar en electrodomésticos puede costar hasta $ 1.

En mi opinión, si comienzas un nivel bajo (C / C ++) obtienes una gran disciplina. Con esa disciplina también obtienes comprensión. En una etapa posterior, puede cambiar a un lenguaje de script 4GL.

Mate
————————

Tarjeta de sonido para Raspberry Pi: inyector de audio
Proporciona entrada y salida de audio de alta calidad.
Tarjeta de sonido de inyector de audio para Raspberry Pi