आरटीओएस एंबेडेड सिस्टम के लिए


57

मैंने कई लेख देखे हैं जो मुझे बताते हैं कि मुझे समय प्रबंधन और संसाधन प्रबंधन के लिए RTOS का उपयोग करना चाहिए। मेरे समय ने अपने स्वयं के अनुसंधान की अनुमति नहीं दी है, इसलिए मैं सलाह के लिए चिपकेकर में आता हूं।

मैं कम संसाधन माइक्रोकंट्रोलर्स (MSP430, PIC) का उपयोग करता हूं और आरटीओएस की तलाश कर रहा था जिसका मैं उपयोग कर सकता हूं।

मुद्दे पर:

  1. सिस्टम की संसाधन लागत
  2. प्रणाली के लाभ
  3. व्यवस्था का नुकसान
  4. कार्यान्वयन ट्रिक्स
  5. आरटीओएस में स्थितियों का उपयोग नहीं किया जाना चाहिए।

मैं arduino की तरह सिस्टम का उपयोग नहीं करता, मैं जिन परियोजनाओं के साथ काम करता हूं, ऐसी प्रणाली की लागत का समर्थन नहीं कर सकता।


2
मैं इस बात से भ्रमित हूं कि इसे किस कारण से डाउन-वोट मिला। अगर मतदाता मुझे प्रतिक्रिया दे सकता है तो मैं भविष्य में ऐसी कार्रवाई से बचने की कोशिश करूंगा।
कोर्तुक

1
डिट्टो। यह एक बड़ा सवाल है ....
जेसन एस

मैंने एक सवाल स्वीकार किया क्योंकि, यहां तक ​​कि यह भी सोचा था कि यह समाप्त हो गया है, मेरे पास कई शानदार प्रतिक्रियाएं थीं और इस प्रयास के लिए कम से कम एक लेखक को पुरस्कृत करना चाहता था।
कोर्तुक

जवाबों:


29

मेरे पास QNX के अलावा RTOS के साथ बहुत अधिक व्यक्तिगत अनुभव नहीं है (जो कि पूरी तरह से बढ़िया है, लेकिन यह सस्ता नहीं है और मेरे पास एक विशेष बोर्ड विक्रेता और QNX के सिस्टम-अन्य के लिए हम-न-केयर रवैया के साथ वास्तव में बुरा अनुभव रहा है उनकी सबसे आम) जो PICs और MSP430 के लिए बहुत बड़ी है।

आरटीओएस से आपको क्या फायदा होगा, जैसे क्षेत्रों में है

  • धागा प्रबंधन / समय-निर्धारण
  • अंतर-धागा संचार + सिंक्रनाइज़ेशन
  • I / O सिस्टम पर stdin / stdout / stderr या सीरियल पोर्ट या ईथरनेट सपोर्ट या एक फाइलसिस्टम (एक MSP430 नहीं या अधिकांश भाग के लिए PIC, सीरियल पोर्ट को छोड़कर)

PIC या MSP430 के बाह्य उपकरणों के लिए: सीरियल पोर्ट के लिए मैं रिंग बफ़र का उपयोग करता हूँ + बीच में आता है ... कुछ मैं एक बार प्रति सिस्टम लिखता हूं और बस पुन: उपयोग करता हूं; अन्य बाह्य उपकरणों से मुझे नहीं लगता कि आपको RTOS से बहुत समर्थन मिलेगा, क्योंकि वे बहुत विशिष्ट हैं।

यदि आपको माइक्रोसेकंड के लिए रॉक-सॉलिड समय की आवश्यकता है, तो आरटीओएस शायद मदद नहीं करेगा - आरटीओएस ने समयबद्धता की सीमा तय की है, लेकिन आमतौर पर संदर्भ स्विचिंग देरी के कारण उनके समय निर्धारण में घबराना होता है ... QNX एक PX270 पर चल रहा था microseconds के दसियों में घबराना ठेठ, 100-200us अधिकतम, इसलिए मैं इसे ऐसे सामान के लिए उपयोग नहीं करूंगा जो लगभग 100 हर्ट्ज से अधिक तेजी से चलना है या जिसकी आवश्यकता लगभग 500us की तुलना में बहुत अधिक सटीक है। उस तरह के सामान के लिए आपको संभवतः अपनी खुद की रुकावट को लागू करना होगा। आरटीओएस के कुछ लोग इसके साथ अच्छी तरह से खेलेंगे, और अन्य इसे एक शाही दर्द बना देंगे: आपका समय और उनकी समयावधि अच्छी तरह से साथ नहीं ले सकते हैं।

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


मैं एक स्टार्टअप कंपनी में काम करता हूं जहां सबसे अनुभवी एम्बेडेड सिस्टम वाले लोग कॉलेज से बाहर हैं (यानी। खुद और दूसरा लड़का जो मेरे साथ लगभग 2 साल से काम कर रहा है)। मैं अपने काम के सप्ताह के दौरान उद्योग अभ्यास के बारे में खुद को पढ़ाने में बहुत बड़ा समय बिताता हूं। जैसा कि मैं पढ़ रहा हूं मुझे सभी के लिए सूचित किया गया है लेकिन हमारी सबसे कम लागत प्रणाली आरटीओएस एक बड़ा सुधार होगा।
२१:१३ बजे कोर्तुक

PIC और MSP430s जैसी चीजों के लिए बहुत कम संसाधन RTOS प्रणाली लगती है जो एक बहुत जटिल से बाहर एक निर्धारक प्रणाली बनाने में मदद कर सकती है, साथ ही मॉड्यूल को अलग रखने के हमारे प्रबंधन को बहुत साफ करती है। मैं एक दो आदमी टीम का हिस्सा रहा हूं जिसने प्रभावी रूप से फील्ड डेटा कलेक्शन और राउटिंग सिस्टम बनाया है। अब जब मैं आरटीओएस को देखता हूं तो मुझे लगता है कि हमने जो डिजाइन किया है, वह एकदम सही है।
कोर्तुक

तीन पोस्ट स्लॉट का उपयोग करने के लिए क्षमा करें, आपका उत्तर बहुत उपयोगी है, मैं बहुत कम संसाधन समाधान की तलाश में हूं, लेकिन यह जानकारी आपके लिए मूल्यवान है, मदद के लिए धन्यवाद।
२३:२३ बजे कोर्तुक

टिप्पणी की गिनती के बारे में चिंता मत करो (IMHO एक बात है कि StackExchange ढांचे की कमी है चर्चा के लिए समर्थन है ... क्यू / ए प्रारूप में ज्यादातर चीजें शामिल हैं, लेकिन कुछ नहीं) ... लगता है जैसे आपके पास एक बहुत अच्छा संभाल है आप देख रहे हैं। मैंने उस फ्रीआरटीओएस पर ध्यान नहीं दिया है जो स्टीव ने उल्लेख किया है लेकिन अगर इसे कम-अंत माइक्रोकंट्रोलर में पोर्ट किया गया है, तो शायद यह शेड्यूलिंग प्रबंधन आपकी आवश्यकता को पूरा करेगा।
जेसन एस

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

26

क्या आपने फ्रीआरटीओएस की कोशिश की है ? यह मुफ़्त है (टी एंड सी के अधीन), और दोनों MSP430, और PIC के कई स्वादों के लिए पोर्ट किया गया है।

यह कुछ अन्य लोगों की तुलना में छोटा है, लेकिन इससे सीखने में भी आसानी होती है, खासकर यदि आपने पहले आरटीओएस का उपयोग नहीं किया है।

ए (गैर-मुक्त) वाणिज्यिक लाइसेंस उपलब्ध है, साथ ही साथ आईईसी 61508 / एसआईएल 3 संस्करण भी है।


एक टन धन्यवाद, मैं इसे सप्ताह के भीतर देखूंगा, मैं अन्य उत्तरों के लिए प्रश्न को खुला छोड़ दूंगा, लेकिन आप एक बड़ी मदद हैं!
कोर्तुक

12

मुझे सिर्फ NuttX RTOS के बारे में पता चला , जो कि 8052 (8-बिट) सिस्टम पर भी काम कर सकता है। इसमें बहुत सारे पोर्ट नहीं हैं, लेकिन यह दिलचस्प लगता है। POSIX एक प्लस हो सकता है, क्योंकि यह आपके कुछ कोड को थोड़ा अधिक पोर्टेबल बना सकता है यदि आप एक बीफियर प्रोसेसर तक जाते हैं और आप वास्तविक समय का लिनक्स या QNX चलाना चाहते हैं।

मुझे स्वयं व्यावसायिक आरटीओएस के साथ कोई अनुभव नहीं है, लेकिन मैंने वर्षों से घर का बना उपयोग किया है! वे कई प्रोग्रामर के बीच आपके कोड विकास को विभाजित करने में आपकी मदद करने में महान हैं, क्योंकि वे अनिवार्य रूप से प्रत्येक को अपने काम पर "कार्य" या "थ्रेड" प्राप्त कर सकते हैं। आपको अभी भी समन्वय करना है और किसी को यह सुनिश्चित करने के लिए पूरी परियोजना की देखरेख करनी चाहिए कि प्रत्येक कार्य समय सीमा में हो सकता है।

मैं आपको RTOS का उपयोग करते समय अनुसंधान दर मोनोटोनिक विश्लेषण या RMA भी सुझाता हूं । यह आपको यह गारंटी देने में मदद करेगा कि आपके महत्वपूर्ण कार्य उनकी समय सीमा को पूरा करेंगे।

मैं Miro Samek के QP-nano इवेंट-संचालित प्रोग्रामिंग फ्रेमवर्क में भी देखूंगा जो कि RTOS के साथ या उसके बिना भी काम कर सकता है और फिर भी आपको वास्तविक समय की क्षमता प्रदान कर सकता है। इसके साथ, आप पारंपरिक कार्यों के बजाय अपने डिजाइन को श्रेणीबद्ध राज्य मशीनों में विभाजित कर रहे हैं। जेसन एस ने अपने पोस्ट में मिरो की किताब का उल्लेख किया। एक उत्कृष्ट पढ़ा!


9

एक मशीन के एक नंबर पर उपयोगी एक चीज मैंने पाया है एक साधारण स्टैक स्विचर। मैंने वास्तव में PIC के लिए एक नहीं लिखा है, लेकिन मुझे उम्मीद है कि दृष्टिकोण PIC18 पर ठीक काम करेगा अगर दोनों / सभी थ्रेड्स कुल 31 या उससे कम स्टैक स्तरों का उपयोग करते हैं। 8051 में, मुख्य दिनचर्या है:

_taskswitch:
  xch a, SP
  xch a, _altSP
  xch a, SP
  गीला करना

PIC पर, मैं स्टैक पॉइंटर का नाम भूल जाता हूं, लेकिन दिनचर्या कुछ इस तरह होगी:

_taskswitch:
  Movlb _altSP >> 8
  Movf _altSP, डब्ल्यू, बी
  Movff _STKPTR, altSP 
  Movwf _STKPTR, सी
  वापसी

अपने कार्यक्रम की शुरुआत में, एक कार्य 2 को कॉल करें () दिनचर्या जो वैकल्पिक स्टैक के पते के साथ altSP को लोड करता है (16 शायद PIC18Fxx के लिए अच्छी तरह से काम करेगा) और कार्य 2 लूप चलाता है; इस दिनचर्या को कभी वापस नहीं करना चाहिए वरना दर्दनाक मौत मर जाएगी। इसके बजाय, इसे _taskswitch को कॉल करना चाहिए जब भी वह प्राथमिक कार्य पर नियंत्रण प्राप्त करना चाहता है; प्राथमिक कार्य को तब _taskswitch को कॉल करना चाहिए, जब भी वह द्वितीयक कार्य के लिए निकलना चाहता है। अक्सर, एक प्यारा सा दिनचर्या होगा जैसे:

शून्य देरी_टी 1 (अहस्ताक्षरित छोटी घाटी)
{
  करना
    taskswitch ();
  जबकि ((अहस्ताक्षरित लघु) (मिलीसेकंड - वाल)> 0xFF00);  
}

ध्यान दें कि टास्क स्विचर के पास किसी भी 'कंडीशन के लिए प्रतीक्षा' करने का कोई साधन नहीं है; यह सब एक स्पिनवाइट का समर्थन करता है। दूसरी ओर, टास्क स्विच इतना तेज़ होता है कि एक टास्कविच () का प्रयास करते समय दूसरा कार्य एक टाइमर के समाप्त होने की प्रतीक्षा कर रहा होता है और दूसरे कार्य पर स्विच हो जाता है, टाइमर की जाँच करता है, और एक सामान्य टास्क-स्विचर की तुलना में तेज़ी से वापस स्विच करता है यह निर्धारित करेगा कि इसे टास्कस्विच करने की आवश्यकता नहीं है।

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

(संपादित करें): स्वचालित चर और इस तरह के बारे में एक युगल चेतावनी:

  1. यदि एक रूटीन जो टास्क-स्विचिंग का उपयोग करता है, दोनों थ्रेड्स से कॉल किया जाता है, तो यह आम तौर पर रूटीन की दो प्रतियों को संकलित करने के लिए आवश्यक होगा (संभवतः एक ही स्रोत फ़ाइल को दो बार अलग-अलग # अलग-अलग बयानों के साथ # शामिल करके)। किसी भी दी गई स्रोत फ़ाइल में या तो केवल एक थ्रेड के लिए कोड होगा, या फिर उस कोड में दो बार संकलित किया जाएगा - एक बार प्रत्येक थ्रेड के लिए - इसलिए मैं मैक्रोज़ का उपयोग कर सकता हूं जैसे "#define देरी (x) delay_t1 (x)" या #define देरी (x) delay_tx (x) "इस बात पर निर्भर करता है कि मैं किस धागे का उपयोग कर रहा हूं।
  2. मेरा मानना ​​है कि PIC संकलक जो किसी फ़ंक्शन को "देख नहीं सकते" कहलाते हैं, मान सकते हैं कि ऐसा फ़ंक्शन किसी भी और सभी CPU रजिस्टरों को रद्दी कर सकता है, इस प्रकार टास्क-स्विच रूटीन में किसी भी रजिस्टर को बचाने की आवश्यकता से बचना [की तुलना में एक अच्छा लाभ] प्रीमेप्टिव मल्टीटास्किंग]। किसी भी अन्य सीपीयू के लिए समान कार्य स्विचर पर विचार करने वाले को उपयोग में रजिस्टर सम्मेलनों के बारे में पता होना चाहिए। एक कार्य स्विच से पहले रजिस्टर करना और बाद में उन्हें पॉप करना, चीजों की देखभाल का एक आसान तरीका है, पर्याप्त स्टैक स्थान मौजूद है।

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


1
बहुत बढ़िया जवाब। मुझे लगता है कि अपने खुद के आरटीओएस से संपर्क करने पर संसाधनों पर कुछ लिंक प्राप्त करना दिलचस्प होगा। यहां मेरा ध्यान वास्तव में एक विक्रेता से उच्च गुणवत्ता वाला आरटीओएस प्राप्त कर रहा था जिसने कठिन वास्तविक समय सुनिश्चित करने का काम किया है, लेकिन यह अपने लिए एक मजेदार हॉबीस्ट प्रोजेक्ट हो सकता है।
कोर्तुक

1
कूल, कभी भी एसपी को स्विच करने जैसे कार्यों के बारे में नहीं सोचा था ...
निकहेल्डेन

1
@ जॉर्ड: मैंने 8x51 पर और एक टीआई डीएसपी पर छोटे कार्य-स्विचर्स किए हैं। 8051, ऊपर दिखाया गया है, ठीक दो कार्यों के लिए डिज़ाइन किया गया है। डीएसपी एक का उपयोग चार के साथ किया जाता है और यह थोड़ा अधिक जटिल है। मेरे पास सिर्फ एक पागल विचार था, हालांकि: कोई तीन टास्कस्विच का उपयोग करके चार कार्यों को संभाल सकता था। हर बार जब पहले दो कार्यों में से कोई एक कार्य करना चाहता है, तो उसे टास्कस्विच 1 और टास्कस्विच 2 को कॉल करना चाहिए। जब दूसरे दो कार्यों में से एक कार्य करना चाहता है तो उसे टास्कस्विच 1 और टास्कस्विच 3 को कॉल करना चाहिए। मान लें कि कोड stack0 में शुरू होता है, और प्रत्येक कार्य स्विचर को इसके संबंधित स्टैक संख्या के साथ सेट किया जाता है।
सुपरैट

@ जॉर्ड: हम्म ... जो काफी काम नहीं करता है; यह 3-तरह के राउंड-रॉबिन का उत्पादन करता है और तीसरे स्विचर को अनदेखा करता है। खैर, प्रयोग करें और मुझे लगता है कि आप शायद एक अच्छा फॉर्मूला पाएंगे।
सुपरकैट

7

मैंने MSP430 पर साल्वो का उपयोग किया है । यह प्रोसेसर संसाधनों पर बहुत हल्का था और, यह प्रदान करते हुए कि आप कार्यान्वयन नियमों का पालन करते हैं, उपयोग करने में आसान और विश्वसनीय। यह एक सहकारी ओएस है और कार्य फ़ंक्शन के बाहरी फ़ंक्शन कॉल स्तर पर कार्य स्विच किए जाते हैं। यह बाधा ओएस को बहुत छोटे मेमोरी उपकरणों में काम करने की अनुमति देता है, जिसमें बड़ी मात्रा में स्टैक स्पेस का उपयोग किए बिना कार्य संदर्भों को बनाए रखा जाता है।

AVR32 पर मैं FreeRTOS का उपयोग कर रहा हूं। अब तक बहुत विश्वसनीय है, लेकिन मेरे पास उस संस्करण के बीच कुछ कॉन्फ़िगरेशन / संस्करण विसंगतियां हैं जिन्हें FreeRTOS प्रकाशित करता है और संस्करण Atmel ढांचे के साथ आपूर्ति करता है। हालांकि यह लाभ है कि यह मुफ़्त है!


5

एवरीडे प्रैक्टिकल इलेक्ट्रॉनिक्स के दिसंबर संस्करण में PICs (PIC n 'मिक्स कॉलम में) के लिए रियल टाइम ऑपरेटिंग सिस्टम पर एक श्रृंखला का भाग 3 है और इसमें MPLAB और PICKit के साथ FreeRTOS स्थापित करने का विवरण है। पिछले दो लेख (जो मैं नहीं देखा) विभिन्न आरटीओएस की खूबियों पर चर्चा की और फ्रीआरटीओएस पर समझौता किया। एक बार जब वर्तमान लेख में विकास का माहौल तैयार हो जाता है, तो वे एक बाइनरी डिजिटल घड़ी डिजाइन करना शुरू करते हैं। ऐसा प्रतीत होता है कि इस विषय पर आने के लिए कम से कम एक और हिस्सा है।

मुझे यकीन नहीं है कि अमेरिका में ईपीई कितना उपलब्ध है, लेकिन उनकी साइट से जुड़ा एक यूएस स्टोर प्रतीत होता है और वहां इलेक्ट्रॉनिक उपकरण उपलब्ध हो सकते हैं।


4

PIC के लिए CCS संकलक एक सरल RTOS के साथ आता है। मैंने इसकी कोशिश नहीं की है, लेकिन अगर आपके पास यह संकलक है, तो इसके साथ प्रयोग करना आसान होगा।


1
मैंने वास्तव में अपनी पहली कोशिश की। यह शब्द के किसी भी वास्तविक अर्थ में RTOS नहीं है। यह किसी भी तरह से पूर्व निर्धारित नहीं है। इसके लिए उपज आदेशों के नियमित उपयोग की आवश्यकता होती है ताकि आरटीओएस यह तय कर सके कि आगे कौन चलाता है, आपको जानबूझकर उन्हें लगातार उस स्थिति में रखना होगा जब किसी अन्य कार्यक्रम को संभालने की आवश्यकता होती है।
कोर्तुक

2
मुझे लगता है कि इसे अभी भी RTOS कहा जाता है। यह सिर्फ ऐसा लगता है जैसे इसमें पूरी तरह से प्रीमेप्टिव शेड्यूलर के बजाय एक सहकारी अनुसूचक है।
जे। एटकिंसन

हां, यह अभी भी तकनीकी रूप से एक आरटीओएस है, लेकिन मेरे पास अभी भी इसके लिए बहुत कम मूल्य है। मैं जानता हूं कि यह एक व्यक्तिगत चीज है, लेकिन मेरे लिए मूल्यवान होने के लिए पूर्वनिर्धारित होना आवश्यक है। मैं अभी भी +1 करता हूं क्योंकि यह एक अच्छा जवाब और मूल्य था।
कोरटुक

3

बारीकी से संबंधित प्रश्न: https://stackoverflow.com/questions/1624237/multithreading-using-c-on-pic18


धन्यवाद! ऐसा लगता है कि अधिकांश लोगों को सवाल नहीं मिला, लेकिन यह अभी भी दिलचस्प है।
कोर्तुक

मैंने एसओ पर सवाल पोस्ट किया और उपयोगकर्ता को ई एंड आर में मदद के लिए आमंत्रित किया!
Kortuk

मुझे लगता है कि हमें SO पर प्रश्न "मिला", यह कुछ अलग पूछ रहा था लेकिन इस प्रश्न से संबंधित है। प्रमाणीकरण के बारे में आपकी टिप्पणी के लिए के रूप में; यह कई चीजों पर निर्भर करता है। यहाँ के जवाबों को देखते हुए, मुझे DoxaLogos का QP-nano का जवाब पसंद है; मेरा अनुभव मुझे थ्रेड्स पर इवेंट संचालित कोड और थ्रेड्स के अंतर्निहित संदर्भ स्विचिंग को प्राथमिकता देता है।
janm

2

आपने अपने आवेदन के बारे में बहुत कुछ नहीं कहा है। क्या आप RTOS का उपयोग करते हैं, इस बात पर बहुत कुछ निर्भर करता है कि आपको PIC में क्या करना है। जब तक आप कई अलग-अलग अतुल्यकालिक चीजें नहीं कर रहे हैं, जिनके लिए सख्त समय सीमा की आवश्यकता होती है, या कई थ्रेड चल रहे हैं, तो एक आरटीओएस ओवरकिल हो सकता है।

माइक्रोकंट्रोलर पर समय को व्यवस्थित करने के कई तरीके हैं जो इस बात पर निर्भर करता है कि सबसे महत्वपूर्ण क्या है:

  1. लगातार फ्रेम दर: एक PIC के लिए एक इमदादी नियंत्रक चल रहा है जो कि उदाहरण के लिए 1000Hz पर चलना चाहिए। यदि PID एल्गोरिदम निष्पादित करने के लिए 1ms से कम समय लेता है, तो आप अन्य कार्यों को करने के लिए मिलीसेकेंड के शेष का उपयोग कर सकते हैं, जैसे CAN बस की जांच, सेंसर पढ़ें, आदि।

  2. सभी व्यवधान: पीआईसी में होने वाली हर चीज को एक व्यवधान से ट्रिगर किया जाता है। घटना के महत्व के अनुसार रुकावटों को प्राथमिकता दी जा सकती है।

  3. इसे एक लूप में चिपकाएं और जितना हो सके सब कुछ तेजी से करें। आप पा सकते हैं कि यह उपयुक्त समय सीमा प्रदान करता है।


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