¿Aprenderé cómo se comunican el software y el hardware con C?

C es absolutamente el lenguaje correcto para lo que quieres hacer , pero solo ser experto en C solo no te proporcionará lo que necesitas para lograr tu objetivo.

Lo que necesitas aprender es electrónica. En particular, pequeña señal electrónica analógica y digital. El “hardware” es la electrónica, por lo que la interfaz con el hardware a través de C consiste en utilizar el código para controlar los circuitos electrónicos , y para controlar la electrónica es necesario comprender la electrónica: es así de simple.

En cuanto a mí, comencé mi carrera aprendiendo electrónica incluso antes de aprender a programar. Un buen conocimiento de la electrónica fue mucho más importante para los programadores que experimentamos los “primeros días” de la informática, aunque a menos que desee convertirse en un ingeniero de sistemas integrados, la mayoría de los programadores no lo necesitan en estos días.

Por lo tanto, si Embedded es la forma en que desea ir, mi recomendación es la siguiente: adquirir la misma experiencia y conocimientos tanto en electrónica como en desarrollo de software. Los mejores ingenieros integrados son “mitad EE y mitad programador”.

Necesitará aprender a operar y usar efectivamente medidores de volt / ohmios y osciloscopios como mínimo, y sería mejor también aprender a usar cosas como analizadores lógicos, analizadores de protocolos y analizadores de espectro, ya que es probable que necesite úselos en uno o más puntos en su carrera de ingeniería integrada.

Tendrá que saber leer y comprender los esquemas, leer y comprender las hojas de datos de los componentes, leer y comprender las guías del usuario del microprocesador / microcontrolador y los manuales del programador.

Espero haberte dado algunas buenas ideas sobre lo que necesitarás aprender; ahora la investigación y el aprendizaje dependerán de ti.

¡Te deseo el mejor de los éxitos!

🙂

C ayudará, ya que es el lenguaje de los sistemas operativos y está hablando de cosas que están en el dominio del sistema operativo y la CPU (sí, el sistema operativo por sí solo no puede hacer todo solo), pero creo que se beneficiará mucho al dos cosas:

1. Aprender lenguaje ensamblador
2. Aprenda los conceptos del sistema operativo

Lea los manuales para desarrolladores de Intel, http://www.intel.com/content/www … Son hojas de datos muy largas pero contienen toda la información necesaria, normalmente son 3 volúmenes, para usted, el volumen 3 es el indicado, porque ahí es donde describa cómo la CPU gestiona la memoria, las interrupciones, etc. Este es un conocimiento importante en el sentido de que cuando se acerque a un concepto más abstracto (como procesos o señales) tendrá una sólida comprensión de estar familiarizado con el nivel de hardware.

Obtenga un libro como “Modern Operating Systems 4th Edition by Tanenbaum” https://www.amazon.com/Modern-Op

Hay un capítulo que explica los procesos. Tenga en cuenta que se necesita algo de conocimiento, principalmente C. Para comprender los procesos, uno debe comprender la arquitectura de memoria de la máquina, el sistema de memoria virtual, la paginación, etc. sin ella, tendrá problemas para obtener una visión general. Buena suerte, esto es algo divertido!

¡NO aprenderá cómo funciona la RAM (“memoria de acceso aleatorio”) al aprender C!

[Por ejemplo, sobre la física; transistores, condensadores.]

Tampoco aprenderá que la RAM ya no es realmente de acceso aleatorio … y los cachés (muchos niveles ahora) lo hacen así.

También puede aprender otro idioma, como Julia, que tiene recolección de basura (pero también administración de memoria manual si lo desea …); y punteros si realmente desea usar … [Esos pueden ayudar a aclarar algunas cosas … y son necesarios, por ejemplo, para E / S mapeadas en memoria.]

Necesita aprender sobre cachés, para obtener la mayor velocidad, y estos son transparentes para cualquier idioma.

No aprenderá sobre detalles algo importantes, de la memoria virtual (traducción de la memoria virtual a la física), de cualquier cosa en cualquier idioma que conozca, mirando el código del espacio de usuario .

Esos detalles sobre los que puede aprender en teoría o en la práctica al estudiar el lenguaje ensamblador y / o los fundamentos del sistema operativo (y su implementación del código fuente, sí, probablemente en C ..).