El lenguaje de programación C no es diferente en los sistemas integrados que en cualquier otro lugar. La diferencia está en qué problemas resuelve. Entonces, solo aprende C usando plataformas de programación convencionales, donde es más conveniente y productivo.
El dominio del problema es algo diferente en los sistemas integrados, ya que su código probablemente necesitará acceder al hardware de alguna manera. Casi con certeza, esto implicará aprender sobre el hardware hasta cierto punto, pero esto no es parte de C. En la mayoría de los casos, se accede a los registros de hardware a través de punteros que se inicializan con las direcciones de los registros de hardware, por lo que aprender sobre los punteros es bastante exhaustivo. una buena idea. Además, probablemente sea útil comprender algo acerca de cómo un compilador genera código y cómo eso puede afectar la lectura y escritura de registros. Puede ser importante comprender cómo puede ocurrir una búsqueda de datos de un registro en búsquedas múltiples o únicas, ya que los periféricos de hardware pueden reaccionar de manera diferente en diferentes casos. Nuevamente, esto no es tanto parte de C, sino más bien un compilador específico combinado con hardware específico.
Donde puede invertir algo de aprendizaje es en cómo crear y usar cadenas de herramientas del compilador de C, incluidas todas las partes que se utilizan para compilar su código de forma cruzada y cargarlo en el host de destino incrustado. Dado que la mayoría de los sistemas embebidos funcionan implica una separación clara de los hosts de desarrollo y de destino, y muchos o la mayoría de los sistemas embebidos no cargan programas de un sistema de archivos alojado en el sistema operativo, deberá aprender cómo se traduce el código fuente C en módulos de objeto que se pueden instalar para ejecución en el objetivo. Comprender los detalles de los vinculadores, cargadores y tipos de archivos de código de objeto y cómo se combinan a menudo es muy importante para poner en funcionamiento los sistemas integrados. Esto se trata de las cadenas de herramientas cruzadas en C, pero relativamente poco sobre el lenguaje C en sí.
- ¿Qué significa exactamente un ingeniero incorporado?
- Cómo tener la oportunidad de trabajar en VLSI o en un dominio incorporado
- ¿Hay futuro para los sistemas embebidos o el diseño VLSI?
- ¿Cómo se usa Python en sistemas embebidos?
- Cómo aprender incrustado en C ++
Algunas personas le dirán que use pequeños ecosistemas que se han construido para permitir que la gente no aprenda la mayoría de los detalles anteriores. Dado que especificó el aprendizaje como un objetivo principal, considero que los gustos de Arduino y sistemas similares no ayudan o incluso obstaculizan el proceso de aprendizaje. Utilizan un dialecto arcano / subconjunto de C & C ++, que se ha simplificado deliberadamente para protegerlo del proceso de aprendizaje de muchos sistemas integrados. Son excelentes para los aficionados a la formación de cosas que funcionan, pero no son excelentes entrenadores para C en sistemas integrados. Dado que también dijo “mejor” en lugar de “más rápido” o “más fácil”, creo que esto encaja perfectamente con su pregunta.