Yo diría que estás soñando. El principal problema será la limitada memoria RAM.
En 2004, Eric Beiderman las arreglé para conseguir un kernel de arranque con 2,5 MB de RAM, con un montón de funcionalidad eliminado.
Sin embargo, eso fue en x86, y estamos hablando de BRAZO. Así que trató de construir el más pequeño posible del BRAZO kernel, para el 'versátil' plataforma (uno de los más simples). He desactivado todas las opciones configurables, incluyendo los que usted está buscando (USB, WiFi, SPI, I2C), para ver cómo la pequeña se iba a conseguir. Ahora, me estoy refiriendo a que el kernel de aquí, y esto no incluye cualquier espacio de usuario componentes.
La buena noticia es que se ajuste en su flash. El resultado zImage es 383204 bytes.
La mala noticia: con 256kB de RAM, no será capaz de arrancar:
$ size obj/vmlinux
text data bss dec hex filename
734580 51360 14944 800884 c3874 obj/vmlinux
El .segmento de texto es más grande que tu memoria RAM disponible, de modo que el núcleo no se puede descomprimir, digamos asignar memoria para arrancar, y mucho menos correr nada útil.
Una solución sería el uso de la ejecución en el lugar de apoyo (CONFIG_XIP), si su sistema admite que (es decir, se puede obtener instrucciones directamente desde Flash). Sin embargo, significa que el kernel necesita para adaptarse a comprimir en flash, y 734kB > 700kB. También, el .y de datos .bss secciones total 66kB, dejando apero 190kB para todo lo demás (es decir, todos asignados de forma dinámica las estructuras de datos en el núcleo).
Eso es sólo el núcleo. Sin los controladores que necesitas, o cualquier espacio de usuario.
Así que, sí, vas a necesitar un poco más de RAM.