Najmniejsza wbudowana dystrybucja Linuksa?


19

Chciałbym zapytać ekspertów tam. Jaka jest najlepsza dystrybucja linux dla:

  • Pamięć flash ~ 700 KB
  • Ram ~ 256 KB
  • Procesor: wysokiej klasy kora ramienia M3 (np. Z rodziny STM32)

Wymagane moduły: - rdzeń jądra - podstawowy zestaw sterowników: USB / sieć (dla Wi-Fi - bez AP, tylko klient, bez zabezpieczeń) / SPI / Uart / I2C

Czy to w ogóle możliwe, czy marzę?

Chodzi o to, aby użyć wysokiej klasy 5 $ CortexM3 i nie używać żadnych zewnętrznych pamięci, aby móc cieszyć się gotowymi sterownikami dla SDIO / WiFi itp.

  • Zaktualizowałem pytanie, wyjaśniając w sprawie Wi-Fi. WiFi w tym sensie, że jest to prosty, uruchamiany klient młyna. Nic szczególnego, być może płaczę, jeśli dam radę.

  • Kolejna aktualizacja: co powiesz na uCLinux?

Odpowiedzi:


26

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.


1
Świetna odpowiedź ... Jestem zaskoczony, widząc, że samo jądro Linuksa jest tak ciężkie. Mam pytanie następcze .. Czy są jakieś opakowania, które pozwalają mi używać sterowników Linuksa w innych systemach operacyjnych? W Linuksie podoba mi się dostępność sterowników. Każdy dotykany przeze mnie sprzęt ma sterownik linuksowy i zawsze jest problem z portowaniem, jedynym powodem, dla którego interesuję się Linuksem, są sterowniki, stąd pytanie.
Frank

Tylko uwaga na temat linku rozruchowego jądra, widziałem w kolejnych postach Erica, że ​​udało mu się uzyskać skompresowany obraz jądra do 190K i rozpakować około 360K, więc teoretycznie możesz go zmieścić w swojej pamięci flash bez kompresji. Więcej informacji: elinux.org/Linux_Tiny jednak nie wiem, jaki jest status projektu.
Mihailo

5

IMO, śnisz. Zwłaszcza z USB, siecią i 802.11 / wifi. Po prostu nie sądzę, że możesz to zrobić, a M3 to naprawdę odcinek.

OpenWRT to jedna z najmniejszych i najbardziej możliwych do osadzenia dystrybucji Linuksa, jaką znam do pracy w sieci, i ciężko jest uzyskać ją poniżej 2 MB, szczególnie w przypadku Wi-Fi.

Spróbuj spojrzeć na wysokiej klasy układy ARM, jeśli tego naprawdę chcesz, lub zastosuj układy Broadcom lub Atheros SoC, które są obecnie powszechne w routerach.


być może masz rację, ale zaktualizowałem to pytanie z wyjaśnieniem w sprawie WiFi .. Nie potrzebowałbym wszystkich protokołów, dchp / ip i podstawowych gniazd ..
Frank

4

Czy masz procesor MMU? Jeśli nie, możesz zajrzeć na: http://www.uclinux.org/, który powinien dać ci znacznie mniejszy rozmiar jądra niż wspomniano. Działa z niektórymi układami CortmelM3 Atmel, więc może działać z twoim. Nie korzystałem z niego, więc jest to tylko spekulacja. Doh, właśnie widziałem, że to pytanie zostało zaktualizowane - cóż, jeśli nie masz MMU (czego prawdopodobnie nie masz), nie możesz użyć „normalnego” jądra i musisz użyć ucLinux.


@mihalo dziękuję za wskazanie uclinux +1 za to. Zadałem pytanie na ten temat .. Doceń, czy możesz mi pomóc ...
Frank

Niestety nie mam z tym dużego doświadczenia, spojrzałem na porty ucLinux i wszystkie wymienione tam płyty mają zewnętrzną pamięć RAM. Najmniejsze jądro (nieskompresowane), które widziałem, było dla ADI Blackfin - coś w rodzaju 400 KB, ale to nie jest ARM, a dla ARM może być znacznie większy. W przypadku mikroprocesorów Atmels ARM było to około 1,5 MB i wszystkie używały zewnętrznej pamięci RAM.
Mihailo,

Mihailo, dziękuję za poświęcenie czasu na rozejrzenie się.
Frank

2

Możesz rozważyć NuttX jako alternatywę, jeśli naprawdę chcesz zgodności z POSIX na małej platformie innej niż MMU.


3
Wygląda to całkiem fajnie, ale może być warte włączenia niektórych zalet / wad w porównaniu z Linuksem, aby uczynić to bardziej kompletną odpowiedzią.
PeterJ

2

Nie pamiętam szczegółów, ale jest firma, która produkuje płyty z STM32F4 z systemem uCLinux, oprogramowanie można pobrać, ale mają one zarówno zewnętrzną pamięć RAM, jak i flash na tych płytach.

Na marginesie, cena jest tak wysoka, że ​​lepiej jest zdobyć Pi lub Pine64, chyba że chcesz, aby to było doświadczenie edukacyjne. Nasza firma przyjrzała się temu i zastanowiła się nad kosztami rozwoju i zdecydowała, że ​​jeśli będziemy uruchamiać cokolwiek na wbudowanym Linuksie przy użyciu stm32f4, jest to niewykonalne ekonomicznie, po prostu licząc koszt części.


Doskonały artykuł, który zawiera koszty BOM za uruchomienie uClinux na M3 / M4 - electronicdesign.com/embedded/…
Scott Seidman

0

uCLinux prawdopodobnie będzie działać. Jednak nie będziesz mieć ochrony pamięci w systemie, ponieważ nie masz MMU. Oznacza to, że każda awaria w dowolnej aplikacji może doprowadzić do awarii całego systemu. Możesz również napotkać problemy z fragmentacją pamięci bez MMU. Dlaczego nie spojrzeć na jeden z Titar Sitar? Są one nadal dość tanie i można na nich uruchomić pełny system Linux, który będzie znacznie bardziej elastyczny.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.