a manera de comentario, les puedo decir que ya hay microcontroladores que trabajan en linux, un ejemplo de ello es el AT91sam de atmel, o el ap7000 tambien de atmel, y como la tendencia indica que linux estara en su apogeo en poco tiempo. lo mejor es aprender C, en especial GCC para micros. Hay una compilacion de GCC para micros Atmel y la pueden buscar en la red como WinAvr e instalarla como parte del AVRstudio para los que programan micros de Atmel.
Tambien hay micro de otas casa como Texas Instrument como el Stellaris ARM CORTEX que seguramente ya soportan linux.
y he leido que hay micros que trabajan con una virtual machine en java, a si que lo mejor es checar que tipo de microcontrolador se va a usar y en base a eso seleccionar el lenguaje.
pueden checar estos linx
http://www.atmel.com/products/at91/
http://focus.ti.com/general/docs/gencontent.tsp?contentId=54556&DCMP=Luminary&HQS=Other+OT+stellaris
Tal vez es muy tarde, pero escribo esto para evitar que gente que apenas lee el tema quede malinformada con este tipo de comentarios...
En realidad no se a que se refiere el autor del tema al mencionar "ya hay microcontroladores que trabajan con Linux". Y despues hacer mención al compilador WinAVR.
Solo me gustaria decir que entre GCC y Linux no hay equivalencia alguna.
Lo que se ha hecho es que el compilador GCC pueda generar código objeto para diferentes arquitecturas (e.g. ARM, AVR32, MIPS, entre otras), algunas de esas arquitecturas utilizadas en microcontroladores, por ejemplo los Atmel ya mencionados. Esto en ningún momento es trabajar con Linux!
Por lo tanto puedes programar un microcontrolador utilizando el compilador GCC (el mismo que se usa en Linux) y ya.
En algunos procesadores es posible instalar Linux (ojo, Linux solo se refiere al kernel) y algún sistema de archivos embebido, también hay opciones para instalar Linux en procesadores que no cuentan con MMU (e.g. ucLinux).