Найменший вбудований дистрибутив Linux?


19

Мені подобається запитати у фахівців там. Який найкращий вбудований дистрибутив Linux:

  • Флеш-пам’ять ~ 700 Кб
  • Рам ~ 256Kb
  • Процесор: Cortex M3 високого класу (щось із сімейства STM32, наприклад)

Необхідні модулі: - Ядро ядра - Основний набір драйверів: USB / Мережа (для Wi-Fi - Без AP, просто клієнт, без безпеки) / SPI / Uart / I2C

Це взагалі можливо чи я мрію?

Ідея полягає у використанні CortexM3 високого рівня 5 доларів і не використовувати зовнішніх пам’яток, щоб я міг насолоджуватися готовими драйверами для SDIO / WiFi тощо.

  • Я оновив питання з уточненням по WiFi. WiFi в тому сенсі, що це простий запуск клієнта млина. Нічого фантазійного, можливо, веп, якщо я можу це вмістити.

  • Ще одне оновлення: як щодо uCLinux?

Відповіді:


26

Я б сказав, що ти мрієш. Основною проблемою буде обмежена оперативна пам’ять.

У 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 КБ для всього іншого (тобто для всіх динамічно розподілених структур даних у ядрі).

Ось тільки ядро. Без потрібних драйверів або будь-якого простору користувачів.

Отже, так, вам знадобиться трохи більше оперативної пам’яті.


1
Чудова відповідь .. Я здивований, побачивши, що оголене ядро ​​Linux таке важке .. У мене є якесь додаткове запитання .. Чи є там обгортки, які дозволяють мені використовувати драйвери Linux з іншими ОС? Що мені подобається в Linux - це наявність драйверів. Кожне обладнання, до якого я торкаюся, має драйвер Linux, і він завжди болісно переносить їх, єдина причина, що мене цікавить Linux - це справді драйвери, звідси питання.
Френк

Лише зауваження про посилання на завантаження ядра, я побачив у наступних дописах Еріка, що йому вдалося отримати стиснене зображення ядра до 190 К та нестиснене близько 360 К, так що теоретично ви могли б увімкнути його у ваш спалах без стиску. Більше інформації: elinux.org/Linux_Tiny, однак я не знаю, який статус проекту.
Михайло

5

ІМО, ти мрієш. Особливо з USB, мережами та 802.11 / wifi. Я просто не думаю, що ти можеш це зробити, і M3 - це справді розтягнення.

OpenWRT - це один з найменших і найбільш вбудованих дистрибутивів Linux, про які я знаю, для мереж, і важко отримати його за 2 Мб, особливо за допомогою Wi-Fi.

Спробуйте вивчити чіпи ARM вищого класу, якщо цього ви дійсно хочете, або перейдіть з Broadcom або Atheros SoC, які зараз поширені в маршрутизаторах.


Ви можете бути дуже праві, але я оновив питання з уточненням по Wi-Fi .. Мені не знадобляться всі протоколи, dchp / ip та основні сокети ..
Frank Frank

4

У вас є MMU на процесорі? Якщо ви цього не хочете, ви можете подивитися: http://www.uclinux.org/, який повинен надати вам значно менший розмір ядра, ніж згадувалося. Він працює для деяких мікросхем CortexM3 Atmel, так що він може працювати для вас. Я не використовував його, тому це лише спекулятивний характер. Так, я щойно бачив, що це питання було оновлено - добре, якщо у вас немає MMU (якого, мабуть, немає), ви не можете використовувати "звичайне" ядро, і вам потрібно буде використовувати ucLinux.


@mihalo дякую, що вказав на це uclinux +1. Я задав питання з цього приводу. Вдячний, якщо ви можете подати руку ..
Френк

На жаль, у мене немає великого досвіду з цим, я переглянув порти ucLinux і всі згадані там плати мають зовнішню оперативну пам’ять. Найменше ядро ​​(нестиснене), яке я бачив, було для ADI Blackfin - щось на зразок 400 Кб, але це не ARM, а для ARM може бути значно більше. Для мікропроцесорів Atmels ARM вона становила близько 1,5 Мб, і всі вони використовували зовнішню оперативну пам'ять.
Михайло

Михайло дякує, що знайшов час озирнутися ..
Френк

2

Ви можете розглянути NuttX як альтернативу, якщо ви дійсно хочете відповідність POSIX в невеликій платформі, що не є MMU.


3
Це виглядає досить охайно, але, можливо, варто включити деякі плюси / мінуси порівняно з Linux, щоб зробити це більш повною відповіддю.
PeterJ

2

Я не пам'ятаю специфіки, але є компанія, яка робить плати зі STM32F4, що працюють під управлінням uCLinux, програмне забезпечення можна завантажити, але вони мають як зовнішню пам’ять, так і спалах на цих платах.

Як зауваження, ціна настільки висока, що вам краще отримати Pi або Pine64, якщо ви не хочете цього як навчання. Наша компанія розглядала це і, враховуючи вартість розробки, і вирішила, що якщо ми запускаємо що-небудь на вбудованому Linux, використовуючи stm32f4, це економічно неможливо, просто рахуючи вартість запчастин.


Відмінна стаття, що включає витрати на BOM для запуску uClinux на M3 / M4 - electronicdesign.com/embedded/…
Скотт Сейдман

0

uCLinux, ймовірно, спрацює. Однак у вас не буде захисту пам'яті в системі, оскільки у вас немає MMU. Це означає, що будь-який збій у будь-якій програмі може збити всю систему. Ви також можете зіткнутися з проблемами фрагментації пам'яті без MMU. Чому б не подивитися на одного з TI Sitaras? Вони все ще досить дешеві, і ви можете запустити на них повний Linux, який буде набагато гнучкішим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.