Si el lenguaje C es bien conocido, ¿es beneficioso tomar entrenamiento para C incrustado?

¿Qué quiere decir con “C incrustado”?

Muchos de los sistemas embebidos de alta visibilidad actuales están ejecutando alguna variante de Linux, por lo que es mejor que aprenda sobre la programación de sistemas de espacio de usuario y la programación de kernel.

Si, en cambio, se refiere a sistemas pequeños (es decir, de 8 bits, con recursos limitados, con quizás uno o dos K ​​de espacio de código y unos cientos de bytes de RAM), entonces sí, vale la pena hablar con algunas personas que trabajan en ese dominio.

Gran parte de lo que haga aquí será “absorber la lógica”, básicamente reemplazar las puertas lógicas con software. Pero deberá sentirse completamente cómodo con las diferencias entre E / S con asignación de memoria y asignación de bus, escribir ISR, tratar con periféricos integrados, protocolos de comunicación comunes como I2C y SPI, UARTS, temporizadores, etc.

También deberá poder leer (al menos las partes digitales de) esquemas de circuitos para determinar de qué manera conducir los pines de E / S y si se necesitan pull-ups internos, etc. Ah, y necesitará sentirse cómodo. con el uso de osciloscopios, generadores de señales, generadores de formas de onda arbitrarias y ocasionalmente un soldador (para cuando los EE se equivocan)

También necesitará aprender las diferencias entre C89 / C90 y la C moderna, ya que muchos compiladores para chips pequeños todavía están atascados en los viejos estándares.

De cualquier manera, debe desarrollar una buena disciplina en torno a la estructuración correcta de su código, las mejores prácticas y expresiones idiomáticas específicas del idioma, el diseño para la prueba, etc. Esos son universales.

No. Sería mucho mejor obtener entrenamiento en electrónica.

Embedded C se utiliza principalmente para crear productos electrónicos controlados por un microcontrolador. Si desea hacer esto profesionalmente, estudie ingeniería eléctrica, especialmente electrónica digital y cómo funcionan y se programan los microcontroladores. El lenguaje es solo una pequeña parte del todo.

Embedded C es principalmente solo C usado en algo sin un sistema operativo de propósito general. Entonces, si aprende C, ya conoce el 99% de C. incrustado. La parte más difícil es saber codificar en una máquina con memoria y velocidad limitadas, y cómo controlar el hardware. Eso es sobre todo conocimiento de electrónica.

Las aplicaciones integradas utilizan características que normalmente no se encuentran en la mayoría de los sistemas. Interrupciones de hardware, canales ADC / DAC y registros de funciones especiales, por nombrar algunos. El uso adecuado de las interrupciones es lo que separa a un buen programador c de un buen programador c incorporado.

More Interesting

En el 8051 microcontrolador, 2 ciclos de máquina significa ¿cuántos pulsos de reloj?

¿Cuáles son algunos sistemas operativos en tiempo real (RTOS) que la NASA ha utilizado y por qué?

Si ya voy a tomar una clase de proyecto CS (Sistemas informáticos integrados), ¿debería molestarme también en tomar el Proyecto de ingeniería de software?

¿Cuál fue el mejor libro para aprender sobre los sistemas integrados para principiantes?

Sistemas integrados: ¿Por qué la configuración de los pines GPIO cambia entre placas EVM de desarrollo y placas personalizadas?

¿Vale la pena hacer un curso CDAC en un sistema integrado?

¿Qué instrucciones están escritas para los conductores y en qué idioma están programadas?

¿Cómo es el curso de sistema integrado en VJTI?

¿Cuál es una ruta de aprendizaje recomendada para aprender programación integrada?

¿Puede el titular de un diploma ECE convertirse en ingeniero de sistemas integrados también?

¿Alguien puede ayudarme a encontrar la dirección de Pc0-Pc5? La hoja de datos: http://www.pmt-fl.com/downloads/picocap/DB_PCap01Ax_0301_en.pdf

Cómo hacer un proyecto de mi BE el semestre pasado en IoT

¿Cuál es la arquitectura de puerto paralelo de 8051?

¿Las empresas están subestimando el esfuerzo para el desarrollo de dispositivos conectados e integrados? ¿Hay ejemplos de implementaciones de IoT fallidas?

¿Cuál es el nivel de precisión del uso de la visión por computadora para detectar el movimiento desde una plataforma en movimiento? ¿Y qué tan difícil es usar la biblioteca OpenCV y crear una aplicación de Android que procese video infrarrojo sobre la marcha y genere alertas cuando detecte movimiento? ¿cualquier otra sugerencia?