Si está buscando un libro de principiante decente en sistemas integrados, le recomendaría Making Embedded Systems.
Para tener éxito técnico como ingeniero de firmware, es importante tener una buena comprensión del hardware y del software en el que está trabajando.
Hardware:
Como es un ingeniero eléctrico, el hardware puede ser más natural para usted, pero es importante comprender cómo funcionan los diversos componentes de una placa. Por ejemplo, tiene un circuito que activa un borde en un pin, lo que provoca que se dispare una interrupción. La mayoría de los ingenieros de firmware que trabajan en la creación de placas y depuración deben sentirse muy cómodos con el uso de ámbitos, analizadores lógicos, pruebas de circuitos, etc.
- ¿Cuál es el mejor instituto en Pune para Linux incrustado?
- ¿Qué debo aprender para sobresalir en la programación integrada?
- ¿Qué tan diferente es un producto electrónico de un proyecto?
- ¿Cómo sabe un microcontrolador que un byte solo es un código de operación?
- Estoy 2013 desmayado, colocado en TCS. Después de estar en el banco durante 4 meses, me vi obligado a tomar un proyecto de Infraestructura. Trabajé durante 2 meses, sentí que estaba arruinando mi carrera y renuncié. Ahora me estoy preparando para la planificación de CDAC para el curso de sistemas integrados. ¿Cómo planificarme para conseguir un buen trabajo en CDAC?
Software:
Comenzaré desde conceptos de muy bajo nivel a niveles superiores.
1. Arquitectura de la computadora: en primer lugar, comprender cómo funciona una computadora. Una buena comprensión de la arquitectura de la computadora es importante. Después de todo, está trabajando con una computadora, por lo que necesita comprender las instrucciones de ensamblaje que utiliza su micro, cuántos ciclos tarda una instrucción en ejecutarse, cuántas etapas hay en la tubería, si hay datos separados y un bus de instrucciones, etc.
Recuerdo haber visto un video de Dan García cuando aprendí arquitectura de computadoras. Es un gran maestro y hace que la clase sea divertida.
2. Comprensión de periféricos, manuales de referencia, hojas de datos: en mi opinión , este es el siguiente nivel de abstracción. Si bien el núcleo de la arquitectura de la computadora se aplica a todos los microcontroladores, varios fabricantes y micros tendrán varios periféricos e instrucciones sobre cómo acceder a ellos. Lo que quiero decir con periféricos son sus GPIO, temporizadores, ADC, UART, I2C, DMA, CAN, etc. Para ser un experto, desea comprender cómo funcionan estas cosas desde la perspectiva del hardware y del programador. ¿Qué tipo de errores se introducen con las lecturas de ADC? El manual de programación tendrá información sobre cómo usar el periférico correctamente, como la secuencia que debe usar para modificar la frecuencia de reloj PLL utilizada por el micro. Los manuales de programación para micros tienen cientos de páginas, así que si no ha hecho mucha programación integrada, elija un Arduino y revise el manual de referencia para el micro atmel.
3. Aprenda varias arquitecturas: bucles principales simples, interrupciones con primer plano / fondo, RTOS usando tareas / hilos. La mayoría de los sistemas embebidos en tiempo real están escritos en C / C ++. Lo que hay que saber es la interrupción de la sobrecarga, la implicación del cambio de contexto, la seguridad del hilo. Sugeriría aprender al menos un RTOS como FreeRTOS si no sabe mucho sobre el sistema operativo. Tiene una excelente documentación y el código está disponible gratuitamente.
4. Protocolos, redes y datos en movimiento: la mayoría de los dispositivos integrados se comunican con otros dispositivos, esencialmente están moviendo información. Los protocolos están en todas partes en las computadoras. Entonces, aprenda cómo se implementan varios protocolos, tanto en hardware como en software. ¿Cómo se garantiza la entrega de datos, cifrado, compresión, etc.
5. Lenguaje y estructura : Domine el lenguaje C / C ++. Puede que algún día veamos que el lenguaje de programación Go se haga cargo, pero eso aún no ha sucedido. Mis libros favoritos son los clásicos K&R, Expert C Programming, C ++ Primer y, por supuesto, el lenguaje de programación C ++ de Stroustrup.
Aún hay más, como algoritmos, DSP, estructuras de datos, sistemas de control, cálculos numéricos, multinúcleo y paralelismo, FPGA, lenguaje de diseño de hardware. Incluso entonces, cada uno de estos temas tiene muchos libros escritos sobre ellos, pero no se asuste si aún no sabe mucho. Mientras tenga el deseo de aprender a su debido tiempo, puede convertirse en un Maestro. El éxito, por otro lado, es una cuestión de perspectiva 🙂