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

न्यूक्लियस आरटीओएस की तुलना में सीमित या सरलीकृत कार्यक्षमता के अलावा, न्यूक्लियस एसई को व्यापक अनुकूलन विकल्पों के साथ मेमोरी उपयोग को अधिकतम करने पर जोर देने के साथ डिजाइन भी किया गया है। इस दृष्टिकोण का एक महत्वपूर्ण हिस्सा स्केलेबिलिटी है। कर्नेल कार्यक्षमता की कई विशेषताओं को सक्रिय या अक्षम किया जा सकता है। जाहिर है, एक विशेष कार्यान्वयन में कार्यक्षमता को अक्षम करने से न्यूक्लियस आरटीओएस के साथ इसकी असंगति बढ़ जाती है।
न्यूक्लियस आरटीओएस में, एक सिस्टम को कर्नेट ऑब्जेक्ट्स की अनिर्धारित संख्या के साथ बनाया जा सकता है, यहां केवल सीमा उपलब्ध संसाधनों (यानी मेमोरी) की मात्रा है। न्यूक्लियस एसई में प्रत्येक प्रकार की सोलह वस्तुओं की सीमा होती है; प्रणाली में एक से सोलह कार्य और प्रत्येक प्रकार के शून्य से सोलह वस्तुएं (मेलबॉक्स, कतार आदि) हो सकती हैं। इस तथ्य के बावजूद कि इस सीमा को बढ़ाया जा सकता है, काफी प्रयास की आवश्यकता होगी, क्योंकि न्यूक्लियस एसई एक वस्तु के सूचकांक को एक नीबबल (चार बिट्स) में संग्रहीत करने की क्षमता का व्यापक उपयोग करता है। इसके अलावा, सोलह से अधिक कार्यों के साथ, प्राथमिकता शेड्यूलर बहुत ही अक्षम होने की संभावना है। एक अनुप्रयोग जिसकी कार्यक्षमता गंभीरता से इन सीमाओं से ग्रस्त है, न्यूक्लियस एसई के लिए उपयुक्त नहीं है, इस मामले में न्यूक्लियस आरटीओएस एक बहुत उपयुक्त विकल्प है।
योजनाकार
सभी आधुनिक रीयल-टाइम कोर की तरह, न्यूक्लियस आरटीओएस में एक बहुत ही लचीला शेड्यूलर है जो कई प्राथमिकता स्तर (प्रत्येक प्राथमिकता स्तर पर कार्यों की एक अनिर्धारित संख्या के साथ) प्रदान करता है, साथ ही साथ राउंड रॉबिन और टाइम स्लाइस शासक का चयन करने की क्षमता भी है। न्यूक्लियस एसई बहुत सरल है और चार अनुसूचियों की पेशकश करता है जिन्हें बिल्ड समय पर चुना जाना चाहिए: रन टू कंप्लीशन, राउंड रॉबिन, टाइम स्लाइस और प्रायोरिटी। विभिन्न अनुसूचियों को संयोजित करना असंभव है (अर्थात, कोई समग्र अनुसूचक नहीं है)। उदाहरण के लिए, आप टाइम स्लाइस और प्रायोरिटी शेड्यूलर्स के संयोजन का चयन नहीं कर सकते। इसके अलावा, प्राथमिकता शेड्यूलर आपको प्रत्येक प्राथमिकता स्तर तक केवल एक कार्य को असाइन करने की अनुमति देता है, अर्थात, वहाँ कई प्राथमिकता स्तर हैं जैसे कि कार्य हैं। कार्य की प्राथमिकता बिल्ड के दौरान सेट की जाती है और अब और नहीं बदलती है (जैसे टाइम स्लाइस शेड्यूलर चुने जाने पर टाइम स्लॉट)।
एपीआई कॉल
एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (एपीआई) - ऑपरेटिंग सिस्टम का दृश्यमान "चेहरा"। आश्चर्य की बात नहीं, यह वह जगह है जहां न्यूक्लियस आरटीओएस और न्यूक्लियस एसई के बीच अंतर सबसे स्पष्ट हैं।
न्यूक्लियस एसई एपीआई न्यूक्लियस आरटीओएस एपीआई से अलग है। हालांकि, न्यूक्लियस एसई एपीआई को सावधानीपूर्वक डिजाइन किया गया है ताकि इसे न्यूक्लियस आरटीओएस एपीआई के टुकड़े में स्थानांतरित किया जा सके। लाइसेंस प्राप्त न्यूक्लियस आरटीओएस के धारकों को एक "शेल" (
#define मैक्रोज़ युक्त एक हेडर फ़ाइल) मिल सकती है जो हस्तांतरण को लगभग सीधे प्रदर्शन करेगी।
इस तथ्य से कि न्यूक्लियस एसई एपीआई को न्यूक्लियस आरटीओएस एपीआई का "सबसेट" कहा जा सकता है, यह इस प्रकार है कि कुछ एपीआई कॉल गायब हैं। यह सच है और यह न्यूक्लियस एसई के विकास मानदंडों का एक अनिवार्य परिणाम है। कुछ एपीआई कॉल का कोई मतलब नहीं है, क्योंकि वे गैर-मौजूद कार्यक्षमता से जुड़े हैं, कुछ कर्नेल ऑब्जेक्ट के कार्यान्वयन को सरल बनाने के लिए अन्य कॉल को बाहर रखा गया था। यह सब इस लेख के निम्नलिखित खंडों में विस्तार से वर्णित है।
सामान्य एपीआई कार्य
न्यूक्लियस आरटीओएस में एपीआई फ़ंक्शंस होते हैं जो कई अलग-अलग प्रकार के कर्नेल ऑब्जेक्ट्स, या यहां तक कि सभी प्रकार की ऑब्जेक्ट्स के लिए सामान्य होते हैं। उनमें से कुछ को न्यूक्लियस एसई में भी लागू किया गया था, ऐसे फ़ंक्शन का एक अच्छा उदाहरण रीसेट है। अन्य कार्य न्यूक्लियस एसई में कर्नेल ऑब्जेक्ट के कार्यान्वयन के लिए लागू नहीं हैं।
बनाएँ और हटाएँन्यूक्लियस आरटीओएस में, सभी कर्नेल ऑब्जेक्ट गतिशील होते हैं, उन्हें आवश्यकतानुसार बनाया और हटाया जाता है। इसलिए, इसके लिए एपीआई कॉल हैं। न्यूक्लियस एसई में, सभी ऑब्जेक्ट स्थिर होते हैं (वे असेंबली के दौरान बनाए जाते हैं), इसलिए इन एपीआई कॉल की आवश्यकता नहीं होती है।
वस्तुओं की ओर लौटने वालेन्यूक्लियस आरटीओएस में कर्नेल ऑब्जेक्ट्स का मुख्य पहचानकर्ता (डिस्क्रिप्टर) ऑब्जेक्ट कंट्रोल ब्लॉक का एक पॉइंटर है, जिसे ऑब्जेक्ट के निर्माण के समय असाइन किया जाता है। इसलिए, एपीआई कॉल का एक सेट भी है जो प्रत्येक प्रकार की वस्तुओं को इंगित करने वालों की सूची लौटाता है। चूंकि न्यूक्लियस एसई कर्नेल ऑब्जेक्ट्स की पहचान करने के लिए एक सरल सूचकांक का उपयोग करता है, ऐसे कॉल आवश्यक नहीं हैं। एक प्रोग्राम कर्नेल को यह पता लगाने के लिए पोल कर सकता है कि किसी विशेष प्रकार की वस्तुओं के कितने उदाहरण कॉन्फ़िगर किए गए हैं (
NUSE_Mailbox_Count () जैसे कॉल का उपयोग करके); यदि यह मान
n है , तो इस प्रकार की वस्तुओं के सूचकांकों का मान शून्य से
n-1 तक होगा ।
डेटा स्ट्रीमिंगकुछ प्रकार के नाभिक आरटीओएस कर्नेल ऑब्जेक्ट (जैसे मेलबॉक्स, कतार और पाइप) के लिए, डेटा को अनुवाद करने के लिए एक एपीआई ओवरहेड प्रदान किया जाता है। यह आपको हर कार्य के लिए डेटा भेजने की अनुमति देता है जो ऑब्जेक्ट से डेटा की अपेक्षा करता है। इस संभावना को सरलीकरण के लिए न्यूक्लियस एसई से बाहर रखा गया था, क्योंकि ऐसी वस्तुओं के डेटा तक पहुंच हमेशा एक विशिष्ट कार्य के संदर्भ में की जाती है, जो तब वस्तु को मुक्त करती है। इसलिए, अनुवाद को लागू करने के लिए, एक अतिरिक्त ध्वज तंत्र की आवश्यकता होगी।
अद्वितीय सुविधाएँ एपीआई वस्तुएँ
कई कर्नेल ऑब्जेक्ट में API कॉल होते हैं जो एक विशेष प्रकार की वस्तु के लिए अद्वितीय होते हैं और न्यूक्लियस आरटीओएस और न्यूक्लियस एसई में भिन्न होते हैं।
कार्यचूंकि न्यूक्लियस आरटीओएस शेड्यूलर न्यूक्लियस एसई की तुलना में काफी अधिक जटिल है, इसलिए कुछ एपीआई फ़ंक्शन आवश्यक नहीं हैं:
- एक कार्य रुकावट की स्थिति बदलना - न्यूक्लियस एसई में समर्थित नहीं है।
- कार्य प्राथमिकता बदलें - न्यूक्लियस एसई में, कार्य प्राथमिकता विन्यास के दौरान दी जाती है और इसे बदला नहीं जा सकता।
- कार्य समय स्लॉट बदलना - न्यूक्लियस एसई में, टाइम स्लॉट का मूल्य सभी कार्यों के लिए सामान्य है और कॉन्फ़िगरेशन के दौरान सेट किया गया है।
- कार्य पूर्णता - न्यूक्लियस एसई "पूर्ण" कार्य स्थिति का समर्थन नहीं करता है।
गतिशील स्मृतिचूंकि सब कुछ न्यूक्लियस एसई में सांख्यिकीय रूप से बनाया गया है, गतिशील मेमोरी समर्थित नहीं है (और आवश्यक नहीं है)। इसलिए, संबद्ध API फ़ंक्शंस भी अनावश्यक हैं।
संकेतन्यूक्लियस आरटीओएस सिग्नल हैंडलर का समर्थन करता है, जो प्रोग्राम तब चलते हैं (जैसे इंटरप्ट हैंडलर) जब टास्क सिग्नल बदलते हैं। इस सुविधा को न्यूक्लियस एसई से बाहर रखा गया था, इसलिए, सिग्नल को प्रबंधित करने और सिग्नल हैंडलर बनाने के लिए एपीआई कॉल की आवश्यकता नहीं होती है।
बीच में आता हैन्यूक्लियस एसई इंटरप्ट के गैर-रुकावट दृष्टिकोण का उपयोग करता है, बस बाधा हैंडलर से कुछ एपीआई कॉल करने की क्षमता प्रदान करता है। इसलिए, कुछ न्यूक्लियस आरटीओएस एपीआई कॉल निर्दिष्ट करते हैं कि कर्नेल को इंटरप्ट को कैसे संभालना चाहिए, समर्थित नहीं हैं।
निदानन्यूक्लियस एसई में बहुत ही मामूली डायग्नोस्टिक सर्विसेस हैं, इसके "रेस्ट्रिक्टेड" डेवलपमेंट स्टाइल को फॉलो करते हुए, प्रोडक्ट वर्जन कोड को खुद (वैकल्पिक) पैरामीटर चेकिंग और आउटपुट के लिए सीमित किया गया है। इसलिए, इतिहास लॉगिंग और त्रुटि की पुष्टि से संबंधित न्यूक्लियस आरटीओएस एपीआई कॉल समर्थित नहीं हैं।
ड्राइवरोंन्यूक्लियस आरटीओएस में एक अच्छी तरह से परिभाषित औपचारिक ड्राइवर संरचना और ड्राइवर प्रबंधन से संबंधित कई एपीआई फ़ंक्शन हैं। न्यूक्लियस एसई में यह संरचना नहीं है, इसलिए, संबंधित एपीआई कॉल आवश्यक नहीं है।
एपीआई कॉल कार्यशीलता
न्यूक्लियस एसई की कार्यक्षमता के कुछ पहलू, जो एक सरलीकृत रूप में कार्यान्वित किए जाते हैं, न्यूक्लियस आरटीओएस से मतभेद पैदा करते हैं। उनमें से कुछ प्रभावित करते हैं कि एपीआई कॉल का उपयोग कैसे किया जाता है और उपलब्ध सेवाएं।
समय समाप्ति
न्यूक्लियस आरटीओएस का उपयोग करते समय, अक्सर ऐसी परिस्थितियां होती हैं जब एक एपीआई कॉल एक संसाधन तक पहुंचने के लिए इंतजार कर रहे कार्य को रोक सकता है: कार्य अवरुद्ध है। किसी कार्य का ऐसा निलंबन निहित हो सकता है (जब तक कि संसाधन उपलब्ध नहीं हो जाता है), या टाइमआउट मान निर्दिष्ट किया जा सकता है। न्यूक्लियस एसई एक विकल्प के रूप में एपीआई कॉल द्वारा अवरुद्ध प्रदान करता है, हालांकि, केवल अंतर्निहित निलंबन का उपयोग किया जा सकता है (अर्थात, एक कॉल केवल
NUSE_SUSPEND या
NUSE_NO_SUSPEND का उपयोग कर सकता है, न कि टाइमआउट मान)। न्यूक्लियस एसई को जोड़ने के लिए यह सुविधा काफी सरल है।
निलंबन प्रक्रिया
जब न्यूक्लियस आरटीओएस में कई ऑब्जेक्ट प्रकार बनाए जाते हैं, तो निलंबन आदेश सौंपा जा सकता है। यह एक अनुक्रम है जिसमें संसाधन उपलब्ध होते ही कई अवरुद्ध कार्य फिर से शुरू हो जाएंगे। दो विकल्प उपलब्ध हैं: एफआईएफओ, पहले-में-पहले (पहले आउट में), जिसमें कार्यों को उसी क्रम में फिर से शुरू किया जाता है जिसमें वे अवरुद्ध होते हैं; या प्राथमिकता के आधार पर, जिसमें सर्वोच्च प्राथमिकता वाला कार्य हमेशा पहले शुरू होता है। न्यूक्लियस एसई इस तरह की पसंद की पेशकश नहीं करता है। यह केवल प्राथमिकता क्रम को लागू करता है। वास्तव में, कार्य सूचकांक द्वारा आदेश को कहना अधिक सही है, क्योंकि निलंबन आदेश न केवल प्राथमिकता शेड्यूलर का उपयोग करते समय लागू किया जा सकता है, बल्कि राउंड रॉबिन और टाइम स्लाइस शेड्यूलर्स का उपयोग करते समय भी किया जा सकता है।
अद्वितीय सुविधा कार्यक्षमता
कुछ मामलों में, कुछ प्रकार की वस्तुओं से संबंधित कार्यात्मक परिवर्तन आवश्यक थे।
सिग्नल संचालकोंजैसा कि ऊपर उल्लेख किया गया है, न्यूक्लियस एसई में सिग्नल कार्यान्वयन सिग्नल प्रोसेसिंग प्रक्रियाओं का समर्थन नहीं करता है।
अनुप्रयोग टाइमर सेटिंग्सटाइमर की प्रारंभिक अवधि / संचालन की प्रारंभिक अवधि और पुनरारंभ की अवधि है और वैकल्पिक रूप से पूरा होने पर उपयोगकर्ता-परिभाषित फ़ंक्शन कर सकता है। यह कार्यक्षमता न्यूक्लियस आरटीओएस और न्यूक्लियस एसई दोनों में समर्थित है। हालांकि, न्यूक्लियस आरटी के विपरीत, न्यूक्लियस एसई, रीसेट फ़ंक्शन को एपीआई के लिए कॉल करते समय ऊपर वर्णित मापदंडों को बदलने की अनुमति नहीं देता है। इसके अलावा, न्यूक्लियस एसई में, टाइमर पूरा करने की प्रक्रियाओं के लिए सभी समर्थन वैकल्पिक हैं।
घटना के झंडेन्यूक्लियस आरटीओएस के पास ईवेंट झंडे को "अवशोषित" करने का एक विकल्प है। इसका मतलब है कि झंडे जो कार्य द्वारा निर्धारित मानदंडों से मेल खाते हैं, रीसेट हैं। न्यूक्लियस एसई में इस तरह की कार्यक्षमता का समर्थन नहीं किया जाता है, क्योंकि कई कार्यों के मानदंडों की खोज करने की क्षमता प्रणाली की जटिलता को काफी बढ़ा देती है।
डेटा का आकार
न्यूक्लियस एसई के लिए दो विकास मानदंड: सादगी बनाए रखना और स्मृति उपयोग को कम करना, न्यूक्लियस आरटीओएस की तुलना में डेटा तत्व आकारों में कुछ अंतर हैं। यह ध्यान देने योग्य है कि न्यूक्लियस आरटीओएस आमतौर पर
अहस्ताक्षरित डेटा का उपयोग करता है, जो कि सबसे अधिक संभावना है 32-बिट। जबकि न्यूक्लियस एसई सुव्यवस्थित डेटा प्रकारों जैसे
यू 32 ,
यू 16 ,
यू 8 और इसी तरह का उपयोग करता है। (
अनुवादक का ध्यान दें: मेरी राय में, लेखक 8-बिट सिस्टम के लिए सही है। आधुनिक सिस्टम में, रजिस्टर अभी भी 32-बिट हैं, इसलिए पुराने हिस्से को काटने से इसके निष्पादन के लिए कोड और क्लॉक साइकिल की मेमोरी कम हो जाती है, और डेटा संग्रहीत होने पर 32 बिट के बराबर होता है। मेमोरी, अन्यथा सिस्टम का प्रदर्शन कम हो जाएगा, इसलिए यह दृष्टिकोण आधुनिक सिस्टम के लिए लाभ नहीं देता है, और संकलक द्वारा जोड़े गए निर्देशों के कारण एक नुकसान जो पुराने हिस्से को काट देता है वह बहुत अच्छी तरह से हो सकता है। )।
मेलबॉक्स
न्यूक्लियस आरटीओएस में, एक मेलबॉक्स एक संदेश संग्रहीत करता है जिसमें चार अहस्ताक्षरित डेटा तत्व होते हैं। न्यूक्लियस एसई में, एक मेलबॉक्स एक
एडीडीआर डेटा आइटम संग्रहीत करता है। मेरी राय में, मेलबॉक्स का उपयोग अक्सर एक पते को स्थानांतरित करने के लिए किया जाता है (विशिष्ट डेटा का संकेत) कार्य से कार्य के लिए।
कतारों
न्यूक्लियस आरटीओएस में, एक कतार एक या अधिक
अहस्ताक्षरित डेटा तत्वों के संदेशों को संसाधित करती है। चर-लंबाई संदेशों को संभालने के लिए कतार को भी कॉन्फ़िगर किया जा सकता है। न्यूक्लियस एसई में, एक कतार एक एकल
एडीडीआर डेटा आइटम से संदेशों को संसाधित करता है। मेरी राय में, मेलबॉक्स के साथ कतारें इसी तरह से उपयोग की जाती हैं। इसके अलावा, न्यूक्लियस आरटीओएस में, कतार का कुल आकार (यानी अहस्ताक्षरित तत्वों की कुल संख्या जिसे कतार में रखा जा सकता है) को एक अहस्ताक्षरित मान के रूप में निर्दिष्ट किया जाता है। न्यूक्लियस एसई में, यह मान
U8 प्रकार का है। इसलिए, एक कतार कम डेटा रख सकती है।
डेटा चैनल
न्यूक्लियस आरटीओएस में, एक चैनल एक या अधिक बाइट्स से संदेश संसाधित करता है; चर-लंबाई संदेशों को संभालने के लिए चैनल को भी कॉन्फ़िगर किया जा सकता है। न्यूक्लियस एसई में, एक चैनल प्रकार के एक या एक से अधिक डेटा तत्वों से मिलकर संदेशों को संसाधित करता है
U8 । संदेश का आकार प्रत्येक चैनल के लिए सेटअप के दौरान सेट किया गया है। इसके अलावा, न्यूक्लियस आरटीओएस में, कुल चैनल आकार (अर्थात, एक चैनल में रखा जा सकने वाले बाइट्स की कुल संख्या) को एक
मान के रूप में निर्दिष्ट किया जाता है। न्यूक्लियस एसई में, यह मान
U8 प्रकार का है और संदेशों की संख्या (
NUSE_Pipe_Information () API कॉल) का प्रतिनिधित्व करता है। नतीजतन, एक चैनल कम डेटा धारण कर सकता है।
इवेंट फ्लैग ग्रुप्स
न्यूक्लियस आरटीओएस में, एक घटना ध्वज समूह में 32 झंडे होते हैं; न्यूक्लियस एसई में, उनकी संख्या आठ तक कम हो जाती है। इस आकार को चुना गया है क्योंकि संभावित लक्ष्य न्यूक्लियस एसई प्रोसेसर 8-बिट डेटा को कुशलता से संसाधित कर सकते हैं। इसी समय, न्यूक्लियस एसई द्वारा संसाधित घटनाओं के ध्वज समूहों में झंडे की संख्या को बदलना मुश्किल नहीं होगा।
संकेत
न्यूक्लियस आरटीओएस में, प्रत्येक कार्य में 32 सिग्नल फ्लैग का एक सेट होता है। न्यूक्लियस एसई में, सिग्नल वैकल्पिक होते हैं, और प्रत्येक कार्य में 8 झंडे होते हैं। यह आकार इसलिए चुना गया है क्योंकि संभावना लक्ष्य न्यूक्लियस एसई प्रोसेसर 8-बिट डेटा को कुशलता से संसाधित कर सकते हैं। इसी समय, न्यूक्लियस एसई द्वारा संसाधित संकेतों के ध्वज सेटों में झंडे की संख्या को बदलना मुश्किल नहीं होगा।
स्मृति के खंड
न्यूक्लियस आरटीओएस में, विभाजन की संख्या और आकार
अहस्ताक्षरित होते हैं। न्यूक्लियस एसई में, विभाजन की संख्या प्रकार
U8 का एक पैरामीटर है, और विभाजन का आकार
U16 है । यह कुछ विभाजन और पूल आकार प्रतिबंधों की ओर जाता है।
टाइमर
न्यूक्लियस आरटीओएस में,
अहस्ताक्षरित मानों के साथ टाइमर (एप्लीकेशन टाइमर्स और टास्क स्लीप टाइमर) दोनों काम करते हैं। न्यूक्लियस एसई में, वे
यू 16 प्रकार के हैं। इस प्रकार को इसलिए चुना गया क्योंकि संभावित लक्ष्य न्यूक्लियस एसई प्रोसेसर 16-बिट डेटा को कुशलतापूर्वक संसाधित कर सकते हैं (और आठ बिट स्पष्ट रूप से टाइमर का उपयोग करने के लिए पर्याप्त नहीं है)। इसी समय, न्यूक्लियस एसई में टाइमर के आकार को बदलना मुश्किल नहीं होगा।
निम्न लेख यह जांच करेगा कि एम्बेडेड सॉफ्टवेयर प्रोजेक्ट में न्यूक्लियस एसई का उपयोग कैसे किया जा सकता है।
लेखक के बारे में: कॉलिन वाल्स तीस वर्षों से इलेक्ट्रॉनिक्स उद्योग में काम कर रहे हैं, अपने अधिकांश समय को फर्मवेयर के लिए समर्पित करते हैं। वह अब मेंटर एंबेडेड (मेंटर ग्राफिक्स का एक प्रभाग) में एक फर्मवेयर इंजीनियर है। कॉलिन वॉल्स अक्सर सम्मेलनों और सेमिनारों में बोलते हैं, कई तकनीकी लेखों के लेखक और फर्मवेयर पर दो किताबें। ब्रिटेन में रहता है।
कॉलिन का पेशेवर
ब्लॉग , ई-मेल: colin_walls@mentor.com।