Controlla questo sito per alcune piattaforme Cortex-M3 che supportano Linux (uClinux):
http://www.emcraft.com/
Abbiamo eseguito con successo uClinux sui seguenti MCU Cortex-M3: LPC1788 di NXP, STM32F2 di STmicro, SmartFusion di Actel e stiamo aggiungendo supporto per un altro paio: Freescale Kinetis, STM32F4 (questi due sono Cortex-M4 anziché Cortex-M3) .
È vero, Linux (incluso uClinux) richiede l'esecuzione di RAM esterna: la SRAM integrata di Cortex-M non è abbastanza grande anche per una configurazione Linux ultra-piccola; sono necessarie almeno 4 MB di RAM esterna per configurazioni pratiche. Più meglio è, infatti - se l'applicazione ha bisogno di "funzionalità", Linux ha il supporto per qualsiasi cosa e non ti dispiacerà aver aggiunto più RAM piuttosto che meno.
Rispetto a particolari dispositivi da utilizzare per la RAM esterna, tutto è definito dall'interfaccia di memoria esterna fornita da un determinato MCU. STM32F e SmartFusion supportano solo SRAM; si sarebbe in grado di ottenere una PSRAM da 16 MB da 70 ns (con una modalità pagina per operazioni più veloci) per $ 6-7; LPC1788 supporta memorie SDRAM più veloci; Kinetis K70 supporta DDR2 ($ 5 per un dispositivo da 64 MB), ecc. Tutte quelle memorie assorbono energia solo a livelli u in tempi statici.
Hai bisogno di qualcosa per caricare un Linux avviabile, ma questo può riguardare qualsiasi cosa: rete, SDcard, SPI EEPROM, NOR o NAND Flash, ecc.
Nel complesso, oserei dire che Linux è un'opzione totalmente pratica per un progetto Cortex-M3.
Aggiornare
Esistono molte applicazioni sensibili al potere in cui il dispositivo è inattivo per la maggior parte del tempo, tuttavia, durante l'esecuzione, deve essere in grado di fare molte cose che non saranno facili da ottenere utilizzando un RTOS più piccolo. Connessioni sicure, VLAN, tunneling TCP / IP, SNMP, scheda SD, dispositivo / host USB, WiFI, ecc. E l'elenco dei requisiti potrebbe continuare all'infinito.
Con un RTOS più piccolo alcune di queste funzionalità saranno disponibili, altre no, tuttavia è solo una parte della storia. Ciò che vediamo sempre di più con i nostri clienti è che i progetti integrati che utilizzano Cortex-M3 non richiedono solo 1 o 2 di queste funzionalità avanzate, ma ne hanno bisogno molte di esse da un unico dispositivo. Anche se un RTOS fornisce tutte le funzionalità di cui un design ha bisogno immediatamente, riempire tutto con la memoria on-chip sarà una sfida. uClinux o no, la mia ipotesi è che la tendenza sarà che sempre più progetti basati su Cortex-M useranno la memoria esterna. Naturalmente, una volta ottenuta la RAM esterna nella progettazione, uClinux inizia ad avere più senso.
Per quanto riguarda la bassa potenza di elaborazione fornita da Cortex-M (misurata rispetto ai requisiti del kernel Linux), come esperienza recente, abbiamo appena abilitato uClinux sull'MCU Freescale K70. Questo è un Cortex-M4 (che è lo stesso del Cortex-M3 più hardware FP e unità DSP); interfacce su chip a RAM ad alta densità (DDR2) e Flash (NAND), con cache su chip da 2x8 KB. Nucleo Cortex-M da 120 Mhz, con parti da 150 Mhz in uscita.
Linux (uClinux) funziona perfettamente su questo dispositivo. Usando 'dhrystone', otteniamo circa il 50% di prestazioni ottenute su una scatola PowerPC da 250Mhz Freescale. Avvio rapido, molta RAM (il modulo TWR-K70 fornisce 128 MB di RAM e 256 MB di NAND Flash), rete, JFFS2, framebuffer, SSH, HTTPD, Qt / E - tutto questo funziona perfettamente su K70. L'esperienza utente complessiva è il normale "Linux incorporato" su un microprocessore pieno di MMU.
Ecco un puntatore al video di una sessione live di uClinux in esecuzione sul MCU Freescale Kinetis K70 Cortex-M4:
http://www.youtube.com/watch?v=UZjJrLG9CeA