Я б сказав, що ти мрієш. Основною проблемою буде обмежена оперативна пам’ять.
У 2004 році Еріку Бейдерману вдалося отримати завантаження ядра з 2,5 Мб оперативної пам’яті , при цьому було видалено багато функціональних можливостей.
Однак це було на x86, і ви говорите про ARM. Тому я спробував створити найменше можливе ядро ARM, для 'універсальної' платформи (однієї з найпростіших). Я вимкнув усі настроювані параметри, включаючи ті, які ви шукаєте (USB, WiFi, SPI, I2C), щоб побачити, наскільки він малий. Зараз я просто маю на увазі ядро тут, і це не включає жодне компоненти простору користувача.
Хороша новина: вона впишеться у ваш спалах. Отриманий zImage становить 383204 байти.
Погана новина: з 256 КБ оперативної пам’яті він не зможе завантажитися:
$ size obj/vmlinux
text data bss dec hex filename
734580 51360 14944 800884 c3874 obj/vmlinux
Сегмент .text більший, ніж наявна ОЗУ, тому ядро не може розпаковувати, не кажучи вже про виділення пам'яті для завантаження, не кажучи вже про запуск чого-небудь корисного.
Одним із варіантів вирішення проблеми буде використання підтримки виконувати на місці (CONFIG_XIP), якщо ваша система підтримує це (тобто вона може отримувати інструкції безпосередньо з Flash). Однак це означає, що ваше ядро повинне вміщуватись нестисненим у спалах, а 734 кБ> 700 кБ. Також розділи .data та .bss налічують 66 кБ, що залишає близько 190 КБ для всього іншого (тобто для всіх динамічно розподілених структур даних у ядрі).
Ось тільки ядро. Без потрібних драйверів або будь-якого простору користувачів.
Отже, так, вам знадобиться трохи більше оперативної пам’яті.