En küçük gömülü linux dağıtım?


19

Orada uzmanlara sormak istiyorum .. En iyi gömülü linux dağıtım nedir:

  • Flash bellek ~ 700Kb
  • Ram ~ 256Kb
  • İşlemci: High end arm cortex M3 (örneğin STM32 ailesinden bir şey)

Gerekli modüller: - Çekirdek çekirdek - Temel sürücü seti: USB / Ağ (WiFi için - AP yok, sadece istemci, güvenlik yok) / SPI / Uart / I2C

Bu mümkün mü yoksa rüya görüyor muyum?

Fikir, 5 $ yüksek uç CortexM3 kullanmak ve herhangi bir harici bellek kullanmamak, böylece SDIO / WiFi vb. İçin hazır sürücülerin keyfini çıkarabilirim.

  • Soruyu WiFi ile ilgili açıklamalarla güncelledim. WiFi, değirmen istemcisinin basit bir çalışma olması anlamında. Hiçbir şey fantezi, belki de eğer sığabilir.

  • Başka bir güncelleme: uCLinux'a ne dersiniz?

Yanıtlar:


26

Rüya gördüğünüzü söyleyebilirim. Ana sorun sınırlı RAM olacaktır.

2004 yılında Eric Beiderman RAM 2,5 MB boyuta kadarki bir çekirdek önyükleme başardı bir ile, çok kaldırılır işlevsellik.

Ancak, bu x86'da ve ARM'den bahsediyorsunuz. Bu yüzden 'çok yönlü' platform (en basitlerinden biri) için mümkün olan en küçük ARM çekirdeğini oluşturmaya çalıştım. Ne kadar küçük olacağını görmek için aradığınızlar (USB, WiFi, SPI, I2C) dahil olmak üzere tüm yapılandırılabilir seçenekleri kapattım . Şimdi, buradaki çekirdeğe atıfta bulunuyorum ve bu herhangi bir kullanıcı alanı bileşeni içermiyor .

İyi haber: flaşınıza sığacak. Ortaya çıkan zImage 383204 bayttır.

Kötü haber: 256kB RAM ile önyükleme yapamaz:

$ size obj/vmlinux
  text     data     bss     dec     hex filename
734580    51360   14944  800884   c3874 obj/vmlinux

.Text segmenti kullanılabilir RAM'inizden daha büyüktür, bu nedenle çekirdek, yararlı bir şey çalıştırmasına izin vermek yerine, önyükleme için bellek ayıramaz.

Çözümlerden biri, sisteminiz bunu destekliyorsa yerinde yürütme desteğini (CONFIG_XIP) kullanmak olacaktır (yani, talimatları doğrudan Flash'tan alabilir). Ancak bu, çekirdeğinizin sıkıştırılmamış flaşa ve 734kB> 700kB'ye sığması gerektiği anlamına gelir. Ayrıca, .data ve .bss bölümleri toplam 66kB olup, diğer her şey için (yani, çekirdekteki dinamik olarak tahsis edilen tüm veri yapıları) 190kB'ye dayanır.

Bu sadece çekirdek. İhtiyacınız olan sürücüler veya herhangi bir kullanıcı alanı olmadan.

Yani, evet, biraz daha fazla RAM'e ihtiyacınız olacak.


1
Harika cevap .. Çıplak linux çekirdeğinin bu kadar ağır olduğunu görünce şaşırdım .. Bir çeşit soru soruyorum .. Orada diğer işletim sistemlerinde linux sürücüleri kullanmamı sağlayan herhangi bir paket var mı? Linux hakkında sevdiğim şey, sürücünün kullanılabilirliği. Dokunduğum her donanımın bir linux sürücüsü var ve bunları taşımak için her zaman acı çekiyor, Linux ile ilgilenmemin tek nedeni gerçekten sürücüler, dolayısıyla soru.
Frank

Çekirdek önyükleme bağlantısı hakkında sadece bir not, Eric'in aşağıdaki yazılarında sıkıştırılmış çekirdek görüntüsünü 190K'ya getirmeyi başardığını ve 360K civarında sıkıştırılmamış olduğunu gördüm, böylece teorik olarak flaşınıza sıkıştırılmamış olabilir. Daha fazla bilgi: elinux.org/Linux_Tiny Ancak projenin durumunun ne olduğunu bilmiyorum.
Mihailo

5

IMO, rüya görüyorsun. Özellikle USB, ağ ve 802.11 / wifi ile. Bunu yapabileceğinizi sanmıyorum ve M3 gerçekten bir esneme.

OpenWRT, ağ iletişimi için bildiğim en küçük ve en gömülebilir Linux dağıtımlarından biridir ve bunu 2MB'nin altında, Wifi ile esp almak zor.

Gerçekten istediğiniz şeyse üst düzey ARM çiplerine bakmayı deneyin veya yönlendiricilerde yaygın olan Broadcom veya Atheros SoC'lerle gidin.


çok iyi olabilir, ancak ben WiFi açıklık ile soruyu güncelledim .. Ben tüm protokolleri, dchp / ip ve temel yuvaları gerekmez ..
Frank

4

İşlemcide MMU var mı? Bunu yapmazsanız, http://www.uclinux.org/ adresine bakmak isteyebilirsiniz, bu size belirtilenden daha küçük bir çekirdek boyutu verir. Bazı CortexM3 Atmel yongaları için çalışır, böylece sizin için çalışabilir. Ben kullanmadım bu yüzden bu sadece spekülatif. Doh, bu sorunun güncellendiğini gördüm - eğer MMU'nuz yoksa (ki muhtemelen yok) "normal" çekirdeği kullanamazsınız ve ucLinux'u kullanmanız gerekir.


@mihalo bunun için uclinux + 1'i işaret ettiğiniz için teşekkürler. Bu konuda bir soru sordum .. Bir el ödünç verebilir eğer takdir ..
Frank

Ne yazık ki bu konuda çok deneyimim yok, ucLinux portlarına baktım ve orada belirtilen tüm kartlarda harici RAM var. Gördüğüm en küçük çekirdek (sıkıştırılmamış) ADI Blackfin içindi - 400KB gibi bir şeydi ama bu ARM değil ve ARM için önemli ölçüde daha büyük olabilir. Atmels ARM mikroişlemciler için yaklaşık 1,5 MB boyutundaydı ve hepsi harici RAM kullandı.
Mihailo

Mihailo etrafa bakmak için zaman ayırdığınız için teşekkürler ..
Frank

2

Küçük, MMU olmayan bir platformda POSIX uyumluluğunu gerçekten istiyorsanız NuttX'i alternatif olarak düşünebilirsiniz .


3
Bu oldukça düzgün görünüyor, ancak daha eksiksiz bir cevap yapmak için Linux ile karşılaştırıldığında bazı artıları / eksileri dahil etmeye değer olabilir.
PeterJ

2

Özellikleri hatırlamıyorum, ancak uCLinux çalıştıran STM32F4'lere sahip panolar yapan bir şirket var, yazılım indirilebilir, ancak bu kartlarda hem harici RAM hem de flaş var.

Yan not olarak, bir öğrenme deneyimi olarak istemediğiniz sürece fiyat Pi ya da Pine64 almak daha iyidir. Şirketimiz buna baktı ve geliştirme maliyetini göz önünde bulundurdu ve böyle bir şey stm32f4 kullanarak gömülü Linux üzerinde bir şey çalıştırırsak ekonomik olarak mümkün olmadığına karar verdi, sadece parçaların maliyetini saydı.


M3 / M4'te uClinux'u çalıştırmak için ürün ağacı maliyetlerini içeren mükemmel makale - electronicdesign.com/embedded/…
Scott Seidman

0

uCLinux muhtemelen işe yarayacaktır. Ancak MMU'nuz olmadığı için sistemde bellek korumanız olmaz. Bu, herhangi bir uygulamadaki herhangi bir çökmenin tüm sistemi düşürebileceği anlamına gelir. MMU'suz bellek parçalanması sorunlarıyla da karşılaşabilirsiniz. Neden TI Sitaras'tan birine bakmıyorsunuz? Hala oldukça ucuzlar ve üzerlerinde çok daha esnek olacak tam Linux çalıştırabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.