मैं एक टचस्क्रीन के साथ एक एम्बेडेड सिस्टम विकसित कर रहा हूं। टचस्क्रीन, इनपुट और आउटपुट दोनों के रूप में काम करता है, जिसमें ग्राफिकल आउटपुट को ओवरलेइंग करते हुए "वर्चुअल" कीबोर्ड होता है।
मेरे पास एक काम करने वाला डिवाइस ड्राइवर है जो टच सेंसर से इनपुट पढ़ता है और इसे सही ढंग से कुंजी प्रेस में अनुवाद करता है, जो कि kern.org पर इस गाइड की मदद से बनाया गया है । मैं स्क्रीन पर छवि आउटपुट को संभालने के लिए इस ड्राइवर का विस्तार करना चाहता हूं।
मैं गेटी और एक्स दोनों का समर्थन करना चाहता हूं, जितना संभव हो उतना कम दोहराव के साथ। मैं चेरी से उठाए गए पैकेजों के साथ एक न्यूनतम डेबियन संस्करण चला रहा हूं, जैसे कि न्यूनतम एक्स। ध्यान दें कि मैं इस ड्राइवर को रिपॉजिटरी पाइपलाइन में लाने के प्रयास का इरादा नहीं रखता हूं, हालांकि मैं इसे सार्वजनिक गिटहब रिपॉजिटरी पर डंप कर सकता हूं।
आउटपुट स्क्रीन छवियों को वर्तमान में एक cringy वर्कअराउंड के माध्यम से किया जाता है: सीपीयू के एम्बेडेड ग्राफिक्स हार्डवेयर को रेंडर करने के लिए एक बूट विकल्प, इसके बावजूद इसे डिस्प्ले से कनेक्ट नहीं किया जा रहा है, और एक डेमन जो लगातार स्क्रीन-स्क्रेप करता है जो बफर, पूर्व के एक मुट्ठी भर को संशोधित करता है- कीबोर्ड दृश्य बनाने के लिए परिभाषित पिक्सेल, और इसे वास्तविक स्क्रीन पर धकेल देता है।
यह अवधारणा के प्रमाण के रूप में काम करता है, यह साबित करता है कि मैं स्क्रीन को स्क्रीन डिवाइस की अपेक्षा सही ढंग से समझता हूं, लेकिन स्पष्ट रूप से उप-इष्टतम है।
kernel.org
"डीआरएम" डिवाइस ड्राइवरों के लिए एक गाइड भी है, लेकिन ऐसा लगता है जैसे मेरा हार्डवेयर सक्षम है के लिए गंभीर ओवरकिल है:
लिनक्स डीआरएम परत में जटिल ग्राफिक्स उपकरणों की जरूरतों का समर्थन करने के लिए कोड होता है, जिसमें आमतौर पर 3 डी ग्राफिक्स त्वरण के अनुकूल प्रोग्रामेबल पाइपलाइन होते हैं।
मेरे किसी भी हार्डवेयर में 3D त्वरण जैसा कुछ भी नहीं है, इसलिए मैं यह निष्कर्ष निकालता हूं कि यह वह नहीं है जो मैं चाहता हूं।
मुझे किस सबसिस्टम / एपीआई का उपयोग करना चाहिए? मुझे लगता है कि लापता शब्दावली का एक टुकड़ा मेरी खोजों को पकड़ रहा है, लेकिन इसे पूरा करने के तरीके के बारे में कोई और जानकारी की सराहना की जाएगी।
हार्डवेयर विवरण (शायद अप्रासंगिक): 8080-एसक्यूएल समानांतर प्रोटोकॉल के माध्यम से सीपीयू और स्क्रीन संवाद करते हैं, जो सीपीयू मूल रूप से समर्थन नहीं करता है, इसलिए मैं इसे जीपीआईओ के साथ अनुकरण कर रहा हूं (मिमीप के माध्यम से रजिस्टरों में हेरफेर करके)।
एक पूर्ण स्क्रीन छवि भेजने में लगभग 20 एमएस लगते हैं, लेकिन एम्बेडेड ग्राफिक्स बफर से एक पूर्ण प्रतिलिपि प्राप्त करना ~ 180 एमएस है, इसलिए उस कदम को छोड़ देना सबसे महत्वपूर्ण उद्देश्य है। स्क्रीन हार्डवेयर में डेटा के एक पूरे फ्रेम को रखने के लिए पर्याप्त SGRAM मेमोरी शामिल है , और एक आयताकार उप-क्षेत्र लिखने का समर्थन करता है, इसलिए केवल स्क्रीन के हिस्से को अपडेट करने के लिए एक हुक वांछनीय होगा।
स्क्रीन आने वाले डेटा के समय के बारे में विशेष नहीं है। टच सेंसर इनपुट को एक उद्देश्य-निर्मित आईसी द्वारा नियंत्रित किया जाता है जो सीपीयू के साथ आईओसी के माध्यम से संचार करता है, जिसे सीपीयू समर्थन करता है। वर्तमान ड्राइवर linux/input-polldev.h
इंटरफ़ेस का उपयोग करता है। CPU एक ब्रॉडकॉम BCM2835 है , स्क्रीन एक TFT है जिसमें एक एम्बेडेड Himax HX8357 नियंत्रक है, टचस्क्रीन सेंसर डिकोडर एक ST STEE610 है , और HX8357 और BCM2835 के बीच प्ले में एक वोल्टेज लेवलशीटर (Nexperia 74XVCH245A ) है। अधिक विवरण अनुरोध पर उपलब्ध हैं।