Řekl bych, že sníš. Hlavním problémem bude omezená RAM.
V roce 2004 se Ericu Beidermanovi podařilo zavést jádro s 2,5 MB RAM a hodně funkce odstraněny.
To však bylo na x86 a vy mluvíte o ARM. Pokusil jsem se tedy sestavit co nejmenší jádro ARM pro „univerzální“ platformu (jednu z nejjednodušších). Vypnul(a) jsem vše konfigurovatelné možnosti, včetně těch, které hledáte (USB, WiFi, SPI, I2C), abyste viděli, jak malé by to bylo. Nyní mám na mysli pouze jádro a toto nezahrnuje žádné komponenty uživatelského prostoru.
Dobrá zpráva:vejde se do vašeho blesku. Výsledný zImage je 383204 bajtů.
Špatná zpráva:s 256 kB RAM nebude možné spustit:
$ size obj/vmlinux
text data bss dec hex filename
734580 51360 14944 800884 c3874 obj/vmlinux
Segment .text je větší než vaše dostupná RAM, takže jádro nemůže dekomprimovat, natož alokovat paměť pro zavedení, natož spustit něco užitečného.
Jedním z řešení by bylo použití podpory spouštění na místě (CONFIG_XIP), pokud to váš systém podporuje (tj. může načítat instrukce přímo z Flash). To však znamená, že se vaše jádro musí vejít nekomprimované do flash a 734 kB> 700 kB. Sekce .data a .bss mají také celkem 66 kB, takže na vše ostatní (tj. všechny dynamicky alokované datové struktury v jádře) zbývá přibližně 190 kB.
To je jen jádro. Bez ovladačů, které potřebujete, nebo jakéhokoli uživatelského prostoru.
Takže ano, budete potřebovat trochu více RAM.
IMO, ty sníš. Zejména s USB, sítí a 802.11/wifi. Prostě si nemyslím, že to dokážete a M3 je opravdu hodně.
OpenWRT je jedno z nejmenších a nejvíce zabudovatelných linuxových distribucí, které znám pro sítě, a je těžké dostat to pod 2 MB, zejména s Wifi.
Zkuste se podívat na čipy ARM vyšší třídy, pokud to opravdu chcete, nebo použijte Broadcom nebo Atheros SoC, které jsou v současné době běžné ve směrovačích.
Máš na procesoru MMU? Pokud ne, možná se budete chtít podívat na:http://www.uclinux.org/, kde byste měli získat mnohem menší velikost jádra, než je uvedeno. Funguje to pro některé čipy CortexM3 Atmel, takže by to mohlo fungovat pro vás. Nepoužil jsem to, takže je to pouze spekulativní. Ne, právě jsem viděl, že ta otázka byla aktualizována - dobře, pokud nemáte MMU (což pravděpodobně nemáte), nemůžete použít "normální" jádro a bude nutné použít ucLinux.