2008-10-23 11 views
14

एक सामान्यवादी के रूप में मेरी पृष्ठभूमि को देखते हुए, मैं एनालॉग इलेक्ट्रॉनिक्स से अधिकांश क्षेत्र को सरल अनुप्रयोगों को लिखने के लिए कवर कर सकता हूं जो आरडीबीएमएस बैकएंड में इंटरफेस करते हैं।सॉफ्टवेयर डेवलपर्स के लिए हार्ड-स्तर/एम्बेडेड सिस्टम प्रोग्रामिंग कठिन है?

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

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

क्या आपके पास उस सॉफ़्टवेयर-टू-हार्डवेयर (या निम्न-स्तरीय सॉफ़्टवेयर) संक्रमण को बनाने में अनुभव है? या, अभी तक बेहतर है, केवल एक सॉफ्टवेयर लेना, और उसे निम्न स्तर की सामग्री में स्थानांतरित करना?

संपादित करें:

पीएस मुझे उत्तरदाताओं से सुनना अच्छा लगेगा कि उनकी अपनी पृष्ठभूमि क्या है - ईई, सीएस, दोनों?

+0

एक sidenote - कारण मैं इसका कारण यह है क्योंकि अगर वह एम्बेडेड सामान करने में सहज नहीं होगा, तो हम शायद "फर्मवेयर लड़का" जोड़ने के लिए स्काउटिंग शुरू कर देंगे। – Toybuilder

+0

आपके अनुरोध के अनुसार - मैं एक सीई (कंप्यूटर इंजीनियर) हूं जो विकास के हार्डवेयर/फर्मवेयर पक्ष को पसंद करता है लेकिन सीमा में आरामदायक है - मेरा स्टैक ओवरफ्लो और/या लिंकिन प्रोफाइल देखें। –

+0

मेरे पास 1 9 85 के आसपास सीआईएस की डिग्री है और पीए और सी को कई [मृत] वेब स्टार्टअप, इंजीनियरिंग से वित्तीय सेवाओं तक इंजीनियरिंग करने वाली इंजीनियरिंग फर्म से डोमेन पर काम किया है। –

उत्तर

6

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

शैल स्क्रिप्टर्स को "बैश" (कोई पन इरादा नहीं) नहीं है, लेकिन यदि आप पूरे दिन पर्ल और शैल स्क्रिप्ट लिखते हैं, तो यह बहुत मुश्किल हो सकता है।

इसी प्रकार यदि आप विंडोज के लिए यूआई लड़के हैं। यह एक अलग तरह की सोच है।

14

दिन के अंत में, सबकुछ एक एपीआई है।

एक माइक्रोकंट्रोलर के अंदर एक एसपीआई परिधीय के लिए कोड लिखने की आवश्यकता है? खैर, डेटाशीट या हार्डवेयर मैनुअल प्राप्त करें, और एसपीआई परिधीय देखें। यह एक, बड़ा, जटिल एपीआई है।

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

तो यह हार्डवेयर के परिप्रेक्ष्य से है (इसका सामना करें - माइक्रोकंट्रोलर कंपनी हार्डवेयर/एसिड इंजीनियरों से भरा हार्डवेयर कंपनी है)।

जिसका अर्थ है कि संक्रमण सरल और सीधा नहीं है।

लेकिन यह मुश्किल नहीं है - यह सिर्फ थोड़ा अलग डोमेन है। यदि आप एक अध्ययन कार्यक्रम को कार्यान्वित कर सकते हैं, तो Rabbit Semiconductor की किट से शुरू करें। वहां पर्याप्त सॉफ्टवेयर है इसलिए एक एसडब्ल्यू आदमी वास्तव में थोड़ा प्रयास कर सकता है, और एचडब्ल्यू के साथ सौदा करना आसान है क्योंकि सब कुछ अच्छी छोटी पुस्तकालयों में लपेटा जाता है। जब वे कुछ जटिल करना चाहते हैं तो वे निचले स्तर पर प्रत्यक्ष हार्डवेयर पहुंच और पहेली में खोद सकते हैं, लेकिन साथ ही वे कुछ बहुत अच्छी चीजें कर सकते हैं जैसे कि webservers या pan/tilt network cameras बनाएं। इसी तरह की पेशकश के साथ अन्य कंपनियां हैं, लेकिन खरगोश वास्तव में सॉफ्टवेयर इंजीनियरों के लिए हार्डवेयर को आसान बनाने पर केंद्रित है।

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

यदि आप वास्तव में गहरे छोर पर कूदना चाहते हैं, तो arduino kit - सस्ते, मुफ्त कंपाइलर और पुस्तकालयों के साथ जाएं, जो शुरू करना बहुत आसान है, लेकिन आपको कुछ दिलचस्प करने के लिए तारों को हुक करना होगा, जो भी हो सकता है एक अनिच्छुक सॉफ्टवेयर इंजीनियर के लिए बाधा का बड़ा। लेकिन थोड़ी सी मदद और सही दिशा में कुछ nudges और वे पूरी तरह से एक छोटे एलईडी डिस्प्ले कि nightrider रोशनी की तरह * wibbles से रोमांचित हो जाएगा ...

-Adam

* हां, यह एक तकनीकी है इंजीनियरिंग शब्द

+0

+1 :) – Nav

+0

+1 नाइटराइडर रोशनी के लिए +1 :) – Picflight

+0

आईएमएचओ, निम्न-स्तर वाले एपीआई कुछ वेब लीविथान से निपटने और समझने के लिए कहीं अधिक आसान हैं। यह आपको बताता है * बिल्कुल * क्या करना है, क्या अनुमति है और कब। आपको बाइट्स और बिट्स (और बिटमैस्क) से निपटने की ज़रूरत है, लेकिन यह इसके बारे में है। –

3

उपयोगकर्ता स्तर के अनुप्रयोग विकास (यानी, सामान्य उद्देश्य पीसी या वेब अनुप्रयोग) से मानसिक समय में वास्तविक समय सीमा, वास्तविक समय प्रतिक्रिया अनुप्रयोग विकास (यानी हार्डवेयर/सॉफ्टवेयर इंटरफ़ेस) से मानसिकता में एक बहुत ही वास्तविक अंतर है।

इंटरप्ट्स, निर्देश सेट, संदर्भ स्विचिंग और हार्ड संसाधन बाधाएं आपके औसत डेवलपर के लिए अपेक्षाकृत अज्ञात हैं। मैं यहां मान रहा हूं कि आपका 'औसत डेवलपर' प्रशिक्षण द्वारा इलेक्ट्रिकल/इलेक्ट्रॉनिक या अन्य अभियंता नहीं है।

आपके द्वारा उल्लेख किए गए इस डेवलपर के लिए संक्रमण उसके आराम क्षेत्र से बाहर हो सकता है। हम में से कुछ इस तरह खींचने की तरह। हम में से दूसरे ने फैसला किया होगा कि दृश्य चढ़ाई के लायक नहीं है।

इसी तरह, जो लोग हार्डवेयर क्षेत्र (यानी इंजीनियरों) में हैं, अक्सर सॉफ्टवेयर विकास की धारणाओं और भाषा में कठिनाई होती है।

ये सकल सामान्यताएं हैं, लेकिन उम्मीद है कि कुछ अंतर्दृष्टि दें।

0

"हार्ड" शब्द से सहमत काफी सापेक्ष है।

मैं अलग कहूंगा, क्योंकि आपको विभिन्न विकास पैटर्नों को नियोजित करने की आवश्यकता होगी जिन्हें आप अन्य प्रकार के पर्यावरण में उपयोग नहीं करेंगे। उदाहरण के लिए समय की बाधा को सीखने की वक्र की आवश्यकता हो सकती है। हालांकि उत्सुक होना, डेवलपर के लिए एक गुणवत्ता होगी, नहीं होगा?

4

यह बहुत ही व्यक्तिपरक है, मुझे लगता है कि उसके कारण कई हो सकते हैं। लेकिन अगर वह मेरे जैसा है, तो मुझे पता है कि वह कहां से आ रहा है। मुझे समझाने दो।

मेरे कैरियर में मैं, दूरसंचार उद्योग के लिए 6 साल के लिए समर्पित कर दिया है लो-एंड मोबाइल फोन आदि

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

मैं दयालु हूं जो महसूस करता है कि यह मेरी रचनात्मकता को सीमित करता है।

मैं आनंद विंडोज डेस्कटॉप वातावरण में वापस जा रहा है और विस्तृत वर्ग डिजाइन के साथ मेरी पंख फड़फड़ा, अपने पैरों में कुछ clockcycles अतिरिक्त खिंचाव, निदान आदि

अतीत में कुछ एम्बेडेड इकाइयों पर के लिए स्मृति की अनावश्यक मात्रा में उपयोग करते हैं, मुझे शायद fseek() (एक एएनएसआई सी मानक फ़ाइल समारोह) के लिए समर्थन था।यदि भाग्यशाली है, तो "वॉचडॉग" कुछ कहां दुर्घटनाग्रस्त हो सकता है। एकल-थ्रेडेड प्रीपेप्टिव दलदल में उपयोगकर्ता के साथ संवाद करने के दर्द का जिक्र नहीं करना चाहिए।

ठीक है, आप जानते हैं कि मैं क्या प्राप्त कर रहा हूं। मेरी राय में यह जरूरी नहीं है, लेकिन यह आपके वर्तमान अनुभव के संभावित रूप से थोड़ा पुन: उपयोग के साथ काफी छलांग है।

सादर

रॉबर्ट

0

आप सही पर्याप्त ज्ञान पूरी तरह से एक क्षेत्र में खो महसूस करने के लिए नहीं के साथ कि किसी को भी कर रहे हैं (कूबड़ से अधिक?) कुछ नया सीखने की चुनौतियों मज़ा आएगा।

मैं खुद को बहुत ही घबराहट महसूस करता हूं कि निर्देश सेट आदि के स्तर पर जा रहा है क्योंकि पर्यावरण में सहज महसूस करने के लिए पृष्ठभूमि की बड़ी मात्रा में आवश्यक जानकारी है।

यदि आप डेवलपर को यह सीखने में सहायता करने में सक्षम हैं तो यह एक फर्क पड़ सकता है। वहां किसी को रखने के साथ आप समस्या के माध्यम से पूछ सकते हैं और बात कर सकते हैं, उस तरह के डोमेन परिवर्तन में एक बड़ी मदद है।

डेवलपर को एक छोटे से प्रोजेक्ट को दूसरे चरण के साथ सौंपा जा सकता है और यह देख सकता है कि यह कैसे जाता है। यदि वह किसी अन्य प्रोजेक्ट को आजमाने के लिए उत्साह व्यक्त करता है, तो चीजों को वहां से बहना चाहिए।

0

मैं कहूंगा कि यह कोई कठिन नहीं है, इसके लिए केवल एक अलग ज्ञान सेट, अलग-अलग विचारों की आवश्यकता है।

1

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

0

मुझे लगता है कि यह इस बात पर निर्भर करता है कि वे अपने चुने हुए माहौल में प्रोग्राम करते हैं, और किस प्रकार के एम्बेडेड काम के बारे में आप बात कर रहे हैं।

एक एम्बेडेड लिनक्स प्लेटफॉर्म पर काम करना, कहें, 8 बिट प्लेटफ़ॉर्म पर कोड लिखने की कोशिश करने से कहीं बहुत छोटी कूद नहीं है, जिसमें कोई ऑपरेटिंग सिस्टम नहीं है।

यदि वे ऐसे व्यक्ति हैं जो एपीआई और पर्यावरण के नीचे क्या चल रहा है, इसकी समझ है, तो यह एम्बेडेड विकास में जाने के लिए बहुत अधिक नहीं होगा।

हालांकि, यदि उनका विश्व दृश्य उच्च स्तर के एपीआई पर बंद हो जाता है, जिसका उपयोग वे कर रहे हैं, और उनके पास कुछ भी नहीं है, तो उनके पास वास्तव में कठिन समय होगा।

एक (बहुत) सामान्य कथन के रूप में यदि वे बहुप्रचारित अनुप्रयोगों पर काम कर रहे हैं तो वे शायद ठीक रहेगा, क्योंकि एम्बेडेड परियोजनाओं पर काम करते समय आपके पास डेटा अस्थिरता के कुछ ही मुद्दे हैं।

उन सभी के साथ, मैंने देखा है कि मैंने अधिक से अधिक एम्बेडेड प्रोग्रामर सफलतापूर्वक पीसी विकास में काम कर रहे हैं, मेरे विपरीत है। (निश्चित रूप से मैंने एक निष्पक्ष क्रॉस सेक्शन नहीं देखा होगा)

8

मेरे द्वारा काम किया गया सबसे अच्छा एम्बेडेड प्रोग्रामर ईई प्रशिक्षित और नौकरी पर एसडब्ल्यू सीखा है। सबसे खराब एम्बेडेड डेवलपर्स हाल ही में सीएस स्नातक हैं जो सोचते हैं कि एसडब्ल्यू समस्या का समाधान करने का एकमात्र तरीका है।मुझे एसडब्ल्यू पिरामिड के नीचे एम्बेडेड प्रोग्रामिंग के बारे में सोचना पसंद है। यह एक स्थिर अमूर्त परत/नींव है जो ऐप डेवलपर्स के लिए जीवन आसान बनाती है।

+0

एम्बेडेड सिस्टम डिज़ाइन दोनों हार्डवेयर और सॉफ्टवेयर समस्याओं की समझ के लिए आवश्यक है। हार्डवेयर की निराशाजनक मात्रा उन लोगों द्वारा डिज़ाइन की गई है जिन्हें सॉफ़्टवेयर में चीजें आसान या मुश्किल होती हैं, इसकी कम समझ नहीं है। उपकरणों को हार्डवेयर शामिल करना बहुत आम है जो * इरादा * सहायक हो सकता है, लेकिन उपद्रव होने के बाद समाप्त होता है। मान लीजिए, उदाहरण के लिए, चिप में 48-बिट काउंटर होता है जो 32,768 बार/सेकेंड की गणना करता है। ऊपरी आधे भाग के निचले आधे भाग को पढ़ने में मददगार लग सकता है, लेकिन जब तक कि कोई आधा और आधा पठन के बीच इंटरप्ट को अक्षम नहीं करता है ... – supercat

+0

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

0

"लेकिन जब मैं निम्न स्तर के प्रोग्रामिंग करने के बारे में उससे बात करता हूं, तो वह परियोजना में शामिल होने के बारे में ब्याज व्यक्त करता है और संदेह/अनिश्चितता भी व्यक्त करता है।" - इसका मतलब है कि आप उसे आज़माते हैं और यदि आप सीखने की अवस्था पास नहीं करते हैं तो आप किसी और को किराए पर लेने के लिए तैयार होते हैं।

3

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

2

ठीक है, मैंने हार्डवेयर पर अपने दांतों को काट दिया जब मैंने 14 साल की उम्र में लोकप्रिय इलेक्ट्रॉनिक्स पढ़ना शुरू किया - यह व्यक्तिगत कंप्यूटर से पहले था, अगर आप सोच रहे थे और यदि आप ठीक नहीं थे, तो आप वैसे भी जानते हैं। lol

मैंने 8048/51 माइक्रोप्रोसेसर पर निम्न स्तर की बिट-बैंग सामग्री की है, पीआईसी और कुछ अन्य सिंगल चिप विविधताओं और निश्चित रूप से खरगोश सेमीकंडक्टर किया है। (यदि आप सी में हैं तो महान)। यह बढ़िया (और मजेदार) सामान है; हां, चीजों को देखने का एक अलग तरीका है - कठिन नहीं, लेकिन उस जानकारी में से कुछ को आने के लिए थोड़ा मुश्किल है क्योंकि यह सॉफ्टवेयर मुद्दों के रूप में चर्चा नहीं है। (बेशक, यह उन मित्रों के मंडल पर निर्भर करता है जिनके साथ आप संबद्ध हैं, एह)।

लेकिन, यह सब कहकर, मैं आपको ऐसी तकनीक की याद दिलाना चाहता हूं जो प्रोग्रामर के लिए हार्डवेयर की दुनिया में अंतर को पुल करना शुरू कर दे और तब से वह एक बहुत ही प्रमुख खिलाड़ी बन गया और वह .NET माइक्रो फ्रेमवर्क है । आप निम्न पर इस तकनीक पर जानकारी पा सकते हैं;

http://msdn.microsoft.com/en-us/embedded/bb267253.aspx

यह वही समस्या है जो नेट वेब विकास नए वातावरण में अपने मौजूदा पीसी आधारित ज्ञान के में संबोधित है कि आप कुछ प्रयोग कर सकते हैं (काफ़ी है, वास्तव में) में से कुछ के पते - कुछ सावधानी , ज़ाहिर है, क्योंकि आपकी लक्षित मशीन में 4 गीगा रैम नहीं है - इसमें केवल 64K (या कम)

.NET माइक्रो फ्रेमवर्क के संस्करण 2.5 में प्रारंभ हो सकता है, आपके पास नेटवर्किंग और वेब सेवाओं तक पहुंच है - रास्ता kewl, आह? यह वहां नहीं रुकता है ... अपने घर में रोशनी को नियंत्रित करना चाहते हैं? एक अस्थायी रिकॉर्डिंग स्टेशन के बारे में कैसे? आपके पास पहले से ही कौशल है। खैर, ज्यादातर - लिंक देखें।

एसडीके आपके विजुअलस्टूडियो आईडीई में प्लग करता है। नकदी की एक बहुत ही उचित राशि के लिए कई "विकास किट" उपलब्ध हैं - अब, आम तौर पर घटकों में एक बड़ा सीखने की वक्र लेना, एक सर्किट बोर्ड बनाना और "सामान" को तार करना एक देव किट के साथ उचित रूप से आसान किया जा सकता है और कुछ सुंदर सरल कोड - बेशक, आपको कभी-कभी थोड़ा बैंग ऑपरेशन करने की आवश्यकता हो सकती है, लेकिन अधिक से अधिक सेंसर लोग .NET माइक्रो फ्रेमवर्क ड्राइवर प्रदान कर रहे हैं - इसलिए, हार्डवेयर विकास आपके विचार से करीब हो सकता है ...

उम्मीद है कि यह मदद करता है ...

3

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

यदि व्यक्ति आरामदायक या तैयार नहीं है तो उन्हें कहीं भी रखें जहां वे आरामदायक हैं। उन्हें यूजर इंटरफेस पर प्रलेखन या काम करने दें। अगर कंपनी के सभी कामों को निम्न स्तर के काम की आवश्यकता होती है तो इस व्यक्ति को ऐसा करने की ज़रूरत है या कोई और नौकरी मिलनी चाहिए। चीनी कोट नहीं है।

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

0

मैंने एक एसडब्ल्यू इंजीनियर के रूप में शुरू किया, अब मैं एचडब्ल्यू हूं! यह समझना महत्वपूर्ण है कि यह कैसे काम करता है और प्रेरित होने के लिए!

1

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

4

क्यों एम्बेडेड विकास "हार्ड" है:

1) संदर्भ प्रत्येक मशीन अनुदेश के बीच एक अवरोध करने के लिए स्विच कर सकते हैं। चूंकि उच्च स्तरीय भाषा संरचनाएं एकाधिक असेंबली प्रशिक्षकों को मैप कर सकती हैं, यह कोड की एक पंक्ति के भीतर भी हो सकती है, उदा। लंबा var = 0xAAAA5555। यदि किसी इंटरप्ट सेवा दिनचर्या में उपयोग किया जाता है, तो 16 बिट प्रोसेसर var में केवल आधा सेट हो सकता है।

2) सिस्टम में दृश्यता सीमित है। हो सकता है कि आप हाइपरटेम तक आउटपुट न करें जबतक कि आप इसे स्वयं नहीं लिखते। अनुकरणकर्ता हमेशा अच्छी तरह से या लगातार काम नहीं करते हैं (हालांकि वे होने के मुकाबले बेहतर तरीके से होते हैं)। आपको पता होना होगा कि ऑसिलोस्कोप और तर्क विश्लेषकों का उपयोग कैसे करें।

3) संचालन में समय लगता है। उदाहरण के लिए, कहें कि आपका सीरियल ट्रांसमीटर एक बाइट भेजने का समय होने पर सिग्नल करने के लिए बाधा का उपयोग करता है। आप एक ट्रांसमिट बफर में 16 बाइट्स लिख सकते हैं, फिर इंटरप्ट को साफ़ कर सकते हैं और आश्चर्यचकित हो सकते हैं कि आपका संदेश कभी नहीं भेजा गया है। आम तौर पर समय एम्बेडेड प्रोग्रामिंग का एक मुश्किल हिस्सा है।

4) आप सूक्ष्म दौड़ की स्थिति के अधीन हैं जो केवल दुर्लभ होते हैं और डीबग करना बहुत मुश्किल होता है।

5) आपको मैन्युअल को पढ़ना होगा। बहुत। आप इसे मूर्ख बनाकर काम नहीं कर सकते हैं। कभी-कभी 20 चीजों को ठीक करने के लिए सही तरीके से स्थापित किया जाना चाहिए।

6) हार्डवेयर हमेशा काम नहीं करता है या नुकसान पहुंचाता है, और यह पता लगाने में कुछ समय लगता है कि आपने इसे तोड़ दिया है।

7) एम्बेडेड सिस्टम में सॉफ्टवेयर मरम्मत आमतौर पर बहुत महंगी होती है। आप बस एक वेब पेज अपडेट नहीं कर सकते हैं। एक याद डिवाइस पर किए गए किसी भी लाभ को मिटा सकता है।

शायद अधिक हैं लेकिन मुझे यह दौड़ स्थिति हल करने के लिए मिला है ...

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