Por favor, verifique este site para algumas plataformas Cortex-M3 compatíveis com Linux (uClinux):
http://www.emcraft.com/
Executamos o uClinux com sucesso nos seguintes MCUs Cortex-M3: LPC1788 da NXP, STM32F2 da STmicro, SmartFusion da Actel e estamos adicionando suporte para mais alguns: Freescale Kinetis, STM32F4 (esses dois são o Cortex-M4 em vez do Cortex-M3) .
É verdade que o Linux (incluindo o uClinux) requer RAM externa para funcionar - a SRAM integrada do Cortex-M não é grande o suficiente, mesmo para uma configuração Linux minúscula; você precisa de pelo menos 4 MB de RAM externa para configurações práticas. Quanto mais melhor, de fato - se o seu aplicativo precisa de "recursos", o Linux suporta quase tudo e você não se arrependerá de ter adicionado mais RAM em vez de menos.
Em relação a dispositivos específicos a serem usados para RAM externa, tudo é definido pela interface de memória externa fornecida por um MCU específico. STM32F e SmartFusion suportam apenas SRAM; você seria capaz de obter um PSRAM de 16 MB e 70ns (com um Modo de página para uma operação mais rápida) por US $ 6-7; O LPC1788 suporta memórias SDRAM mais rápidas; O Kinetis K70 suporta DDR2 (US $ 5 para um dispositivo de 64 MB) etc. Todas essas memórias consomem energia apenas nos níveis de uA em momentos estáticos.
Você precisa de algo para carregar um Linux inicializável, mas isso pode ser sobre qualquer coisa - rede, cartão SD, EIPROM SPI, NOR ou NAND Flash, etc.
No geral, ouso dizer que o Linux é uma opção totalmente prática para o design do Cortex-M3.
Atualizar
Existem muitos aplicativos sensíveis à energia nos quais o dispositivo fica ocioso a maior parte do tempo; no entanto, ao executar, ele precisa fazer muitas coisas que não serão fáceis de conseguir usando um RTOS menor. Conexões seguras, VLAN, encapsulamento TCP / IP, SNMP, cartão SD, dispositivo / host USB, WiFI, etc, e a lista de requisitos continua.
Com um RTOS menor, alguns desses recursos estarão disponíveis, outros não, no entanto, isso é apenas parte da história. O que vemos cada vez mais com nossos clientes é que os projetos incorporados usando o Cortex-M3 não precisam apenas de 1 ou 2 desses recursos avançados, eles precisam de muitos deles em um único dispositivo. Mesmo que um RTOS ofereça todos os recursos de que o projeto precisa em prateleira, colocar tudo na memória do chip será um desafio. No uClinux ou não, meu palpite é que a tendência será que mais e mais projetos baseados em Cortex-M usem memória externa. Obviamente, depois de obter RAM externa em seu design, o uClinux começa a fazer mais sentido.
Com relação ao baixo poder de processamento fornecido pelo Cortex-M (medido em relação aos requisitos do kernel Linux), como uma experiência recente, acabamos de ativar o uClinux no Freescale K70 MCU. Este é um Cortex-M4 (que é o mesmo que o Cortex-M3 mais as unidades FP e DSP de hardware); interfaces no chip para RAM de alta densidade (DDR2) e Flash (NAND), com caches no chip de 2x8 KB. Núcleo de 120Mhz Cortex-M, com peças de 150Mhz em breve.
O Linux (uClinux) roda muito bem neste dispositivo. Usando 'dhrystone', obtemos cerca de 50% de desempenho em uma caixa Freescale PowerPC de 250Mhz. Inicialização rápida, muita RAM (o módulo TWR-K70 fornece 128 MB de RAM e 256 MB de NAND Flash), rede, JFFS2, framebuffer, SSH, HTTPD, Qt / E - tudo isso funciona perfeitamente no K70. A experiência geral do usuário é o seu "Linux embarcado" regular em um microprocessador cheio de MMU.
Aqui está um ponteiro para o vídeo de uma sessão ao vivo do uClinux em execução no Freescale Kinetis K70 Cortex-M4 MCU:
http://www.youtube.com/watch?v=UZjJrLG9CeA