En mi opinión, después de haber realizado una programación integrada de vez en cuando durante más de 30 años, la plataforma Arduino puede ser una herramienta muy buena, por ejemplo, para hacer prototipos rápidos de cosas que necesitan un “cerebro”. Pero no es necesariamente un buen entorno para aprender el oficio de la ingeniería de software embebido. Creo que ya has descubierto esa parte, porque pareces tener la sensación de que realmente no estás aprendiendo nada.
Para adquirir el tipo de experiencia y comprensión de programación de bajo nivel necesarias para convertirse en un buen programador de entornos integrados, le sugiero que se familiarice con el diseño y desarrollo del sistema operativo. Si observa, por ejemplo, un kernel de Unix, encontrará muchas interfaces de hardware y muchas técnicas de programación que son similares a las que encontrará en un entorno integrado. Encontrará secciones de arranque que inicializan el hardware y el software, puede examinar varios controladores de dispositivos de hardware (preste especial atención a los temporizadores programables y dispositivos básicos de E / S como puertos serie) y encontrará cosas más avanzadas como MMU (unidades de administración de memoria) eso, aunque no está presente en microcontroladores más simples, aún proporciona una gran cantidad de información sobre cómo un sistema operativo adecuado maneja la memoria y la gestión de procesos.
Cuando haya jugado un rato con eso, intente escribir un controlador de dispositivo. Por ejemplo, para algún tipo de dispositivo USB simple que pueda tener en casa.
- Soy un ingeniero profesional de sistemas embebidos que está bastante versado en C. Quiero comenzar a aprender C ++ para comprender la programación orientada a objetos. ¿Qué tipo de proyectos debería intentar comprender bien el concepto y la familiaridad de C ++?
- Cómo aprender ingeniería de software embebido
- ¿Por qué la mayoría de los circuitos integrados fabricados por Intel comienzan con 8 (por ejemplo, 8086, 8051, 8284)?
- ¿Los ingenieros electrónicos suelen ser muy buenos programadores porque hacen desarrollo integrado?
- ¿Cuál es el mejor centro de capacitación para sistemas integrados en India?
Además, familiarícese con la electrónica básica. No necesariamente al nivel de convertirse en un diseñador o ingeniero electrónico, pero lo suficiente como para comprender lo que sucede después de que los suyos y los ceros dejan los puertos de E / S de su procesador.
Luego, aprende a pensar y programar en lenguaje máquina. Ensamblador. Si observa los sistemas operativos principales que se ejecutan en una computadora personal, su primera opción será, por supuesto, x86 o posiblemente ARM. Pero hay una serie de buenos microcontroladores, todos con buena documentación técnica de su respectivo lenguaje de máquina, y la mayoría tienen herramientas de desarrollo gratuitas, como ensambladores y compiladores de C. Mire estas hojas de especificaciones y otra documentación de varios microcontroladores. Consígase una placa de desarrollo con una que le parezca interesante. No te daré ninguna sugerencia, porque todo es cuestión de gustos y qué cualidades específicas se adaptan a las necesidades de cualquier proyecto en particular.
¡Pero no dispares demasiado alto! Alguien sugirió 8051, y esa es de hecho una excelente plataforma para comenzar a mirar. Ha existido desde la década de 1980, por lo que es maduro, y hay muchos kits de herramientas y conocimientos que se pueden encontrar. Pero la parte más importante es que es una arquitectura algo limitada. Es de ocho bits, y aprender a programar código incrustado en algo con capacidad de procesamiento y memoria limitadas y pocos modos de direccionamiento fomenta el buen pensamiento y las habilidades de programación.
Un buen programador no escribe código C o Java o Python, escribe * código *, en cualquier lenguaje y entorno en el que se encuentre.