2009-03-16 7 views
7

मैं एक डिवाइस के लिए एम्बेडेड कोडिंग कर रहा हूं जो लगभग 20 मेगाहट्र्ज है, इसमें एआरएम 32 प्रोसेसर के साथ 6 एमबी रैम है। क्या कोई एम्बेडेड सिस्टम प्रोग्रामिंग के लिए सबसे अच्छी/सबसे उपयुक्त भाषा सुझा सकता है? मैं विचार कर रहा हूँ:एक एम्बेडेड सिस्टम प्रोग्रामिंग के लिए सबसे उपयुक्त (सर्वोत्तम) भाषा के लिए सुझाव?

  • लुआ
  • TinyPy
  • सी
  • जावा ME
  • सी #
  • किसी जावास्क्रिप्ट

कोई सुझाव का सुझाव दिया है? धन्यवाद

संपादित करें - सी और लुआ विजेता हैं जैसे दिखते हैं। चीयर्स सब!

संपादित करें - वास्तविक समय कोई मुद्दा नहीं है, यह सीमित रैम/सीपीयू चीजों को निर्देशित करता है।

उत्तर

4

मेरे पास used Lua on an ARM OMAP processor है। सी के साथ लुआ का तंग एकीकरण धातु की ओर जाने की इजाजत देता है, और इसका छोटा आकार इसे प्लेटफार्मों की एक विस्तृत श्रृंखला के लिए उपयुक्त बनाता है। मैंने अपने मैक पर लूआ में अपने फर्मवेयर के लिए यूआई विकसित किया और फिर इसे बिना किसी बदलाव के एम्बेडेड प्लेटफॉर्म पर लाया।

जबकि ओएमएपी प्रोसेसर जावा या पायथन जैसी अन्य भाषाओं को चलाने के लिए पर्याप्त रूप से पर्याप्त था, मुझे नहीं पता था कि जब मैंने कोड शुरू किया था तो मैं किस हार्डवेयर को लक्षित कर रहा था। लुआ एक सुरक्षित शर्त थी।

4

मैं सीधे सी के साथ जाने का लुत्फ उठाऊंगा, लेकिन फिर मैं लगभग 30 वर्षों तक सी लिख रहा हूं। लुआ और टिनीपी मेरे लिए बहुत नए, प्रयोगात्मक लगते हैं; एम्बेडेड उपकरणों को बहुत मजबूत होना चाहिए।

जावा एमई के अच्छे अंक हैं। मुझे एक एम्बेडेड दुनिया में सी # के बारे में पता नहीं है।

+1

भाषा के बारे में सबसे ज्यादा बात करता प्रतीत होता है फिर भी एक स्क्रिप्टिंग भाषा के परिणामस्वरूप सर्वर-भूमि में समान कारणों के लिए अधिक मजबूत कोड हो सकता है: पॉइंटर अंकगणित और स्मृति प्रबंधन प्रोग्रामर की जिम्मेदारियों की सूची से हटा दिया गया । – slim

+0

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

+1

लुआ '93 के बाद से रहा है ('94 में जारी), और इंजन खुला स्रोत है। मैं तर्क दूंगा कि सी और सी ++ के लिए कई कंपाइलर्स के रूप में भरोसेमंद है। – patros

6

सी शायद सीमित सीमित सीपीयू संसाधनों के लिए आपकी सबसे अच्छी शर्त है।

+2

भूलें कि लोग 16 एमएम रैम के साथ 2 एमएचजेड 8 बिट 6502 प्रोसेसर पर बेसिक में पूरी तरह से व्यवहार्य अनुप्रयोग लिखते थे। यदि आपको प्रदर्शन के हर अंतिम बिट को निचोड़ने की आवश्यकता है, तो सी का उपयोग करें - लेकिन वर्णित हार्डवेयर दुभाषियों से इंकार नहीं करता है। – slim

+0

मैं सहमत हूं, बस सबसे सुरक्षित जवाब के साथ चला गया क्योंकि ओपी ने डिवाइस के साथ वास्तव में क्या करना चाहते थे इसका कोई संकेत नहीं दिया था। – patros

+0

एक एम्बेडेड प्रोसेसर के लिए, 6 एमबी होने से सीमित है। उदाहरण के लिए, सबसे छोटे पीआईसी 10 एफ में 16 बाइट रैम और 384 बाइट फ्लैश हैं। इसके लिए, आप असेंबलर में प्रोग्राम करते हैं। :-) –

1

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

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

+0

जावास्क्रिप्ट - यह एक दिलचस्प विचार है! वह किस तरह का होगा? – Chris

+0

अच्छी तरह से, मैंने कुछ साल पहले स्पाइडरमोनकी से कुछ भी नया नहीं किया है, लेकिन यह काफी सरल है, जब तक आपको वैश्विक वस्तु को ओवरराइड करने की आवश्यकता नहीं है। वह मुझे काफी उलझन में डाल दिया। – SingleNegationElimination

8

यदि आप डिवाइस को स्क्रैच से सीधे ला रहे हैं या गैर मानक परिधीय के साथ इंटरफेसिंग कर रहे हैं, तो सी वास्तव में जाने का एकमात्र तरीका है।

यदि आपके पास पहले से ही एम्बेडेड ओएस है या बिना किसी कठिनाई के पोर्ट को बंद कर दिया गया है, तो आपको अधिक स्क्रिप्ट-वाई भाषाओं में से एक जोड़ने में अधिक लचीलापन हो सकता है। सी # प्रश्न से बाहर है जब तक कि आप WinCE पर नहीं हैं, और फिर आप .NET माइक्रो तक ही सीमित रहेंगे।

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

+3

असहमत। http://en.wikipedia.org/wiki/.NET_Micro_Framework –

+0

एआरएम बिल्कुल विदेशी नहीं है ... यह व्यापक रूप से एम्बेडेड सिस्टम में उपयोग किया जाता है, खासकर एक चिप पर सिस्टम के सीपीयू कोर के रूप में। – RBerteig

4

यह निर्दिष्ट करना महत्वपूर्ण है कि आप इस डिवाइस को क्या उम्मीद करते हैं। क्या यह कुछ प्रकार का नियंत्रण अनुप्रयोग है? क्या इसे एल्गोरिदम लागू करना है? फ़्लोटिंग-पॉइंट समर्थन के बारे में क्या? GUIs? प्रदर्शन महत्वपूर्ण है? क्या आप ओएस का उपयोग करने की योजना बना रहे हैं?

प्रोग्रामिंग भाषा चुनने के लिए इन सवालों का जवाब देना एक महत्वपूर्ण शर्त है।

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

1

जब तक आपके पास कोई आरटीओएस उपलब्ध न हो जो विभिन्न वैकल्पिक भाषाओं का समर्थन करता है, सी या सी ++ (आपके कंपाइलर श्रृंखला के आधार पर) जाने का तरीका है।

1

आपका निर्णय इस प्रोसेसर के लिए उपलब्ध टूल्स द्वारा निर्धारित किया जाने की संभावना है।

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

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

1

सी सबसे अच्छा

2

सी निश्चित रूप से एम्बेडेड सिस्टम में सबसे अधिक इस्तेमाल भाषा है। यह सामान्य रूप से http://www.langpop.com/

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

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