सबसे छोटा एम्बेडेड लिनक्स डिस्ट्रो?


19

मुझे वहां के विशेषज्ञों से पूछना पसंद है .. इसके लिए सबसे अच्छा एम्बेडेड linux distro क्या है:

  • फ्लैश मेमोरी ~ 700 केबी
  • राम ~ 256 केबी
  • प्रोसेसर: हाई एंड आर्म कॉर्टेक्स M3 (उदाहरण के लिए STM32 परिवार से कुछ)

आवश्यक मॉड्यूल: - कर्नेल कोर - मूल ड्राइवर सेट: USB / नेटवर्किंग (वाईफाई के लिए - कोई एपी, सिर्फ ग्राहक, कोई सुरक्षा नहीं) / SPI / Uart / I2C

क्या यह संभव है या मैं सपने देख रहा हूं?

विचार 5 $ उच्च अंत कॉर्टेक्सएम 3 का उपयोग करना है और किसी भी बाहरी यादों का उपयोग नहीं करना है ताकि मैं एसडीआईओ / वाईफाई आदि के लिए तैयार ड्राइवरों का आनंद ले सकूं।

  • मैंने वाईफाई पर स्पष्टीकरण के साथ प्रश्न को अपडेट किया। वाईफाई इस अर्थ में कि यह एक सरल, मिल क्लाइंट का रन है। कुछ भी नहीं फैंसी, शायद मैं अगर यह फिट कर सकते हैं।

  • एक और अपडेट: uCLinux के बारे में कैसे?

जवाबों:


26

मैं कहूंगा कि आप सपने देख रहे हैं। मुख्य समस्या सीमित रैम होगी।

2004 में, एरिक बीडरमैन 2.5 एमबी रैम के साथ कर्नेल बूटिंग प्राप्त करने में कामयाब रहे , जिसमें बहुत अधिक कार्यक्षमता को हटा दिया गया।

हालाँकि, यह x86 पर था, और आप ARM के बारे में बात कर रहे हैं। इसलिए मैंने 'वर्सटाइल' प्लेटफॉर्म (सबसे सरल में से एक) के लिए सबसे छोटा संभव एआरएम कर्नेल बनाने की कोशिश की। मैंने सभी कॉन्फ़िगर करने योग्य विकल्पों को बंद कर दिया , जिनमें आप (USB, WiFi, SPI, I2C) की तलाश कर रहे हैं, यह देखने के लिए कि यह कितना छोटा होगा। अब, मैं यहाँ केवल कर्नेल की बात कर रहा हूँ, और इसमें कोई उपयोक्ता घटक शामिल नहीं है ।

अच्छी खबर: यह आपके फ्लैश में फिट होगा। परिणामी zImage 383204 बाइट्स है।

बुरी खबर: 256kB RAM के साथ, यह बूट करने में सक्षम नहीं होगा:

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

.Text खंड आपके उपलब्ध RAM से बड़ा है, इसलिए कर्नेल को विघटित नहीं किया जा सकता है, अकेले ही बूट करने के लिए मेमोरी आवंटित करें, अकेले कुछ भी चलाने दें।

एक वर्कअराउंड निष्पादित-इन-प्लेस समर्थन (CONFIG_XIP) का उपयोग करना होगा, यदि आपका सिस्टम समर्थन करता है (यानी, यह सीधे फ्लैश से निर्देश ला सकता है)। हालाँकि, इसका मतलब है कि आपके कर्नेल को फ़्लैश में असम्पीडित होने की आवश्यकता है, और 734kB> 700kB। इसके अलावा, .data और .bs वर्गों में कुल 66kB होता है, जो 190kB को बाकी सब चीजों के लिए छोड़ देता है (यानी, कर्नेल में सभी गतिशील रूप से आवंटित डेटा संरचनाएं)।

वह सिर्फ कर्नेल है। ड्राइवरों की जरूरत के बिना, या किसी भी उपयोगकर्ता।

तो, हाँ, आपको थोड़ी अधिक रैम की आवश्यकता होगी।


1
शानदार जवाब .. मुझे यह देखकर आश्चर्य हुआ कि नंगे लिनक्स कर्नेल यह भारी है .. मेरे पास एक अनुवर्ती प्रश्न है .. क्या कोई रैपर है जो मुझे अन्य OS'es के साथ लिनक्स ड्राइवरों का उपयोग करने की अनुमति देता है? लिनक्स के बारे में जो मुझे पसंद है वह है ड्राइवर की उपलब्धता .. मेरे द्वारा टच किए गए हर एक हार्डवेयर में एक लिनक्स ड्राइवर होता है और इसे पोर्ट करने के लिए हमेशा दर्द होता है, केवल एक ही कारण है कि मैं लिनक्स में दिलचस्पी रखता हूं, यह वास्तव में ड्राइवर हैं।
फ्रैंक

कर्नेल बूटिंग लिंक के बारे में बस एक नोट, मैंने एरिक द्वारा निम्नलिखित पोस्टों में देखा कि वह 190K को संपीड़ित कर्नेल छवि प्राप्त करने में कामयाब रहा और 360K के आसपास असम्पीडित था, इसलिए सैद्धांतिक रूप से आप इसे अपने फ़्लैश असम्पीडित में फिट कर सकते हैं। अधिक जानकारी: elinux.org/Linux_Tiny हालांकि मुझे नहीं पता कि परियोजना की स्थिति क्या है।
मिहेलो

5

IMO, आप सपना देख रहे हैं। विशेष रूप से यूएसबी, नेटवर्किंग और 802.11 / वाईफाई के साथ। मुझे नहीं लगता कि आप ऐसा कर सकते हैं और एम 3 वास्तव में एक खिंचाव है।

OpenWRT सबसे छोटे और सबसे ज्यादा चलने वाले लिनक्स डिस्ट्रो में से एक है जिसे मैं नेटवर्किंग के लिए जानता हूं और यह मुश्किल है कि 2MB के तहत, Wifi के साथ esp।

यदि आप वास्तव में चाहते हैं या ब्रॉडकॉम या एथोरोस SoC कि रूटर्स में आम हैं के साथ जाने के लिए उच्च अंत एआरएम चिप्स में देखने की कोशिश करें।


आप बहुत अच्छी तरह से सही हो सकते हैं, हालांकि मैंने वाईफाई पर स्पष्टीकरण के साथ प्रश्न को अपडेट किया है .. मुझे सभी प्रोटोकॉल, dchp / ip और बुनियादी सॉकेट्स की आवश्यकता नहीं होगी ..
फ्रैंक

4

क्या आपके पास प्रोसेसर पर MMU है? यदि आप नहीं चाहते हैं कि आप इसे देख सकें: http://www.uclinux.org/ जो आपको उल्लेखित की तुलना में बहुत छोटा कर्नेल आकार देना चाहिए। यह कुछ CortexM3 Atmel चिप्स के लिए काम करता है इसलिए यह आपके लिए काम कर सकता है। मैंने इसका उपयोग नहीं किया है इसलिए यह केवल सट्टा है। दोहा, मैंने अभी-अभी देखा कि प्रश्न अपडेट किया गया था - यदि आपके पास MMU (जो आप शायद नहीं करते हैं) तो आप "सामान्य" कर्नेल का उपयोग नहीं कर सकते हैं और आपको ucLinux का उपयोग करने की आवश्यकता होगी।


इसके लिए uclinux +1 को इंगित करने के लिए @mihalo धन्यवाद। मैंने उस बारे में एक प्रश्न पूछा है .. सराहना करें यदि आप एक हाथ उधार दे सकते हैं ..
फ्रैंक

दुर्भाग्य से मुझे इस बारे में अधिक अनुभव नहीं है, मैंने ucLinux पोर्ट्स को देखा और सभी उल्लिखित बोर्ड में बाहरी RAM है। मैंने देखा सबसे छोटा कर्नेल (असम्पीडित) एडीआई ब्लैकफिन के लिए था - 400KB जैसा कुछ लेकिन एआरएम नहीं है और एआरएम के लिए काफी बड़ा हो सकता है। Atmels ARM माइक्रोप्रोसेसरों के लिए यह लगभग 1.5 एमबी था और वे सभी बाहरी रैम का उपयोग करते थे।
Mihailo

मिहेलो को चारों ओर देखने के लिए समय निकालने के लिए धन्यवाद ..
फ्रैंक

2

यदि आप वास्तव में एक छोटे, गैर-एमएमयू प्लेटफॉर्म में पॉसिक्स अनुपालन चाहते हैं, तो आप न्यूटैक्स को एक विकल्प के रूप में विचार कर सकते हैं ।


3
यह बहुत साफ-सुथरा दिखता है, लेकिन यह लिनक्स के खिलाफ तुलना में कुछ पेशेवरों / विपक्षों के लायक हो सकता है ताकि इसे और अधिक पूर्ण उत्तर दिया जा सके।
पीटर जूल

2

मुझे बारीकियों की याद नहीं है, लेकिन एक कंपनी है जो STM32F4s के साथ यूसीलिनक्स चलाने वाले बोर्ड बनाती है, सॉफ्टवेयर डाउनलोड करने योग्य है, लेकिन उनके पास उन बोर्डों पर बाहरी रैम और फ्लैश दोनों हैं।

एक पक्ष के रूप में ध्यान दें कि कीमत इतनी अधिक है कि आप एक पाई या पाइन 64 पाने से बेहतर हैं, जब तक कि आप इसे सीखने का अनुभव नहीं चाहते। हमारी कंपनी ने इस पर ध्यान दिया और विकास लागत पर विचार किया और इस तरह का निर्णय लिया कि अगर हम stm32f4 का उपयोग करके एम्बेडेड लिनक्स पर कुछ भी चलाना चाहते हैं, तो यह आर्थिक रूप से प्रभावी है, बस भागों की लागत की गिनती करना।


उत्कृष्ट लेख जिसमें एम 3 / एम 4 पर यूक्लिनक्स चलाने के लिए बीओएम लागत शामिल है - Electronicdesign.com/embedded/…
स्कॉट सीडमैन

0

uCLinux शायद काम करेगा। हालाँकि आपके पास सिस्टम पर कोई मेमोरी सुरक्षा नहीं है क्योंकि आपके पास कोई MMU नहीं है। इसका मतलब यह है कि किसी भी अनुप्रयोग में कोई भी दुर्घटना पूरे सिस्टम को नीचे ला सकती है। आप एमएमयू के बिना भी मेमोरी विखंडन की समस्याओं का सामना कर सकते हैं। टीआई सितारस में से एक को क्यों नहीं देखा? वे अभी भी बहुत सस्ते हैं और आप उन पर पूर्ण लिनक्स चला सकते हैं जो बहुत अधिक लचीला होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.