2009-06-02 19 views
15

इस प्रश्न के विपरीत एक प्रकार के रूप में: "Is low-level embedded systems programming hard for software developers" मैं ओएस के साथ अधिक उन्नत सिस्टम के लिए प्रोग्रामिंग के लिए निम्न स्तर के एम्बेडेड सिस्टम से आगे बढ़ने पर सलाह देना चाहता हूं, विशेष रूप से एम्बेडेड लिनक्स।माइक्रोकंट्रोलर से एम्बेडेड लिनक्स में कैसे स्थानांतरित करें?

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

अब मेरे पास मेरे हाथों में एक बड़ी परियोजना है जो एम्बेडेड लिनक्स में किया जा रहा है। मुझे चीजों को डिजाइन करने और चीज़ों को व्यवस्थित रखने में बड़ी समस्याएं हैं क्योंकि मुझे पहले ऐसा करने की ज़रूरत नहीं है। मुख्य कार्य से "समानांतर" कार्य चलाने की बजाय मल्टीटास्किंग और अवरुद्ध कॉल का उपयोग करना एक और दुनिया की तरह है।

निम्न स्तर के प्रोग्रामिंग से ओएस (लिनक्स) के साथ बड़े सिस्टम में जाने के लिए आपके पास किस प्रकार के अनुभव हैं? क्या मुश्किल था और आपने इसे कैसे हल किया? किस तरह की मानसिकता की आवश्यकता है?

क्या शून्य से सी ++ सीखना या सादा सी का उपयोग करना जारी रखना उचित होगा?

+0

बहुत व्यापक रूप से बंद करने के लिए वोटिंग। –

उत्तर

10

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

http://www.uclibc.org/

तुम भी बिजीबॉक्स उपयोगी मिल सकता है। यह कई उपयोगकर्ता स्पेस यूटिलिटीज को एक बाइनरी के रूप में प्रदान करता है।

http://www.busybox.net/

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

रीयलटाइम लिनक्स में भी देखें।

http://www.realtimelinuxfoundation.org/

आप कार्य पूरा होने के कुछ औपचारिक वादा की जरूरत है। मुझे संदेह है कि सबसे कठिन बिट बूटिंग/लगातार स्टोरेज होगा और यह आपके हार्डवेयर के साथ इंटरफेसिंग करेगा यदि यह विदेशी है। आप लिनक्स तो बूटिंग से अपरिचित हैं

http://www.cromwell-intl.com/unix/linux-boot.html

मदद कर सकता है।

संक्षेप में, यदि आपने लिनक्स के गहरे स्तर पर विकसित नहीं किया है, तो अपना खुद का डिस्ट्रो बनाया है, या कर्नेल अनुभव है तो आपको प्रोग्रामिंग हार्ड- मिल सकती है।

http://www.linuxdevices.com/ भी मदद कर सकता है

गुड लक

+1

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

+1

कोई चिंता नहीं! हर काम के लिए शुभकामना। –

3

आदेश यूनिक्स/लिनक्स के साथ काम करने में आप यूनिक्स धारणा में मिलना चाहिए: http://www.faqs.org/docs/artu/ch01s06.html

मैं विचार पूरी किताब एक काफी रोचक पढ़ने : http://www.faqs.org/docs/artu/index.html

यहां आपको प्रारंभ करने के लिए एम्बेडेड लक्ष्य और बूटलोडर के लिए एक मुफ्त लिनक्स डिस्ट्रो मिल सकता है: http://www.denx.de/wiki/DULG/WebHome

+0

एक अच्छा पढ़ने की तरह लगता है। धन्यवाद। –

2

मैं बहुत पहले की तरह एक बहुत ही समान स्थिति में था। मैंने Embedded Linux Primer खरीदा और पढ़ा और यह एक उच्च स्तरीय ओएस (माइक्रोकंट्रोलर परिप्रेक्ष्य से) में मानसिक संक्रमण करने का एक बहुत ही उपयोगी तरीका था।

यदि आपके पास "अपना समय लेने का समय" है, तो आप स्पष्ट रूप से संक्रमण कर सकते हैं। लेकिन अगर आपको जल्दी से तेजी से उठने की ज़रूरत है, तो आप मार्गदर्शन करने में सहायता के लिए तकनीकी सलाहकार प्राप्त करने पर दृढ़ता से विचार करना चाहेंगे।

1

आपको ucLinux से शुरू करके लिनक्स में अपना रास्ता काम करने के लिए भी उपयोगी हो सकता है। यह मूल रूप से एक माइक्रोक्रोनरोलर पर लिनक्स है। संक्रमण के रूप में आप वर्चुअल मेमोरी पहलू के बिना कर्नेल के लिए एक महसूस कर सकते हैं। देखें कि ucLinux एक माइक्रोकंट्रोलर का समर्थन करता है कि आप पहले से परिचित हैं और देखें कि कर्नेल उस आर्किटेक्चर के साथ कैसे इंटरैक्ट करता है।

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

जब आप ucLinux के संचालन के साथ सहज महसूस करते हैं, तो आप एक माइक्रोप्रोसेसर आर्किटेक्चर पर एक सामान्य लिनक्स कर्नेल के साथ शुरू कर सकते हैं जैसे एआरएम जिसमें एमएमयू और वर्चुअल मेमोरी है।

बस मेरे दो सेंट!

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