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

  1. Aprende C / C ++. Practicalo. Haz algunos proyectos. Pruébate.
  2. Aprenda los conceptos del sistema operativo. Trabaja con Unix / Linux. Trabaja en programación C multiproceso con hilos Pthreads. Aprenda la comunicación entre procesos. Trabajar en la programación del kernel de Linux. Trabajar en la programación del controlador del dispositivo.
  3. Aprender arquitectura informática. Lea 8086 (x86), 8051, arquitectura ARM. Tanto como puedas.
  4. Vea cómo se realiza la compilación cruzada. Trabaja con varios IDE y sin entorno IDE. Haz algunos proyectos con arduino / raspberry pi.
  5. Revisa tus conocimientos de electrónica. ADC, sensores, relés, interfaz de pantalla, interfaz de cámara, etc. Utilice osciloscopios, multímetros, analizadores lógicos, etc.
  6. Aprenda CADsoft eagle u OrCAD. Diseña tu propia PCB.
  7. Lea tantas hojas de datos como sea posible. Módulo BLE, módulo WiFi, módulo ZigBee, etc. Lea la hoja de datos de las placas de desarrollo de Snapdragon.
  8. Aprenda cualquier lenguaje de descripción de hardware. VHDL o Verilog.
  9. Aprenda tecnologías web- (HTML, JS), Databses- (Sqlite, Mysql), Java y Python también. Será útil para aplicaciones IoT. Opcional.
  10. Aprenda simpleCV, OpenCV para trabajar en proyectos de procesamiento de imágenes.
  11. Trabaja en Android Native Development Kit (NDK). Revise los diversos códigos fuente de las versiones de fuente Kernel de Xiaomi o Oneplus.
  12. Aprende ingeniería inversa. Frenar algo Depurar usando RX / TX-UART, JTAG. Procesos de depuración en un sistema operativo.
  13. Aprenda perfiles / optimización de su código. Ser bueno en estructuras de datos y algoritmos. Herramientas de perfilado: Gperf, Intel Vtune Amplifier., Etc.

Solo puedo pensar en estos en este momento.

Supongo que esa pregunta está orientada a cómo alguien debería aprender a construir un sistema integrado, no cómo el sistema integrado puede “aprender”.

Hay dos tareas principales diferentes: crear una plataforma de hardware para un sistema integrado y escribir software para él. Cualquiera que sea la tarea que elija hacer, debe tener algún conocimiento sobre la otra.

La respuesta a la pregunta principal es primero elegir qué tarea entre esas dos, al conocerlas.