Ich würde sagen, du träumst. Das Hauptproblem wird der begrenzte Arbeitsspeicher sein.
Im Jahr 2004 gelang es Eric Beiderman , einen Kernel mit 2,5 MB RAM zu booten , wobei viele Funktionen entfernt wurden.
Das war jedoch auf x86, und Sie sprechen von ARM. Also habe ich versucht, den kleinstmöglichen ARM-Kernel für die "vielseitige" Plattform (eine der einfachsten) zu bauen. Ich habe alle konfigurierbaren Optionen deaktiviert, einschließlich der von Ihnen gesuchten (USB, WiFi, SPI, I2C), um festzustellen, wie klein sie werden würden. Ich beziehe mich hier nur auf den Kernel, und dieser enthält keine Userspace-Komponenten.
Die gute Nachricht: Es passt in Ihren Blitz. Das resultierende zImage ist 383204 Bytes.
Die schlechte Nachricht: Mit 256 KB RAM kann es nicht booten:
$ size obj/vmlinux
text data bss dec hex filename
734580 51360 14944 800884 c3874 obj/vmlinux
Das .text-Segment ist größer als Ihr verfügbarer Arbeitsspeicher, sodass der Kernel nicht dekomprimieren kann, geschweige denn Speicher zum Booten zuweisen kann, geschweige denn alles Nützliche ausführen kann.
Eine Problemumgehung wäre die Verwendung der direkten Ausführungsunterstützung (CONFIG_XIP), wenn Ihr System dies unterstützt (dh es kann Anweisungen direkt aus Flash abrufen). Dies bedeutet jedoch, dass Ihr Kernel unkomprimiert in Flash passen muss und 734kB> 700kB. Außerdem sind die Abschnitte .data und .bss insgesamt 66 KB groß, so dass für alles andere (dh für alle dynamisch zugewiesenen Datenstrukturen im Kernel) etwa 190 KB übrig bleiben.
Das ist nur der Kernel. Ohne die Treiber, die Sie benötigen, oder einen Benutzerbereich.
Also, ja, du wirst ein bisschen mehr RAM brauchen.