Powiedziałbym, że śnisz. Głównym problemem będzie ograniczona pamięć RAM.
W 2004 roku Ericowi Beidermanowi udało się uruchomić jądro z 2,5 MB pamięci RAM i usunięto wiele funkcji.
Było to jednak na x86 i mówisz o ARM. Próbowałem więc zbudować najmniejsze możliwe jądro ARM dla „wszechstronnej” platformy (jednej z najprostszych). Wyłączyłem wszystkie konfigurowalne opcje, w tym te, których szukasz (USB, WiFi, SPI, I2C), aby zobaczyć, jak małe będą. Odnoszę się tutaj do jądra, które nie obejmuje żadnych komponentów przestrzeni użytkownika.
Dobra wiadomość: zmieści się w twojej pamięci flash. Wynikowy zImage ma 383204 bajtów.
Zła wiadomość: przy 256 kB pamięci RAM nie będzie możliwe uruchomienie:
$ size obj/vmlinux
text data bss dec hex filename
734580 51360 14944 800884 c3874 obj/vmlinux
Segment .text jest większy niż dostępna pamięć RAM, więc jądro nie może się rozpakować, nie mówiąc już o przydzieleniu pamięci do rozruchu, ani tym bardziej uruchomieniu niczego użytecznego.
Jednym obejściem byłoby użycie obsługi wykonania w miejscu (CONFIG_XIP), jeśli twój system to obsługuje (tzn. Może pobierać instrukcje bezpośrednio z Flasha). Oznacza to jednak, że twoje jądro musi zmieścić się w nieskompresowanym flashu i 734kB> 700kB. Ponadto sekcje .data i .bss mają łącznie 66 kB, pozostawiając około 190 kB dla wszystkich innych elementów (tj. Wszystkich dynamicznie alokowanych struktur danych w jądrze).
To tylko jądro. Bez potrzebnych sterowników ani przestrzeni użytkownika.
Tak, potrzebujesz trochę więcej pamięci RAM.