Realmente hay dos cosas llamadas “incrustadas” y la respuesta depende de lo que esté haciendo.
Hay “Linux integrado”: este es esencialmente un servidor en miniatura desplegado en el campo, como un Raspberry Pi o uno de sus enrutadores domésticos. El principal problema incrustado es que (a) puede necesitar dispositivos personalizados para interactuar, (b) puede que tenga requisitos leves en tiempo real y (c) nunca debe dejar de funcionar. Los recursos no son tan diferentes de una PC. Sería común tener 32, 64 o incluso 256 MB de RAM y 64 MB – 10 GB de almacenamiento en disco.
Para estos sistemas, generalmente necesita buenas habilidades de Linux de bajo nivel, y puede hacer un montón de su codificación en C ++. Hay muchos libros buenos para esto: no sé de antemano, pero sé que O’Reikly tiene algunos. Además de cualquier libro de Linux de bajo nivel. Si te obliga a construir núcleos, has venido al lugar correcto.
- Si quiero estar a la par con las necesidades futuras de programación en sistemas integrados, ¿qué idiomas debo aprender?
- ¿Pueden los lenguajes de alto nivel volverse frecuentes en sistemas embebidos en un futuro cercano (o no tan cercano)?
- ¿Por qué hay tantas restricciones en el uso de Linux para sistemas integrados?
- ¿Cuáles son las ventajas y desventajas de utilizar una emulación EEPROM real versus una emulación EEPROM en flash en un microcontrolador?
- ¿Cuáles son las desventajas del sistema PLC?
Luego está “incrustado en profundidad”, ya sea metal desnudo o algún tipo de RTOS. Sus recursos son mucho más limitados, a veces muy, muy limitados, tal vez solo 2k de RAM.
Para la incrustación profunda, por lo general, debe ceñirse a C directo (en realidad un subconjunto de C, descartando muchas funciones de biblioteca más todas las cosas malloc) o un subconjunto muy restringido de C ++. C ++ simplemente tiene demasiadas funciones que pueden explotar inesperadamente el uso de memoria o hacer que los depuradores sean bastante inútiles.
En cuanto al libro, evite las cosas que están dirigidas a Arduino o Linux. Honestamente, muy poco bien por ahí. Las cosas de Jack Ganssle son bastante buenas.
De todos modos, espero que esto ayude, es importante saber a qué tipo de plataforma se dirige, e incluso el idioma es diferente entre ellos.