यदि संभव हो तो, Arduino पर लिनक्स को संकलित करने में क्या लगता है?


25

क्या Arduino पर Linux चलाना संभव है? यदि हाँ, तो किन कदमों और सीमाओं पर विचार करने की आवश्यकता है? यदि नहीं, तो ऐसी कौन सी सीमाएँ हैं जो इसे रोकती हैं?



3
इसके बजाय एक आरपीआई का उपयोग करें।
अनाम पेंगुइन

जवाबों:


19

लिनक्स एक बहुत ही जटिल ऑपरेटिंग सिस्टम है, लेकिन यह एक Arduino पर फिट होने में सक्षम हो सकता है। विचार करने के लिए बातें:

  • स्रोत कोड का कोई वर्तमान AVR पोर्ट नहीं है।
  • आपके पास कोई ग्राफिक्स नहीं होगा, इसके बजाय UART पर टर्मिनल का उपयोग करें।
  • फाइलसिस्टम चालक को आंतरिक फ्लैश या बाहरी एसडी कार्ड का उपयोग करने के लिए फिर से लिखना होगा।
  • यह बहुत धीमी गति से होगा! ATmega328 16 MHz, या लगभग 20 MHz अधिकतम (ओवरक्लॉक) पर चलेगा। अधिकांश लिनक्स मशीनें न्यूनतम 400 मेगाहर्ट्ज पर चलती हैं, और ग्राफिक्स के साथ अधिक।
  • आपको शायद कुछ अतिरिक्त RAM की आवश्यकता होगी, शायद ATmega2650 (मेगा में एक) का उपयोग करने के लिए एक अच्छा विचार है, जिसमें यूनो की रैम 16 गुना है। आप एक ड्यू (6x जितनी तेजी से यूनो, अधिक रैम) का उपयोग कर सकते हैं।
  • आपको ओटीजी (नियत पर) या मैक्स 3421 ईई (मेगा एडीके, यूएसबी होस्ट शील्ड) के लिए विशेष यूएसबी ड्राइवरों को लिखना पड़ सकता है।

संक्षेप में, इसमें बहुत समय और प्रयास लगेगा, और शायद रोजमर्रा के उपयोग के लिए बहुत धीमा होगा। यदि आप वास्तव में Arduino Linux चाहते हैं, तो Yún देखें।


2
आप "शायद" जरूरत अतिरिक्त राम, तुम नहीं होता है अतिरिक्त राम की जरूरत है। लिनक्स के लिए 1 एमबी + रैम की आवश्यकता होती है। इसके अलावा, एमएमयू की कमी का मतलब होगा कि आपको यह पता लगाना होगा कि एक का अनुकरण कैसे करें (या ucLinux चलाएं)। वास्तव में, सबसे अच्छे रूप में, आप atmega में एक अधिक सक्षम प्रोसेसर का अनुकरण करेंगे, जो कि देशी कोड के परिमाण को धीमा करने का एक क्रम होगा। यहां तक ​​कि arduino के कारण आवश्यक राम के पास कहीं भी नहीं है।
कॉनर वुल्फ

इसके अलावा, ATmega328P में 2 KB SRAM है, और ATmega2560P में केवल 8 KB है। यह केवल 4X रैम है, 16x नहीं।
कॉनर वुल्फ

16

यह सिर्फ पर्याप्त रैम नहीं है। आपको इसे फ्लैश मेमोरी से बूट करने के लिए सिखाना होगा, जिसमें बूटलोडर को फिर से लिखना होगा।

आप इसके बजाय एक Arduino यूं या PCDuino का उपयोग कर सकते हैं ; जबकि "मानक" Arduinos ये समर्थन Arduino शील्ड और लिनक्स नहीं चलाते हैं।

या वहाँ हमेशा रास्पबेरी पाई है


आप क्यों कहते हैं कि यूं "अर्डुइनो" मानक नहीं है? मैं मानता हूं कि यह सबसे आम नहीं हो सकता है, लेकिन यह वास्तव में एक Arduino है।
jfpoilpret 6

@jfpoilpret ज्यादातर Arduinos atmega बोर्ड हैं जो avr-gcc के माध्यम से C ++ को संकलित करते हैं और एक USB चिप लगाते हैं। वे विभिन्न आकार / आकार / शक्तियों में आते हैं, लेकिन वे अनिवार्य रूप से एक ही हैं (एक तरफ मेगा)। यह बहुत स्पष्ट लग रहा था कि ओपी इन के बारे में बात कर रहा था, न कि यूं / आदि, इसलिए भेद।
मनीषीर्थ

वहाँ भी जल्द ही होने वाली हो से जारी किया गया है Arduino Tre , कम से कम मैं आशा करती हूं यह जल्द ही है ;-)
क्रिस हे

6

संक्षिप्त जवाब नहीं है।

मूल रूप से, आपको बहुत अधिक RAM की आवश्यकता होगी तब भी सबसे बड़ा ATmega मूल रूप से होगा।

यह है बाहरी हार्डवेयर को जोड़ने के लिए, और ATmega कार्यक्रम एक अधिक शक्तिशाली सीपीयू अनुकरण करने के लिए है, और उस पर linux चलाने सैद्धांतिक रूप से संभव। हालांकि, एक सादे आर्डिनो पर, यह संभव नहीं है।

यह एक Arduino ड्यू पर लिनक्स को चलाने के लिए बहुत अधिक यथार्थवादी होगा, जो मूल रूप से एक AT91SAM3X8E सीपीयू है। हालाँकि, आपको अभी भी कुछ अतिरिक्त SRAM और स्टोरेज जोड़ना होगा।

वहाँ Arduino यूं की तरह चीजें हैं, लेकिन यह वास्तव में एक ATmega32U4 के रूप में एक ही पीसीबी पर एक पूरी तरह से अलग लिनक्स मॉड्यूल है, इसलिए मुझे नहीं पता कि क्या आप वास्तव में इसे एक arduino के रूप में गिन सकते हैं।


संभवतः प्रासंगिक: एम्बेडेड लिनक्स को चलाने में क्या लगता है?


1

एक बोर्ड है जिसे PCDuino कहा जाता है जो लिनक्स के कई प्रकारों जैसे कि डेबियन, उबंटू, ओपन WRT, LEDE, रास्पियन PIXEL (सिर्फ कुछ का उल्लेख करने के लिए) चला सकता है। यह बोर्ड मूल Arduino नहीं है, बल्कि Arduino AtHeart है , और LinkSprite द्वारा बनाया गया है ।
pcDuino

Arduino में कुछ बोर्ड होते हैं जो लाइनिनो नामक लिनक्स के एक संस्करण को चलाने का समर्थन करते हैं :

  • Arduino यूं एक माइक्रो ATmega32u4 और Atheros AR9331 के आधार पर बोर्ड है। एथेरस प्रोसेसर लाइनिनो ओएस नाम के ओपनवार्ट पर आधारित लिनक्स वितरण का समर्थन करता है। बोर्ड में अंतर्निर्मित ईथरनेट और वाईफाई सपोर्ट, एक यूएसबी-ए पोर्ट, माइक्रो-एसडी कार्ड स्लॉट, 20 डिजिटल इनपुट / आउटपुट पिन (उनमें से 7 को PWM आउटपुट के रूप में और 12 को एनालॉग इनपुट के रूप में इस्तेमाल किया जा सकता है), एक 16 मेगाहर्ट्ज क्रिस्टल थरथरानवाला, एक माइक्रो यूएसबी कनेक्शन, एक ICSP हेडर और 3 रीसेट बटन।
  • नया Arduino Tian बोर्ड Atmel के SAMD21 MCU द्वारा संचालित है, जिसमें एक 32-बिट ARM Cortex® M0 + कोर और एक क्वालकॉम एथेरोस AR9342 है, जो कि 533MHz और फीचर-समृद्ध IEEE802.11n 2x2 2.4 / 2 तक संचालित होने वाला एक अत्यधिक एकीकृत MIPS प्रोसेसर है। 5 गीगाहर्ट्ज डुअल-बैंड वाईफाई मॉड्यूल। Qualcomm Atheros MIPS लिनक्स वितरण का समर्थन करता है, जो Linino नाम के OpenWRT पर आधारित है। Arduino Tian में 4GB eMMC मेमोरी में एक बिल्ड भी है जो आपकी परियोजनाओं के निर्माण में सहायक हो सकता है। बिजली की खपत को कम करने के लिए MCU से लिनक्स पोर्ट को चालू / बंद करना संभव है।
  • Arduino औद्योगिक 101 Arduino 101 LGA मॉड्यूल के लिए एक मूल्यांकन बोर्ड है। ATmega32u4 माइक्रोकंट्रोलर को बेसबोर्ड में एकीकृत किया गया है। मॉड्यूल LinWOS नाम के OpenWRT पर आधारित लिनक्स वितरण का समर्थन करता है। बोर्ड में अंतर्निहित वाईफाई (IEEE 802.11b / g / n संचालन 150Mbps 1x1 2.4 GHz तक), 3 GPIO (जिनमें से 2 को PWM आउटपुट के रूप में इस्तेमाल किया जा सकता है), 4 एनालॉग इनपुट, 1 USB, पिन पर 1 ईथरनेट सिग्नल हेडर और एक अंतर्निहित डीसी / डीसी कनवर्टर। कोडांतरण गाइड देखें और शुरू करने के लिए बस अपने बोर्ड को माइक्रो USB केबल वाले कंप्यूटर से कनेक्ट करें।

-1

यह कई साल पुराना है, लेकिन हो सकता है कि अधिक प्रासंगिक के रूप में Arduinos अधिक RAM और 32 बिट ATMEga AVRs प्राप्त करते हैं, आदि यहाँ एक स्पष्ट समस्या है जो विशेष रूप से सबसे लोकप्रिय उत्तर में नहीं है। Arduino एक AVR MICROCONTROLLER का उपयोग करता है, एक माइक्रोप्रोसेसर नहीं। यह एक प्रमुख कारण है कि लिनेक्स का कोई बंदरगाह नहीं है। माइक्रोकंट्रोलर्स को एक विशिष्ट कार्य करने के लिए डिज़ाइन किया गया है, ऐसे अनुप्रयोग जहां इनपुट और आउटपुट के संबंध को अच्छी तरह से परिभाषित किया गया है। माइक्रोप्रोसेसरों को ऑपरेटिंग सिस्टम पर विभिन्न प्रकार के ऐप चलाने के लिए डिज़ाइन किया गया है। याद रखें, शुरुआत से, लिनक्स को एक स्मृति प्रबंधन इकाई की आवश्यकता थी और 8088 या 286 पीसी पर नहीं चल सकता था। तब μClinux था, जिसने मूल रूप से पाम पायलट के लिए एम्बेडेड 68k प्रोसेसर के मोटोरोला ड्रैगनबेल परिवार को लक्षित किया था। यह कभी विशेष सफल नहीं था। आपके पास लिनक्स की तुलना में फ्रीडोस या यहां तक ​​कि मिनीक्स को पोर्ट करने में अधिक सफलता हो सकती है, शायद असेंबलर में कुछ हो, लेकिन माइक्रोकंट्रोलर पर ओएस को संकलित करना बहुत ही अव्यावहारिक है। शायद यह एक चुनौतीपूर्ण शैक्षणिक समस्या है,


-2

यह संभव है, हालांकि यह एक दर्द होगा क्योंकि आपको इसे सी में लिखना होगा (अतिरिक्त हार्डवेयर का उल्लेख करने की आवश्यकता नहीं है जैसे कि एसडी कार्ड शील्ड और अतिरिक्त मेमोरी चिप (एस)) ओन्टास की तरह कुछ, एक कर्नेल जिसमें मैंने लिखा था Arduino के लिए C, यह मदद करेगा क्योंकि इसमें ड्राइवरों को जोड़ने के लिए समर्थन है, शून्य लूप फ़ंक्शन रिपीट धीमी बनाने की कीमत पर। (यह उतना बड़ा सौदा नहीं है जितना आपको लगता है कि यह हो सकता है) (ओंटस अभी भी विकास के अधीन है और हर समय नई सुविधाएँ जोड़ी जाती हैं)

.Ino और .h फ़ाइलों के लिंक के लिए यहां क्लिक करें

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