Consulte este sitio para conocer algunas plataformas Cortex-M3 que soportan Linux (uClinux):
http://www.emcraft.com/
Hemos ejecutado con éxito uClinux en los siguientes MCUs Cortex-M3: LPC1788 de NXP, STM32F2 de STmicro, SmartFusion de Actel, y estamos en proceso de añadir soporte para un par más: Freescale Kinetis, STM32F4 (estos dos son Cortex-M4 en lugar de Cortex-M3).
Es cierto que Linux (incluido uClinux) requiere RAM externa para funcionar - la SRAM integrada de Cortex-M no es lo suficientemente grande incluso para una configuración de Linux ultra-estrecha; necesitas al menos 4MB de RAM externa para configuraciones prácticas. Cuanto más mejor, de hecho - si tu aplicación necesita "características", Linux tiene soporte para casi todo y no te arrepentirás de haber añadido más RAM en lugar de menos.
En cuanto a los dispositivos concretos que se utilizan para la RAM externa, todo viene definido por la interfaz de memoria externa que proporciona una MCU concreta. El STM32F y el SmartFusion sólo soportan SRAM; podrías conseguir una PSRAM de 16MB y 70ns (con un modo de página para un funcionamiento más rápido) por $6-7; LPC1788 support faster SDRAM memories; Kinetis K70 supports DDR2 ($ 5 para un dispositivo de 64MB), etc. Todas esas memorias consumen apenas uA en tiempos estáticos.
Necesitas algo para cargar un Linux de arranque, pero esto puede ser casi cualquier cosa - red, tarjeta SD, SPI EEPROM, NOR o NAND Flash, etc.
En general, me atrevo a decir que Linux es una opción totalmente práctica para un diseño Cortex-M3.
Actualización
Hay un montón de aplicaciones sensibles a la energía en las que su dispositivo está inactivo la mayor parte del tiempo, sin embargo, cuando se ejecuta, tiene que ser capaz de hacer muchas cosas que no van a ser fáciles de lograr utilizando un RTOS más pequeño. Conexiones seguras, VLAN, túnel TCP/IP, SNMP, tarjeta SD, dispositivo USB / host, WiFI, etc y la lista de requisitos sigue y sigue.
Con un RTOS más pequeño algunas de esas características estarán disponibles, otras no, sin embargo es sólo una parte de la historia. Lo que estamos viendo con nuestros clientes cada vez más es que los diseños embebidos que utilizan Cortex-M3 no necesitan sólo 1 o 2 de esas características avanzadas, sino que necesitan muchas de ellas de un solo dispositivo. Aunque un RTOS proporcione todas las funciones que necesita un diseño, meterlo todo en la memoria del chip va a ser un reto. Con uClinux o sin él, mi opinión es que la tendencia va a ser que cada vez más diseños basados en Cortex-M utilicen memoria externa. Por supuesto, una vez que se consigue una RAM externa en el diseño, uClinux empieza a tener más sentido.
En lo que respecta a la baja potencia de procesamiento proporcionada por Cortex-M (en comparación con los requisitos del kernel de Linux), como experiencia reciente, acabamos de habilitar uClinux en la MCU Freescale K70. Se trata de un Cortex-M4 (que es lo mismo que el Cortex-M3 más unidades FP y DSP de hardware); interfaces en el chip para RAM de alta densidad (DDR2) y Flash (NAND), con cachés de 2x8KB en el chip. Núcleo Cortex-M de 120Mhz, con piezas de 150Mhz que saldrán próximamente.
Linux (uClinux) se ejecuta perfectamente en este dispositivo. Usando 'dhrystone', obtenemos alrededor del 50% del rendimiento que obtenemos en una caja PowerPC de 250Mhz de Freescale. Arranque rápido, mucha RAM (el módulo TWR-K70 proporciona 128MB de RAM y 256MB de NAND Flash), red, JFFS2, framebuffer, SSH, HTTPD, Qt/E - todo esto funciona muy bien en el K70. La experiencia general del usuario es la de un "Linux embebido" normal en un microprocesador lleno de MMU.
A continuación se muestra el vídeo de una sesión de uClinux en vivo que se ejecuta en la MCU Freescale Kinetis K70 Cortex-M4:
http://www.youtube.com/watch?v=UZjJrLG9CeA