में परहेज कर रहे हैं मैं एक एम्बेडेड लिनक्स परियोजना में आगामी स्थिति (अभी तक कोई हार्डवेयर) जहां दो बाहरी चिप्स एक भी शारीरिक आईआरक्यू लाइन साझा करने के लिए की आवश्यकता होगी पर विचार कर रहा हूँ। यह रेखा एज ट्रिगरिंग के हार्डवेयर में सक्षम है लेकिन स्तर पर ट्रिगर इंटरप्ट नहीं है।कैसे साझा आईआरक्यू दौड़ लिनक्स
लिनक्स में साझा आईआरक्यू समर्थन को देखते हुए, मैं समझता हूँ कि जिस तरह से यह दो अलग-अलग चालकों के साथ काम करेगा यह है कि कि प्रत्येक, उनके बाधा हैंडलर कहा जाता है उनके हार्डवेयर की जाँच करें और संभाल अगर उचित होगा।
हालांकि मैं निम्नलिखित रेस स्थिति की कल्पना और जानना चाहते हैं कि मैं कुछ याद कर रहा हूँ या क्या इस को हल करने के लिए क्या किया जा सकता है करना चाहते हैं। मान लीजिए कि वहाँ दो बाहरी बाधा स्रोत हैं करते हैं, उपकरणों ए और बी:
- डिवाइस बी बाधा उत्पन्न होती है, आईआरक्यू सक्रिय
- आईआरक्यू बढ़त लिनक्स कोर बाधा हैंडलर के लिए डिवाइस एक रन
- ISR चलाने के लिए कारण बनता है ढूंढता चला जाता है, कोई
- डिवाइस एक बाधा उत्पन्न होती है लंबित बाधा, आईआरक्यू सक्रिय (तार या) के लिए उपकरण बी रन
- ISR, लंबित बीच में मिलते हैं, तो हैंडल रहता है और यह साफ करता है
- कोर बाधा हैंडलर बाहर निकालता है
- आईआरक्यू रहता सक्रिय, कोई और अधिक किनारों उत्पन्न कर रहे हैं, आईआरक्यू कैद है
ऐसा लगता है कि यह तय किया करने के लिए, मुख्य बाधा हैंडलर सभी संचालकों चलाने के बाद आईआरक्यू स्तर की जांच करने के लिए होता है, और अगर अब भी सक्रिय, उन्हें फिर से चलाएं। क्या लिनक्स ऐसा करेगा? मुझे नहीं लगता कि इंटरप्ट कोर जानता है कि आईआरक्यू लाइन के स्तर की जांच कैसे करें।
क्या यह दौड़ कुछ ऐसा हो सकती है जो वास्तव में हो सकती है, और यदि ऐसा है तो मैं इससे कैसे निपटूं?
सलाह के लिए धन्यवाद। मुझे लगता है कि हम एक एफपीजीए में एक इंटरप्ट नियंत्रक को लागू करने के साथ जा रहे हैं जिसे हमें बोर्ड पर भी होना चाहिए। – blueshift