Consulte este sitio para ver algunas plataformas Cortex-M3 que admiten Linux (uClinux):
http://www.emcraft.com/
Ejecutamos con éxito uClinux en las siguientes MCU Cortex-M3: LPC1788 de NXP, STM32F2 de STmicro, SmartFusion de Actel, y estamos en proceso de agregar 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 pequeña; necesita al menos 4 MB de RAM externa para configuraciones prácticas. Cuanto más, mejor, de hecho, si su aplicación necesita "características", Linux tiene soporte para cualquier cosa y no se arrepentirá de haber agregado más RAM en lugar de menos.
Con respecto a dispositivos particulares para usar para RAM externa, todo está definido por la interfaz de memoria externa proporcionada por una MCU particular. STM32F y SmartFusion solo admiten SRAM; podría obtener una PSRAM de 70 MB de 16 MB (con un modo de página para una operación más rápida) por $ 6-7; LPC1788 admite memorias SDRAM más rápidas; Kinetis K70 admite DDR2 ($ 5 por un dispositivo de 64 MB), etc. Todos esos recuerdos consumen energía solo a niveles de uA en momentos estáticos.
Necesita algo para cargar un Linux de arranque, pero puede tratarse de 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.
Actualizar
Hay muchas aplicaciones sensibles a la energía en las que su dispositivo está inactivo la mayor parte del tiempo, sin embargo, cuando se ejecuta, debe poder hacer muchas cosas que no serán fáciles de lograr con un RTOS más pequeño. Conexiones seguras, VLAN, tunelización TCP / IP, SNMP, tarjeta SD, dispositivo / host USB, 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 solo una parte de la historia. Lo que vemos cada vez más con nuestros clientes es que los diseños integrados que utilizan Cortex-M3 no necesitan solo 1 o 2 de esas características avanzadas, sino que necesitan muchas de ellas desde un solo dispositivo. Incluso si un RTOS proporciona todas las características que un diseño necesita de fábrica, meterlo todo en la memoria en el chip será un desafío. uClinux o no, supongo que la tendencia será que cada vez más diseños basados en Cortex-M usarán memoria externa. Por supuesto, una vez que obtiene RAM externa en su diseño, uClinux comienza a tener más sentido.
Con respecto a la baja potencia de procesamiento proporcionada por Cortex-M (según los requisitos del kernel de Linux), como experiencia reciente, acabamos de habilitar uClinux en la MCU Freescale K70. Este es un Cortex-M4 (que es lo mismo que Cortex-M3 más las unidades FP y DSP de hardware); Interfaces en chip para RAM de alta densidad (DDR2) y Flash (NAND), con cachés en chip de 2x8 KB. Núcleo Cortex-M de 120Mhz, con piezas de 150Mhz que saldrán pronto.
Linux (uClinux) se ejecuta maravillosamente en este dispositivo. Usando 'dhrystone', obtenemos alrededor del 50% de rendimiento que obtenemos en una caja PowerPC de Freescale de 250Mhz. Arranque rápido, mucha RAM (el módulo TWR-K70 proporciona 128 MB de RAM y 256 MB de NAND Flash), redes, JFFS2, framebuffer, SSH, HTTPD, Qt / E, todo esto funciona muy bien en K70. La experiencia general del usuario es su "Linux integrado" habitual en un microprocesador lleno de MMU.
Aquí hay un puntero al video de una sesión en vivo de uClinux que se ejecuta en la MCU Freescale Kinetis K70 Cortex-M4:
http://www.youtube.com/watch?v=UZjJrLG9CeA