Я бы сказал, что ты спишь. Основной проблемой будет ограниченная оперативная память.
В 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 КБ для всего остального (т. Е. Для всех динамически размещаемых структур данных в ядре).
Это просто ядро. Без необходимых вам драйверов или какого-либо пользовательского пространства.
Так что, да, вам понадобится немного больше оперативной памяти.