मैं इस समय एक परियोजना पर काम कर रहा हूं कि, अन्य चीजों के साथ, कंप्यूटर प्रशंसकों को नियंत्रित करता है। असल में, प्रशंसकों को आपके कंप्यूटर के सुपरियो चिप द्वारा नियंत्रित किया जाता है। हम सीधे पोर्ट-मैप किए गए आईओ का उपयोग करके चिप तक पहुंचते हैं, और वहां से हम लॉजिकल फैन डिवाइस पर जा सकते हैं। पोर्ट मैप किए गए आईओ का उपयोग करने के लिए कोड को कर्नेल मोड में चलाने की आवश्यकता होती है, लेकिन विंडोज जेनेरिक पोर्ट आईओ के लिए किसी भी ड्राइवर की आपूर्ति नहीं करता है (अच्छे कारण से, क्योंकि यह एक बहुत शक्तिशाली उपकरण है), इसलिए हमने अपना खुद का ड्राइवर लिखा, और इसका इस्तेमाल किया।
यदि आप इस मार्ग पर जाना चाहते हैं, तो आपको मूल रूप से दो क्षेत्रों में ज्ञान की आवश्यकता है: ड्राइवर विकास और सुपरियो चिप जानकारी तक पहुंचने और व्याख्या करने के लिए कैसे। जब हमने परियोजना शुरू की, हम इन क्षेत्रों में से किसी एक में कुछ भी नहीं जानते थे, इसलिए यह ब्राउज़िंग, पढ़ना और आखिरकार कर रहा है। ज्ञान हासिल करने के लिए हम विशेष रूप से इन कड़ियों को देखकर मदद की गई है:
- WDK, जो Windows ड्राइवर किट है। आपको विंडोज़ के लिए लिखने वाले किसी भी ड्राइवर को संकलित करने की आवश्यकता है, इसके साथ ही पोर्टियो नामक सामान्य पोर्ट-मैप किए गए आईओ के लिए ड्राइवर समेत ड्राइवरों के लिए बहुत सारे स्रोत कोड आते हैं।
- WinIO सी में ड्राइवर के लिए स्रोत कोड है, सी में एक डीएल जो प्रोग्रामेटिक रूप से उस ड्राइवर को स्थापित करता है और लोड करता है, और एक जीयूआई के लिए कुछ सी # कोड, जो डीएलएल लोड करता है और बंदरगाहों को पढ़ता/लिखता है। चालक पोर्टियो में एक जैसा ही है।
- lm-sensors, एक लिनक्स परियोजना है कि अन्य बातों के अलावा, अपने superio चिप का पता लगाता है।/Prog/पता लगाने/सेंसर: पता लगाएं पर्ल कार्यक्रम, कि पता लगाने करता है, और हम कुछ समय के कोड के माध्यम से जा एक superio चिप के साथ इंटरफेस करने के लिए कैसे को देखने के लिए खर्च किया है।
- जब हम एलएम-सेंसर कोड के माध्यम से जा रहे थे, तो RapidDriver और RW-everything जैसे टूल रखना बहुत अच्छा था, क्योंकि उन्होंने हमें सेंसर-डिटेक्ट के एक अनुकरण को अनुकरण करने की अनुमति दी थी।उत्तरार्द्ध अधिक शक्तिशाली है, और आईओ स्पेस को देखने में बहुत मददगार है, जबकि पूर्व कुछ परिचालनों तक आसान पहुंच प्रदान करता है जो सेंसर-डिटेक्ट (पोर्ट को बाइट पढ़ना/लिखना) में बेहतर नक्शा देता है
- अंत में, आप अपने सुपरियो चिप के डेटाशीट को खोजने की आवश्यकता है। उदाहरणों से, मैंने देखा है, प्रत्येक चिप के पर्यावरण नियंत्रक समान कार्यक्षमता प्रदान करते हैं (आर/डब्ल्यू प्रशंसक गति, पढ़ने का तापमान, चिप वोल्टेज पढ़ें), लेकिन इस कार्यक्षमता को प्राप्त करने के लिए आपको किस रजिस्ट्रार को लिखना है, उसमें भिन्नता है । This स्थान में सभी डेटाशीट हैं, हमें अभी तक इसकी आवश्यकता है।
एसीपीआई यहां खेलता है? सैद्धांतिक रूप से, कोई डीएसडीटी को पैच कर सकता है, एएसएल कंपाइलर के साथ संकलित कर सकता है, पैच की गई तालिका लोड कर सकता है, और फिर प्रशंसक गति उस पैच किए गए तर्क द्वारा नियंत्रित की जाएगी। एक और विकल्प nhc.exe का उपयोग करना है, जिसमें एक प्लगइन मॉडल है, जो कि एक डेवलपर को एसीपीआई-प्रबंधित ऑब्जेक्ट्स को नियंत्रित करने के लिए कोड लिखने की अनुमति देता है। – Cheeso