Direi che stai sognando. Il problema principale sarà la RAM limitata.
Nel 2004, Eric Beiderman è riuscito ad avviare un kernel con 2,5 MB di RAM , rimuovendo molte funzionalità.
Tuttavia, questo era su x86 e stai parlando di ARM. Quindi ho cercato di creare il kernel ARM più piccolo possibile, per la piattaforma 'versatile' (una delle più semplici). Ho disattivato tutte le opzioni configurabili, comprese quelle che stai cercando (USB, WiFi, SPI, I2C), per vedere quanto sarebbe piccolo. Ora, mi riferisco solo al kernel qui, e questo non include alcun componente dello spazio utente.
La buona notizia: si adatterà al tuo flash. La zImage risultante è di 383204 byte.
La cattiva notizia: con 256kB di RAM, non sarà in grado di avviarsi:
$ size obj/vmlinux
text data bss dec hex filename
734580 51360 14944 800884 c3874 obj/vmlinux
Il segmento .text è più grande della RAM disponibile, quindi il kernel non può decomprimersi, figuriamoci allocare memoria per l'avvio, per non parlare di eseguire qualcosa di utile.
Una soluzione alternativa sarebbe quella di utilizzare il supporto di esecuzione sul posto (CONFIG_XIP), se il tuo sistema lo supporta (ad esempio, può recuperare le istruzioni direttamente da Flash). Tuttavia, ciò significa che il kernel deve adattarsi non compresso in flash e 734 kB> 700 kB. Inoltre, le sezioni .data e .bss ammontano a 66 kB, lasciando circa 190 kB per tutto il resto (ovvero, tutte le strutture di dati allocate dinamicamente nel kernel).
Questo è solo il kernel. Senza i driver necessari, o alcuno spazio utente.
Quindi sì, avrai bisogno di un po 'più di RAM.