क्या रियल टाइम सॉफ्टवेयर चलाना संभव है?


60

मुझे पता है कि यह लिनक्स चलाता है और लिनक्स के लिए वास्तविक समय पैच उपलब्ध हैं। उन पैच काम करेंगे?

किसी ने रास्पबेरी पाई पर एक और वास्तविक समय-ओएस की कोशिश की है?

विचार यह है कि बोर्ड का उपयोग नियमन और नियंत्रण के लिए किया जाता है जो समय के लिए महत्वपूर्ण हैं।


2
मुझे लगता है कि केवल एक ही अद्वितीय कारण होगा जो दिमाग में आता है कि आप क्यों नहीं होंगे यदि बंद जीपीयू समाधान रास्ते में प्राप्त करने के लिए थे। बशर्ते आप अपने वास्तविक समय के कार्यों में केवल GPU को अनदेखा करने का निर्णय ले सकते हैं, मुझे लगता है कि रियलटाइम एक्सटेंशन को काम करने के लिए बनाया जा सकता है।
क्रिस स्ट्रैटन

7
आपके लिए संशोधित करने के लिए पूरी रास्पबेरी पाई प्रणाली खुली नहीं है; सवाल यह होगा कि क्या हिस्सा (जीपीयू) आपके रियलटाइम कार्यों को चलाने के दौरान रास्ते से बाहर रहने के लिए तैयार नहीं होगा, या अगर वह अनजाने में या तो बस साइकिल की मांग करने जा रहा है तो राम या यहां तक ​​कि "ध्यान दें" "एआरएम कोर से एक तरह से जो कठिन समय लक्ष्यों को निराश करेगा।
क्रिस स्ट्रैटन

4
जाहिरा तौर पर RISCOS कुछ रियलटाइम अनुप्रयोगों के लिए काफी उपयुक्त है और यह रास्पबेरी पाई पोर्ट अच्छी तरह से चल रहा है। * 8 ')
मार्क बूथ

4
RISCOS एक वास्तविक समय ओएस (आपके विकिपीडिया लिंक के अनुसार) नहीं है तो यह कैसे मदद कर सकता है?
लार्स पॉटर

4
CONFIG_PREEMPT_RT पैच को Linux चलाने वाले कई ARM प्रोसेसर पर प्रदर्शित किया गया है । कुछ विलंबता मुद्दे हो सकते हैं, लेकिन इन्हें माइक्रोसेकंड के आदेश पर मापने योग्य होना चाहिए।
ब्रेकथ्रू

जवाबों:


16

आप RaspberryPi पर Xenomai चलाने के लिए इच्छुक हो सकते हैं । यहाँ आप यह कैसे करना है पर एक ट्यूटोरियल पा सकते हैं। संक्षेप में, Xenomai एक परियोजना है जिसने कस्टम लिनक्स कर्नेल बनाया है (वे कर्नेल स्रोतों पर लागू होने वाले पैच प्रदान करते हैं) यह एक और कर्नेल (Xenomai कोर) को चलाने के लिए सक्षम करता है जो एक वास्तविक समय है। यह उनके लिए ड्राइवरों को लिखने की आवश्यकता के बिना हार्डवेयर की विस्तृत श्रृंखला पर एक्सनोमई अनुप्रयोगों को चलाने के लिए संभव बनाता है (चूंकि लिनक्स हार्डवेयर की बहुत विस्तृत श्रृंखला पर काम कर रहा है)। यह कुछ अलग-अलग आरटी एपीआई उपलब्ध का उपयोग करके आरटी यूजरस्पेस एप्लिकेशन लिखने की अनुमति देता है।


1
इस उपकरण के साथ मैं अधिकतम कितनी आवृत्ति प्राप्त कर सकता हूं? मैं 1 kHz की दर से DC मोटर को नियंत्रित करने में रुचि रखता हूं
निकोलस एरियस

19

लिनक्स कर्नेल में, सक्षम PREEMPT_RTकरना बाउंडेड लेटेंसी और रियलटाइम एपीआई प्रदान करेगा। कॉन्फ़िगर करने के अलावा PREEMPT_RT, SCHED_FIFOऔर SCHED_RRनीतियों को भी चुनना होगा। और एप्लिकेशन को उपयुक्त API को कॉल करके या उपयुक्त उपयोगिताओं का उपयोग करके रीयलटाइम पैरामीटर सेट करने की आवश्यकता होती है।

एक मुक्त-इलेक्ट्रॉन प्रशिक्षण के अनुसार : एंबेडेड लिनक्स में रियलटाइम, PREEMPT_RT एक प्रोजेक्ट था जो रियलटाइम क्षमता को कर्नेल में लाता है। यह पूरी तरह से 2.6.33 और 3.0 कर्नेल स्ट्रीम में बदल गया है। दस्तावेज़ देखें आपको सब कुछ मिल जाएगा।

मूल रूप से लिनक्स कर्नेल में रीयलटाइम क्षमता लाने के लिए दो दृष्टिकोण हैं:

  • कर्नेल के अंदर संशोधित करें, वह PREEMPT_RTप्रोजेक्ट है।
  • एक सामान्य कर्नेल के साथ वास्तविक समय भाग साइड-बाई-साइड चलाने के लिए और सामान्य गिरी नीचे, वहाँ तीन पीढ़ियों किया गया है: RTLinux, RTAI, और Xenomai। ( नीचे उल्लेख के Aedosरूप Avioमें?)

संपादित करें:


2
रास्पबेरी पाई में आपका स्वागत है, अच्छा जवाब! RT PREEMPT patchद्वारा इंगो मोलनार के साथ उपयोग किया High Resolution Timers(एचआरटी) समर्थन, कर्नेल को प्राप्त करने के लिए अनुमति देते हैं कड़ी मेहनत से वास्तविक समय क्षमताओं। वर्तमान में, इसका समर्थन 3.4.11 कर्नेल तक पहुंचता है , और "अच्छी खबर" यह है कि पैच "सिकुड़ रहा है", इसलिए ऐसा लगता है कि इसमें से अधिकांश मुख्यधारा कर्नेल स्रोतों में शामिल हो रहे हैं। आप कैसे लागू करते हैं और इसका इस्तेमाल करने के लिए एक उत्कृष्ट ट्यूटोरियल पा सकते हैं यहाँ
अवियो

1
उह, और लिनक्स में हार्ड रीयल-टाइम समर्थन प्रदान करने के लिए विकल्पों में से एडीओ का हवाला देना मत भूलना ।
अवियो सेप

2
मुझे यह उल्लेख करना चाहिए कि रास्पबेरी पाई कर्नेल के साथ PREEMPT_RT काम कर रहा है, यह एक straighforward मामला नहीं है, बस पैच लगाने से एक गैर-कार्यशील कर्नेल का उत्पादन होता है। इसके अलावा, रास्पबेरी पाई कर्नेल में बहुत सारे नए ड्राइवर हैं, और इन ड्राइवरों का PREEMPT_RT के साथ परीक्षण नहीं किया गया है, और न ही उन्हें लंबे समय तक अवरुद्ध नींद के लिए मंजूरी दे दी गई है। यह बहुत अधिक प्रगति का काम है।
नेकेडबल

2
इस पर कोई अद्यतन? क्या ड्राइवर अब इस कर्नेल पैच का उपयोग करने के लिए पर्याप्त स्थिर हैं? मुझे उन लोगों के लिए एक वर्किंग ट्यूटोरियल पसंद आएगा जिन्होंने अभी तक कर्नेल संकलित नहीं किया है।
फेब

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

6

वायोलुम मैस aLaMode (मैं इसे बादाम पाई कहता हूं) को ढेर के रूप में पाई के ऊपर फिट करने के लिए। इसमें एक वास्तविक समय की घड़ी है, एक 328 का उपयोग करता है, GPIO रियल UART / पावर का फ़ीड करता है और विभिन्न तरीकों से फ्लैश होता है। यह बहुत अच्छा है क्योंकि पाई जो कुछ भी आप चाहते हैं वह कर सकते हैं, वेब सर्वर / डेटाबेस जबकि Arduino वास्तविक समय की बाधा में चलता है।

यहाँ छवि विवरण दर्ज करें


1
2 माइक्रोकंट्रोलर को चलाने के लिए थोड़ा अव्यवहारिक लग सकता है, लेकिन दूसरी तरफ यह वास्तविक समय के संचालन को सुनिश्चित करता है यदि अन्य दृष्टिकोण पर्याप्त तेज नहीं हैं।
फैब

1
आरपीआई अपने नियंत्रण पाश को धीमा किए बिना अन्य आरसी के साथ कैसे संचार करेगा?
फैब

1
हां, लेकिन theC को UART का अनुमान लगाना होगा कि मैं UART को नियंत्रण पाश टाइमर व्यवधान को स्थगित करने नहीं देने के लिए अनुमान लगाता हूं। क्या मैं नियंत्रण लूप की शुरुआत में UART को पोल कर दूंगा और सुनिश्चित करूंगा कि मैं कई बाइट्स तक नहीं पढ़ूं इसलिए इसमें ज्यादा समय नहीं लगता है? या यूएटी बफ़र्स भी आसानी से इस तरह से बह सकते हैं? या क्या नियंत्रण लूप की आवृत्ति UART की गति से इतनी अधिक होगी कि प्रत्येक लूप को एक बाइट पढ़ना, यदि उपलब्ध हो, तो पर्याप्त से अधिक होगा?
फेब

1
अच्छा सुझाव है। बीटीडब्ल्यू रास्पबेरी पाई अलमोडे पहले से ही एक सजा है। जब आप पाई पर आइसक्रीम डालते हैं तो अला मोड।
दान

1
वास्तव में ? हेहे। मुझे आश्चर्य हुआ कि इसका क्या मतलब है। अब समझ में आता है :)
Piotr Kula

2

इसका सबसे अच्छा समाधान मैंने देखा है कि हेबर से रास्पबेरी पाई के लिए एक्स 10 आई - रियल टाइम कंट्रोल बोर्ड

X10i एक सार्वभौमिक, शक्तिशाली और सुरक्षित वास्तविक समय नियंत्रक है जो किसी भी पीसी प्रणाली से, यूएसबी के माध्यम से कई इनपुट / आउटपुट पर नियंत्रण की अनुमति देता है। हेबर अब अपने पीसी से बाहरी दुनिया के साथ जुड़ने के लिए प्रोग्रामर, आविष्कारकों और डेवलपर्स के लिए इसे और भी आसान बनाने के लिए कई प्रोग्रामिंग भाषाओं में समर्थन प्रदान करता है।

उपरोक्त लिंक उत्कृष्ट और व्यापक दस्तावेज प्रदान करता है और वे कोशिश करते हैं और चालकों को पाइ के लिए डेबियन के नवीनतम संस्करण के साथ अद्यतित रखें।


तो आपको पाई से एक रिबन कनेक्टर की आवश्यकता है? बात की एक तस्वीर नहीं मिल सकती है, लेकिन यह वास्तव में भारी लग रहा है। इसके उदाहरणों का आवंटन है, इसलिए अच्छा है कि मुझे लगता है। +1
पायोटर कुला

मैं यह नहीं कह सकता कि मैंने इसका उपयोग किया है, लेकिन मैं ऐसा करने की उम्मीद करूंगा, हालांकि मुझे लगता है कि मुझे डेमो में यूएसबी इंटरफ़ेस का उपयोग करने वाला लड़का याद है। यह बहुत भारी है, हालांकि हाँ।
जीवांश

1

यहाँ एक लेख (फ्रेंच अनुवाद द्वारा अनुवादित गूगल) रास्पबेरी पाई पर एक्सनोमई के साथ चल रहा है


5
नमस्ते। आमतौर पर हम उन उत्तरों को हतोत्साहित करते हैं जो लिंक किए गए पृष्ठ चाल के मामले में बस लिंक होते हैं। क्या आप अपने उत्तर में उस पृष्ठ की जानकारी को संक्षेप में बता सकते हैं? फिर आप संदर्भ के रूप में लिंक को शामिल कर सकते हैं। धन्यवाद!
17

1

RODOS अभी एक और विकल्प है। यह जर्मन एयरोस्पेस सेंटर और प्रो मोंटेनेग्रो विश्वविद्यालय की टीम और छात्रों द्वारा विकसित एक ओपन सोर्स प्रोजेक्ट है।

यह C ++ का उपयोग कर रहा है, पूरी तरह से ऑब्जेक्ट ओरिएंटेड तरीके से लिखा गया है और ARM7, Atmel AVR, STM32 / Cortex-M3, Xilinx, Raspberry Pi :), ... का समर्थन करता है

वर्तमान में इसका उपयोग उपग्रह TET और LoTTo मशीनों में किया जाता है अगर मुझे वह गलत नहीं मिला।

बेशक, मैं इसे लिनक्स के ऊपर चलाना पसंद करूँगा (क्या संभव है) दोनों दुनिया में सबसे अच्छा है - लेकिन फिर वास्तविक समय प्रश्न बने हुए हैं, क्योंकि मुझे यकीन नहीं है कि यह संभव है कि लिनक्स सही एपीआई प्रदान कर सके।

RODOS पाने के लिए प्रो सर्जियो मोंटेनेग्रो या DLR (जर्मन एयरोस्पेस सेंटर) को एक संदेश लिखना होगा।


1

लिनक्स के अलावा, वास्तविक समय ऑपरेटिंग सिस्टम हैं। खुले खट्टा लोगों के बीच काफी लोकप्रिय है ChibiOS / RT:

एक पूर्ण, पोर्टेबल, खुला स्रोत, कॉम्पैक्ट और बहुत तेज़ RTOS (रियल-टाइम ऑपरेटिंग सिस्टम) है

एक संक्षिप्त परिचय http://chibios.org/dokuwiki/doku.php?id=chibios:documents:introduction पर है । linux से अलग होने के कारण आपको रीडिंग भी पसंद आ सकती है

खैर, कुछ डिज़ाइन विकल्प हैं जिन्हें समझाया जाना चाहिए और ChibiOS / RT को एक अजीब डिजाइन बनाने में योगदान करना चाहिए। वास्तव में अपने आप में कुछ भी नया नहीं है लेकिन पूरा दिलचस्प है।

या नहीं। यदि आप इसे पसंद करते हैं - पीआई पर प्रयोग करना https://github.com/steve-bate/ChibiOS-RPi पर अनुभव के लायक हो सकता है :

रास्पबेरी पीआई प्रयोग के लिए ChibiOS कांटा।

लेखक एक अच्छा गाइड जोड़ता है

http://www.stevebate.net/chibios-rpi/GettingStarted.html

व्यक्तिगत रूप से, जब यह rtos की बात आती है, तो मेरे लिए linux सादे देश की जरूरतों के लिए क्रॉस-अल्पाइन उपकरण ले जाने जैसा है। आपको इसकी आवश्यकता नहीं है। यहां तक ​​कि एक पाई बहुत अधिक हो सकती है। बाहर की जाँच http://forum.arduino.cc/index.php?topic=144715.0 भी कम वजन के लिए :)


0

RT_PREEMPT_FULL के साथ हाइप्रीट रास्पियन के इस संस्करण को देखें:

http://www.ehu.eus/ehusfera/pablogn/2016/01/20/real-time-kernel-for-the-raspberry-sbc/


1
रास्पबेरी पाई में आपका स्वागत है! जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
Ghanima
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.