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 zum Booten zu bringen, mit viel der Funktionalität entfernt.
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 deaktiviert konfigurierbare Optionen, einschließlich derjenigen, nach denen Sie suchen (USB, WiFi, SPI, I2C), um zu sehen, wie klein es werden würde. Nun, ich beziehe mich hier nur auf den Kernel, und dieser enthält irgendwelche nicht Userspace-Komponenten.
Die gute Nachricht:Es passt in Ihren Blitz. Das resultierende zImage ist 383204 Byte groß.
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 RAM, daher kann der Kernel nicht dekomprimieren, geschweige denn Speicher zum Booten zuweisen, geschweige denn irgendetwas Nützliches ausführen.
Eine Problemumgehung wäre die Verwendung der Execute-in-Place-Unterstützung (CONFIG_XIP), wenn Ihr System dies unterstützt (dh es kann Anweisungen direkt aus Flash abrufen). Das bedeutet jedoch, dass Ihr Kernel unkomprimiert in Flash passen muss und 734kB> 700kB. Außerdem sind die .data- und .bss-Abschnitte insgesamt 66 kB groß, sodass etwa 190 kB für alles andere übrig bleiben (dh alle dynamisch zugewiesenen Datenstrukturen im Kernel).
Das ist nur der Kern. Ohne die benötigten Treiber oder Userspace.
Also, ja, Sie werden etwas mehr RAM brauchen.
IMO, du träumst. Besonders bei USB, Netzwerk und 802.11/WLAN. Ich glaube einfach nicht, dass Sie das tun können, und M3 ist wirklich eine Strecke.
OpenWRT ist eine der kleinsten und am besten integrierbaren Linux-Distributionen, die ich für Netzwerke kenne, und es ist schwierig, diese unter 2 MB zu bekommen, besonders mit Wifi.
Versuchen Sie, sich nach höherwertigen ARM-Chips umzusehen, wenn Sie das wirklich wollen, oder entscheiden Sie sich für die Broadcom- oder Atheros-SoCs, die derzeit in Routern üblich sind.
Hast du MMU auf dem Prozessor? Wenn Sie dies nicht tun, sollten Sie sich Folgendes ansehen:http://www.uclinux.org/, das Ihnen eine viel kleinere Kernelgröße als erwähnt geben sollte. Es funktioniert für einige CortexM3-Atmel-Chips, also könnte es für Ihre funktionieren. Ich habe es nicht verwendet, also ist dies nur spekulativ. Doh, ich habe gerade gesehen, dass diese Frage aktualisiert wurde - nun, wenn Sie kein MMU haben (was Sie wahrscheinlich nicht haben), können Sie keinen "normalen" Kernel und Sie verwenden müsste ucLinux verwenden.