2012-01-11 23 views
6

में परहेज कर रहे हैं मैं एक एम्बेडेड लिनक्स परियोजना में आगामी स्थिति (अभी तक कोई हार्डवेयर) जहां दो बाहरी चिप्स एक भी शारीरिक आईआरक्यू लाइन साझा करने के लिए की आवश्यकता होगी पर विचार कर रहा हूँ। यह रेखा एज ट्रिगरिंग के हार्डवेयर में सक्षम है लेकिन स्तर पर ट्रिगर इंटरप्ट नहीं है।कैसे साझा आईआरक्यू दौड़ लिनक्स

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

हालांकि मैं निम्नलिखित रेस स्थिति की कल्पना और जानना चाहते हैं कि मैं कुछ याद कर रहा हूँ या क्या इस को हल करने के लिए क्या किया जा सकता है करना चाहते हैं। मान लीजिए कि वहाँ दो बाहरी बाधा स्रोत हैं करते हैं, उपकरणों ए और बी:

  1. डिवाइस बी बाधा उत्पन्न होती है, आईआरक्यू सक्रिय
  2. आईआरक्यू बढ़त लिनक्स कोर बाधा हैंडलर के लिए डिवाइस एक रन
  3. ISR चलाने के लिए कारण बनता है ढूंढता चला जाता है, कोई
  4. डिवाइस एक बाधा उत्पन्न होती है लंबित बाधा, आईआरक्यू सक्रिय (तार या) के लिए उपकरण बी रन
  5. ISR, लंबित बीच में मिलते हैं, तो हैंडल रहता है और यह साफ करता है
  6. कोर बाधा हैंडलर बाहर निकालता है
  7. आईआरक्यू रहता सक्रिय, कोई और अधिक किनारों उत्पन्न कर रहे हैं, आईआरक्यू कैद है

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

क्या यह दौड़ कुछ ऐसा हो सकती है जो वास्तव में हो सकती है, और यदि ऐसा है तो मैं इससे कैसे निपटूं?

उत्तर

2

मूल रूप से, आप का वर्णन किया है हार्डवेयर के साथ, कर एक तार-या बीच में आता है के लिए अपने आप पर सही ढंग से काम कभी नहीं होगा।

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

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

प्रोसेसर में वास्तव में कठिन दिखना एक और बात है। कुछ प्रकार की चाल हो सकती है जिसे आप बाधा को पहचानने के लिए अंतराल सेटअप के साथ खींच सकते हैं।

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

+1

सलाह के लिए धन्यवाद। मुझे लगता है कि हम एक एफपीजीए में एक इंटरप्ट नियंत्रक को लागू करने के साथ जा रहे हैं जिसे हमें बोर्ड पर भी होना चाहिए। – blueshift