Además de los recursos sugeridos anteriormente, debe comprender por qué necesita estos idiomas. El lenguaje de programación o un sistema operativo solo te llevará tan lejos como, por ejemplo, si está programando en plataformas integradas, generalmente la memoria no está en abundancia. Entonces necesitas codificar para la optimización de la memoria. Si está trabajando en tiempo real, debería comprender el manejo de interrupciones, etc. Le sugiero que definitivamente dedique tiempo a la arquitectura (ARM Cortex-M1, etc.) para la que planea codificar. Siempre ayuda.
Para más peculiaridades a ver en http://en.wikibooks.org/wiki/Embedded_Systems/C_Programming
Programación de sistemas integrados de Orielly en C y C++ es un buen lugar para comenzar una vez que tenga los fundamentos de C/C++ clara.
Esta pregunta no merece un voto negativo. – rahul
Esta pregunta es demasiado amplia. Cada uno de esos temas es muy detallado. Comience leyendo las entradas relevantes de Wikipedia sobre esos temas y explorando los enlaces relacionados. Luego desarrollará una comprensión de lo que necesita aprender y cómo puede hacer preguntas más específicas sobre StackOverflow para ayudarlo a aprender. –
@rahul, estoy de acuerdo. Al menos si le das una explicación de por qué. – griegs