2009-02-27 12 views
14

मुझे यह देखने के लिए उत्सुकता है कि एम्बेडेड डेवलपर दुनिया में सी के विकल्प कितने लोकप्रिय हैं उदा। एडीए ...एंबेडेड प्लेटफॉर्म डेवलपमेंट (! सी)

मैंने कभी सी (कुछ असेंबलर के साथ) का उपयोग किया है, लेकिन फिर मेरे लक्ष्यों में बहुत सीमित संसाधन हैं। क्या इस जगह में कुछ और जगह है जहां कोई और कदम है? सेट टॉप बॉक्स में बर्तन जीतना क्या है?

यदि सी अंतर्निहित कारण क्या था? लक्ष्य के लिए

  • संकलक समर्थन
  • ट्रेस \ स्थिर विश्लेषण उपकरण
  • अन्य ...

धन्यवाद।

+2

+1। मुझे समझ में नहीं आता कि कोई भी इसे क्यों वोट देगा, इसे अकेले आक्रामक के रूप में चिह्नित करें। मुझे लगता है कि वे चाहते हैं कि आप सी के साथ रहें :) –

+1

मैं इस तरह प्रतिक्रिया नहीं करता। बस उसे भूरे रंग में फीका दें। – Svante

+1

लॉल, एक और आक्रामक चिह्न। कुछ लोगों के पास एक गुच्छा में अपने जाँघिया होते हैं। –

उत्तर

5

Forth एम्बेडेड विकास के लिए काफी लोकप्रिय है।

इसके अलावा, Smalltalk शायद एम्बेडेड समुदाय में लोकप्रिय नहीं है, embedded development छोटे-छोटे समुदाय में निश्चित रूप से लोकप्रिय है।

1

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

1

हां। जावा अधिक लोकप्रिय हो रहा है - कई प्रोसेसर ने मुख्य रूप से जावा और इसी तरह की भाषाओं (.net) से संबंधित निर्देश जोड़े हैं। इसके अलावा, uclinux microcontrollers पर चलता है, ताकि आप कुछ बड़े माइक्रोस्कोप के लिए व्यावहारिक रूप से किसी भी भाषा का उपयोग कर सकें।

असेंबली के रूप में मूल अभी भी आम है।

आप कुछ परियोजनाओं में एडा देखेंगे।

और कुछ इंजीनियर भी अपने माइक्रोस्कोप पर लुआ और अन्य दुभाषियों को डाल रहे हैं ताकि उनके ग्राहक कार्यक्षमता बढ़ा सकें।

लेकिन सी अभी भी प्रभावी है।

-Adam

+0

डाउनवोट पर एलओएल - यदि आपको लगता है कि यह गलत है, तो कृपया टिप्पणी करें, मुझे यह जानना अच्छा लगेगा कि मैंने क्या कहा गलत तरीके से मैं इसे ठीक कर सकता हूं या इसकी रक्षा कर सकता हूं! –

+0

@ एडम- ने आपको एक अपवॉट दिया ... मेरे आरटी/एम्बेडेड जावा भाइयों के लिए बात करनी होगी ... जेए – andersoj

2

शायद सी से काफी बड़ा कदम नहीं है, लेकिन सी ++ एम्बेडेड परियोजनाओं के लिए भी बेहद लोकप्रिय है।

+1

वैसे यह निर्भर करता है .... यदि आप सी ++ के पॉलीमोर्फिक और जेनेरिक प्रोग्रामिंग पहलुओं का उपयोग करते हैं, तो यह प्रतीत होता है "मानक सी" की तरह बहुत कम। यदि आप डेटा और विधियों को समाहित करने के लिए कक्षाओं का उपयोग करते हैं (अच्छा, लेकिन सी में करने योग्य) तो आप सी ++ का उपयोग करने के पहले स्तर पर थोड़े हैं। जब भी मुझे फिर से शुरू होता है जो "सी/सी ++" कहता है, पहली चीज जिसे मैं जांचना शुरू करता हूं वह सी ++ ज्ञान की गहराई है। आमतौर पर यह बहुत उथला है। – Dan

0

मैंने EC++ (Embedded C++) का उपयोग काफी व्यापक रूप से किया है।

इसके अलावा, PICBasic अब ईन्स के लिए PIC'ers के साथ लोकप्रिय रहा है।

0

मैंने ग्राहकों की आवश्यकताओं के कारण सैन्य एवियनिक्स के लिए एम्बेडेड प्रोजेक्ट में एडा का उपयोग किया है। एम्बेडेड विकास के लिए बहुत सारे एडा टूल्स हैं लेकिन इनमें से अधिकतर महंगे हैं। व्यक्तिगत तौर पर मैं सिर्फ सी

0

का प्रयोग करेंगे वहाँ के लिए 8051

+0

और फ्रीपास्कल एआरएम, एमआईपीएस और कुछ अन्य का समर्थन करता है। –

1

एक Pascal संकलक जल्दी 90 में इंटेल PLM51 और DCX51 ऑपरेटिंग सिस्टम का उपयोग कर रहा 8051 पर एम्बेडेड विकास का एक बहुत कुछ किया है।अब हम सी

0

का उपयोग वहाँ एक group of folks लुआ एम्बेडेड काम के लिए एक व्यवहार्य विकल्प बनाने के लिए काम कर रहा है, लेकिन बहुत शक्तिशाली

-

PLM बहुत ही सरल भाषा है। वे मुख्य रूप से 25-बिट एआरएम को 256 के फ्लैश और 64 के रैम या बेहतर के साथ लक्षित कर रहे हैं, और अब तक उनके काम से खुश हैं।

वे आंशिक रूप से क्लासिक BASIC-Stamp से प्रेरित हैं, जो एक मामूली शक्तिशाली पीआईसी में चल रहे एक बेसिक दुभाषिया प्रोग्राम के साथ ही एक धारावाहिक ईईपीरोम डिवाइस में संग्रहीत है।

काम पर, मैं अभी भी एक ग्राहक की एम्बेडेड प्रणाली को बनाए रख रहा हूं जो ज़िलोग जेड 180 सीपीयू में चल रहे बेसिक के संकलित स्वाद में लिखा गया है। 1 9 80 की तकनीक के आसपास, अधिकांश सिस्टम अभी भी सॉकेट में 24-बिन डीआईपी पैकेजों से बना है। संकलक एक Z80 सिम्युलेटर में चल रहे सीपी/एम -80 के तहत चलता है, जो स्वयं विंडोज़ में निर्मित एमएस-डॉस सिम्युलेटर में चलता है। कतरनी के आश्चर्य के अलावा कि कुछ भी उत्पादक इस तरह से किया जा सकता है (और यह कि आप अभी भी 27 सी 256 यूवी इरेसेबल ईपीआरओएमएस खरीद सकते हैं, और यह कि मेरा लगभग 20 साल का डेटा/आईओ प्रोम प्रोग्रामर अभी भी काम करता है) मैं वास्तव में चाहता हूं कि ग्राहक आगे बढ़ सके एक नया हार्डवेयर डिज़ाइन ताकि सिस्टम को एक रखरखाव योग्य भाषा में फिर से लिखा जा सके।

0

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

मैं सी या असेंबलर से चिपके रहूंगा, आप किसी और चीज का उपयोग करके स्मृति, प्रदर्शन और संसाधन बर्बाद कर रहे हैं।

0

पास्कल, मॉडुला 2 भी ठीक काम करता है। अनिवार्य रूप से वे एलोका करने में असमर्थता को छोड़कर, सी के बराबर काफी समतुल्य हैं (हालांकि कुछ में विस्तार के रूप में है)।

लेकिन मूल समस्या किसी के साथ समस्या होगी! सी कंपाइलर: आप बेहतर कंपाइलर/टूलचेन या वरीयता की भाषा क्या पसंद करते हैं।

मुझे विर्थियन भाषाओं की अधिकांश पसंद होने के बावजूद, मैं बस सी का उपयोग करता हूं, और परिणामों के साथ रह रहा हूं, क्योंकि टूलचैन बेहतर है।

अतीत में उदाहरण हैं (पास्कल, या यहां तक ​​कि कसकर संकलित मूल बातें), लेकिन सी ज्यादातर मानक है। मैंने कभी नहीं समझा क्यों।

0

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

जरूरत नहीं कहने के लिए हम चाहते हैं कि खत्म कर दिया और एक कि सी

+0

मैंने सी में सभी कोड के साथ एक माइक्रोकंट्रोलर आधारित प्रणाली लिखी, जिसने एक्सटेंशन और स्क्रिप्टिंग के लिए एक एम्बेडेड पायथन दुभाषिया का उपयोग किया। सुंदरता। –

1

आप स्मार्ट कार्ड अंतरिक्ष में काम करते हैं दौड़ा, आप Java Card उपयोग करने के लिए मिल के साथ माइक्रो बदल दिया। हाँ, जावा, 8-बिट माइक्रो पर। वास्तव में यह मजेदार है। मुझे पीसी सिम्युलेटर पर एक्लिप्स, टेस्ट (& डीबग!) में विकसित होना है, और यह भरोसा हो सकता है कि यह कार्ड पर भी चलाएगा।यह सिर्फ इस तरह के एक दया है जावा एम्बेडेड क्षुधा :) के लिए एक भयानक भाषा है

0

इस संबंधित सवाल देखें:

What languages are used for real-time systems programming

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

5

जब आप "एम्बेडेड विकास" कहते हैं, तो ध्यान रखें कि आपको परियोजना के पैमाने पर विचार करना होगा।

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

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

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

0

तो आप iPhone शामिल एक एम्बेडेड मंच तो ऑब्जेक्टिव-सी

0

को ध्यान में रखते कितनी बार मैं अपने फ़ोन पर एक-से-बाहर स्मृति जावा अपवाद के रूप में लिया है (ज्यादातर समय मैं कुछ भी दूर से दिलचस्प करना), मैं एक गर्म जगह से बाहर बल्ले की तरह जावा से भाग जाऊंगा।

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

0

बहुत से घर-ब्रू उपयोगकर्ता और सस्ते कंपनियों को सस्ते समाधान की आवश्यकता वाले छोटे कंपनियों को टिनी टाइगर और बेसिक स्टैम्प (बीएएसआईसी का उपयोग करके) उनकी जरूरतों को पूरा करता है।

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