2008-12-14 14 views
10

ऐसा लगता है कि किसी भी प्रकार की ग्राफिक लाइब्रेरी जैसे DirectFB या MiniGui को कुछ प्रकार की अंतर्निहित ऑपरेशन सिस्टम जैसे लिनक्स या यूक्लिनक्स की आवश्यकता होती है।ग्राफिक्स लाइब्रेरी?

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

क्या आपको कोई लाइब्रेरी पता है जो वीडियो मेमोरी को केवल पॉइंटर की आवश्यकता है जो लाइनों, छवियों और फोंट को भी संभाल सकता है?

+0

आपने यह निर्दिष्ट नहीं किया कि यह निःशुल्क होना चाहिए (जैसा कि $$$ में) या नहीं। यदि नि: शुल्क आवश्यकता नहीं है, तो मेरी सूची है जब तक कि मेरी बांह आपको पिछली परियोजनाओं से भेजने के लिए। वैसे, क्या यह एक पीआईसी 32 या एआरएम यूसी है? – Dan

+0

आप सही हैं, लेकिन ऐसा लगता है कि इस कार्य के लिए कोई निःशुल्क सॉफ्टवेयर नहीं है (मुफ़्त भाषण में मुफ़्त है)। साथ शुरू करने के लिए एक अच्छा ओपन सोर्स प्रोजेक्ट।:) अगर आप किसी भी प्रोजेक्ट को मुफ्त में रखते हैं या नहीं, तो हमें बताएं। यूसी एक एआरएम है। – about

+0

क्या आपका प्लेटफ़ॉर्म सी ++ का समर्थन करता है? –

उत्तर

3

समय तक आप किसी तीसरे पक्ष समाधान आप इसे अपने आप को लिखा जा सकता था शामिल।

अधिकतर यदि सभी वातावरण नहीं हैं तो स्क्रीन पिक्सेल की केवल दो आयामी सरणी है। कभी-कभी कभी-कभी फुफ्फुसीय नहीं होता है, लेकिन इससे कोई फर्क नहीं पड़ता, आप अपनी इच्छा लिख ​​सकते हैं हालांकि आप चाहते हैं।

वहाँ मुक्त कोड की टन है लाइनों और आर्क्स बैठक के लिए, आदि

हत्यारा फोंट हो सकता है लेकिन मुझे लगता है कि आप पाएंगे कि किसी तृतीय पक्ष एप्लिकेशन अपनी स्मृति सिर्फ फोंट कर सब को चबाना होगा , आप संसाधन सीमित हैं ताकि आप फोंट को पूर्व-गणना करना चाहें और बिट्स की प्रतिलिपि बनाना चाहें।

डेटा की दो आयामी सरणी बनाएं, पहले अपने पसंदीदा होस्ट पर अपना पूरा काम करें, यदि आप देखना चाहते हैं कि आप क्या चित्रित करना चाहते हैं, और श्रृंखला की बारी करने के लिए तुच्छ है तो .bmp फ़ाइलों को सहेजना मुश्किल है। यदि आप कुछ कार्रवाई देखना चाहते हैं तो एक वीडियो में बीएमपी फाइलें।

यदि आप जेनेरिक सी का उपयोग करते हैं, और कोई libc कॉल नहीं करते हैं (अपनी खुद की memcpy, memset, आदि लिखें) यह कोड कहीं भी, विकास के लिए मेजबान और लक्ष्य पर चला जाएगा।

फ़ॉन्ट्स आपके हत्यारे होने जा रहे हैं, आपको उन्हें पहले से गणना करना होगा, लेकिन उस जानकारी को जितना छोटा हो उतना छोटा कर दें, और रनटाइम पर डेटा निकालें और प्रत्येक अक्षर के लिए बिट्स को आभासी स्क्रीन में कॉपी करें जितना तेज़ हो सके

या बस उन सभी एलसीडी समाधानों में से एक खरीदें जो आपके लिए यह सब करते हैं और आप इसे "हैलो वर्ल्ड!" जैसे आदेश भेजते हैं। कुछ (एक्स, वाई) नीले रंग का उपयोग अग्रभूमि और पृष्ठभूमि के रूप में सफेद के रूप में करते हैं।

असल में मुझे लगता है कि गैर-ओएस समाधान अभी भी बहुत से पुस्तकालयों का उपयोग करने जा रहे हैं और आपके विशिष्ट एप्लिकेशन के लिए बहुत बड़े हैं। बाइट्स या पिक्सल के 2 डी सरणी स्वयं को प्रबंधित करने के लिए तुच्छ हैं। यहां तक ​​कि यदि आप डेस्कटॉप प्लेटफार्म के लिए एक एप्लीकेशन लिख रहे हैं, तो भी मैं इसे इस तरह से करूँगा और आखिरी मिनट में कुछ ओएस निर्भर लाइब्रेरी में पूरी तरह से पुनर्निर्मित स्क्रीन अपडेट की प्रतिलिपि बनाएँ (एक ओएस से अधिकतम पोर्टेबिलिटी की अनुमति देता है या दूसरे से नहीं)।

-1

512kb छोटा है। सौभाग्य!

आप dslmplayer के साथ संयुक्त करने की कोशिश कर सकते हैं। बाद में मूवी प्रदर्शित करने के लिए जीयूआई की आवश्यकता नहीं है। मुझे लगता है कि यह छवियों को भी प्रदर्शित कर सकता है।

फिर भी मुझे डर है कि यह आपके फ्लैश के लिए बहुत अधिक होगा। शायद इन लिंक का स्रोत मदद करेगा।

+0

वे फिट नहीं होंगे –

2

यदि इंटरएक्टिविटी और जीयूआई विजेट के लिए आपकी आवश्यकताएं बहुत ही मामूली हैं (या आप अपने स्वयं के विजेट डिजाइन करने के साथ ठीक हैं), तो LibGD पर एक नज़र डालें। लाइब्रेरी के फ़ंक्शंस का उपयोग करके स्क्रीन पर दिखाई देने वाली छवि बनाएं, और फिर इसे gdImagePngToSink() का उपयोग करके फ्रेम बफर पर लिखें।

2

एलसीडी और टचस्क्रीन के नियंत्रक के बारे में आपको महत्वपूर्ण बात करना चाहिए। उस कार्य के लिए सी पुस्तकालयों (मुक्त नहीं) की एक बहुतायत है। एक त्वरित Google ने मुझे ये परिणाम प्राप्त किए: Simplify Technologies और Ramtex

यदि आप कुछ ओपन सोर्स ढूंढना चाहते हैं, तो अपने कंट्रोलर के प्रकार से शुरू करें और एम्बेडेड डिवाइस फ़ोरम खोजें (भले ही यह एआरएम नहीं है, आप आसानी से पोर्ट सी कोड कर सकते हैं)। कुछ सुझाव:

इसके अलावा, कुछ किट एक SDK प्रदान करते हैं (दोनों के साथ और लिनक्स) के बिना उनके बोर्डों के साथ बनाती है। बोर्ड खरीदना आम तौर पर आपको कोड का उपयोग करने का लाइसेंस देता है। एक ही एलसीडी नियंत्रक के साथ विकास बोर्डों के लिए खोजें।

0

मेरा अनुमान है कि फ्रीडोज़ की तरह कुछ, डीजेजीपीपी के साथ टूलचैन के रूप में जोड़ा गया है, और ग्राफिक्स लाइब्रेरी के रूप में एलेग्रो संभवतः 512k फ्लैश में फिट हो सकता है और अभी भी एक उचित काम कर सकता है (मुझे लगता है कि आपके पास x86 है जिसमें कई हैं यहां रैम का एमबी)

लेकिन ये चीजें बहुत x86 विशिष्ट हैं (एलेग्रो हालांकि नहीं है)।

यह (में कुछ पाने के लिए, लेकिन संभव)

+0

बहुत मुश्किल। और फिर आप मानते हैं कि फ्लैश की तुलना में बहुत अधिक रैम है। यह microcontroller शायद फ़्लैश से बहुत कम रैम है। –

6

हम "पेग", सी ++ संस्करण, Swellsoftware से कई वर्षों के लिए इस्तेमाल किया है एक लिनक्स कर्नेल और 512K अंदर यूज़रस्पेस सॉफ्टवेयर का एक उपयोगी राशि पाने के लिए मुश्किल है। यह वाणिज्यिक सॉफ्टवेयर है, मुफ़्त नहीं है, लेकिन अंतर्निहित स्क्रीन चालक ग्राफिक्स मेमोरी के लिए केवल एक सूचक का उपयोग कर सकता है और वे विभिन्न प्रकार के ग्राफिक्स हार्डवेयर के लिए कई नमूना ड्राइवर प्रदान करते हैं। संदर्भ के रूप में नमूना ड्राइवरों का उपयोग करके, हमने अपने मालिकाना हार्डवेयर के लिए अपना स्वयं का कस्टम ड्राइवर लिखा है। हमारे पास हमेशा कुछ प्रकार का आरटीओएस होता है, लेकिन मेरा मानना ​​है कि पीईजी + ओएस के बिना भी काम कर सकता है।

यहाँ देखें: http://www.swellsoftware.com/

अच्छी किस्मत,

2

नि: शुल्क नहीं, लेकिन कम संसाधन प्रणालियों पर अच्छा: http://www.tat.se और उनके उत्पाद कास्टर और कैस्केड। इसे केवल वीडियो मेमोरी, मॉलोक और फ़ाइल सिस्टम की तरह दिखने वाला कुछ पॉइंटर चाहिए। अंतिम दो आवश्यकताएं पूरी तरह से जरूरी नहीं हैं। कोई ऑपरेटिंग सिस्टम की आवश्यकता नहीं है।

+0

बहुत प्रभावशाली लगता है, धन्यवाद! – about

+0

लेकिन टीएटी ने एक शिकायत द्वारा खाया, आरआईएम द्वारा खेद है, और ऐसा लगता है कि वे अब अपने उत्पादों कास्टर और कैस्केड बेचते हैं। –

1

आपको शायद रन लम्बाई एन्कोडिंग (आरएलई) का उपयोग करके फोंट को संपीड़ित करने की आवश्यकता है। उदाहरण के लिए .pcx फ़ाइल प्रारूप देखें, हालांकि कस्टम आरएलई डिज़ाइन करना शायद सबसे अच्छा है। आपने एलसीडी की बिट गहराई को निर्दिष्ट नहीं किया है, लेकिन एंटीअलाइजिंग की आवश्यकता नहीं है, या एंटीअलाइजिंग के साथ अधिकतम तीन बीपीपी अगर फोंट को प्रति पिक्सल की आवश्यकता होती है। प्रत्येक चरित्र की अपनी चौड़ाई होनी चाहिए क्योंकि मोनोस्पेस्ड टेक्स्ट अच्छा नहीं है। अनुकूलित ऑप्टिमाइज़ का उपयोग करके आपको सीधे आरएलई संपीड़ित फ़ॉन्ट से स्क्रीन पर प्रस्तुत करना चाहिए।

एसडीएल एक बहुत पोर्टेबल ग्राफिक्स मुक्ति है। इसका उपयोग एम्बेडेड लिनक्स सिस्टम में किया जाता है, लेकिन मुझे लगता है कि इसे ओएस के बिना इस्तेमाल किया जा सकता है। एसडीएल के बारे में अच्छी बात यह है कि आप अपने यूआई को विकसित और परीक्षण करने के लिए विंडोज/लिनक्स का उपयोग कर सकते हैं, और बाद में अपने एम्बेडेड सिस्टम को लक्षित कर सकते हैं। आवेदन कोड में कोई बदलाव की जरूरत नहीं है!

आप एसडीएल के शीर्ष पर एंटी-अनाज ज्यामिति लाइब्रेरी (http://www.antigrain.com/about/index.html) का भी उपयोग कर सकते हैं। 16 या 24 बिट एलसीडी के साथ यह शानदार ग्राफिक्स पैदा करता है।यह आपके पर्यावरण के लिए थोड़ा बड़ा हो सकता है, क्योंकि एआरएम/लिनक्स सिस्टम पर मेरा निष्पादन योग्य लगभग एक मेगाबाइट था। इसमें फ़ॉन्ट प्रतिपादन के लिए एसडीएल, एजीजी और libfreetype2 शामिल था। एजीजी भी थोड़ी धीमी है, लेकिन सुंदर परिणाम पैदा करता है।

+0

यह उपयोगी सूचनाएं हैं! यह आकार में 640x480 पिक्सेल के साथ 16 बिट रंगीन एलसीडी है और मैं फोंट के लिए एंटी-एलाइजिंग और अन्य ग्राफिक सामान का उपयोग करना चाहता हूं। मैं कैरो पर भी विचार कर रहा था, लेकिन यह भी बहुत बड़ा हो सकता है। – about

0

आपको easyGUI एक प्रयास देना चाहिए।

easyGUI एक जीयूआई ग्राफिक्स सॉफ्टवेयर/पुस्तकालय है जो विशेष रूप से छोटे (एआर) एम्बेडेड सिस्टम पर काम करने के लिए डिज़ाइन किया गया है।

कोई ऑपरेटिंग सिस्टम की आवश्यकता नहीं है। एक बुनियादी चक्रीय कार्यकारी पर्याप्त है। 512 केबी फ्लैश ठीक से अधिक होना चाहिए। लाइब्रेरी easyGUI प्रदान करता है जो आपको आवश्यक फ्लैश की मात्रा को कम करने में मदद करने में बहुत लचीला है।

बॉक्स से बाहर फ़ॉन्ट्स, ग्राफिक्स, बिटमैप्स, टच स्क्रीन और वीडियो नियंत्रकों का एक समूह का समर्थन करता है।

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

उनके पास उनकी वेबसाइट पर एक डेमो ऐप है। यह जांचने लायक है।

+0

हम इसका उपयोग कर रहे हैं - यह अच्छी तरह से काम करता है लेकिन आपको चीजों के पीसी पक्ष को चलाने के लिए एक विंडोज मशीन की आवश्यकता है। –

2

सबसे छोटे संभव पदचिह्न के लिए आपको वास्तव में रामटेक्स पर विचार करना चाहिए। मैंने इसे 8-बिट पीआईसीएस के साथ दो परियोजनाओं पर इस्तेमाल किया है। रॉम स्पेस मेरे अनुप्रयोगों में ~ 35 के लिए रैम के साथ लगभग 35K था (राशि इस बात पर निर्भर करती है कि आपको डिस्प्ले के लिए रैम बफरिंग की आवश्यकता है या नहीं)। रोम स्पेस उन ग्राफिकल सुविधाओं पर निर्भर करता है जिन्हें आप चाहते हैं या चाहते हैं।

वे पूर्ण स्रोत प्रदान करते हैं और एक बार की कीमत $ 1000 से कम है, ध्यान दें कि उनकी वेबसाइट पर सूचीबद्ध कीमतें डॉलर में परिवर्तित होनी चाहिए, या जो भी आपकी मुद्रा है)। कोई रॉयल्टी या प्रति उत्पाद प्रतिबंध नहीं हैं।

वे कई अलग-अलग आकार और स्टाइल फोंट और मूल ड्राइंग कॉल (लाइन, पिक्सेल, बॉक्स इत्यादि) प्रदान करते हैं। इसमें बटन या मेनू जैसे किसी भी परिभाषित "ऑब्जेक्ट्स" नहीं हैं, लेकिन मैं बिना किसी परेशानी के पॉप-अप मेनू को कार्यान्वित करने में सक्षम था। यह "व्यूपोर्ट्स" का समर्थन करता है जिसका उपयोग पाठ बॉक्स, मेनू, आदि को परिभाषित करने के लिए किया जा सकता है, प्रत्येक को अपने गुणों के साथ।

यह एक सिम्युलेटर के साथ आता है जो एक पीसी पर चलता है ताकि आप एम्बेडेड सिस्टम पर जाने से पहले अपने डेस्कटॉप पर डिस्प्ले कोड विकसित कर सकें।

1

(पुराने सवाल है, लेकिन मैं इस विषय पर मेरी निष्कर्षों पोस्ट करने के लिए करना चाहता था)

उच्च गुणवत्ता वाले ग्राफिक्स के लिए, विरोधी अन्न ज्यामिति एक अच्छा विकल्प है। यह 50kB के बारे में करने के लिए संकलित करता है तथा framebuffers और प्रतिपादन उपकरणों के सभी प्रकार में लिखने के लिए अनुकूलित किया जा सकता: http://www.antigrain.com/

यूजर इंटरफेस के लिए, वेन एक अच्छा विकल्प दिखाई देता है। यह आसानी से पोर्टेबल है और रेंडर करने के लिए या तो बिटमैप चमड़ी नियंत्रण या सिर्फ आयत/सर्कल/लाइन रूपों अनुकूलित किया जा सकता: https://github.com/garrynewman/GWEN

तो अगर आप भी एक RTOS चयन कर रहे हैं, NuttX यह खुद ग्राफिक्स सबसिस्टम और विजेट Toolkit है है: http://nuttx.sourceforge.net/

संबंधित मुद्दे