STM32F4 और HAL


23

इसलिए मैं एसटीएम 32 एफ 407 (मैं एआरएम के लिए नया हूं) के साथ थोड़ी देर से प्रयोग कर रहा हूं और एचएएल पुस्तकालयों का उपयोग करके एक सरल ऐप लिखने का फैसला किया है क्योंकि ऐसा लगता है कि एसटी ने स्टैंडर्ड पेरिफेरल लाइब्रेरीज़ को बंद कर दिया है। तो मेरा सवाल यह है कि एचएएल में क्या बात है? क्या StdPeriph अपना काम नहीं कर रहा था? वे एचएएल के लिए इसे बंद क्यों करेंगे? मेरे लिए ऐसा लगता है कि एचएएल एक पूर्ण गड़बड़ है।

दस्तावेज़ीकरण AWFUL है, कम से कम StdPeriph के लिए एक पूर्ण संदर्भ है जो आसानी से पर्याप्त रूप से व्यवस्थित है जिसे आप चाहते हैं ( http://stm32.kosyak.info/doc/ )। HAL के लिए एक भद्दा PDF ( http://www.st.com/st-web-ui/static/active/jp/resource/technical/document/user_manual/DM00105879.pdf ) है जो प्रतीत होता है कि यादृच्छिक संरचना है। किसी भी अनुभाग को पढ़ना, उदाहरण के लिए एक परिधीय के संबंध में, मैं इसे कॉन्फ़िगर करने और इसे ठीक से अनुकूलित करने की आवश्यकताओं को नहीं समझ सकता। यह किसी ऐसे व्यक्ति के व्यक्तिगत नोट्स की तरह दिखता है जो संदर्भ के बजाय सामान को भूलना नहीं चाहता है।

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


ChibiOS की तरह कुछ आप बेहतर सूट करेगा? उनके पास एक आरटीओएस है लेकिन एक बहुत अच्छा एचएएल है जिसे आप आरटीओएस के बिना उपयोग कर सकते हैं।
इगोरिए

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

यह ebook: leanpub.com/mastering-stm32 नौसिखिया (लेकिन पेशेवर के लिए भी) STB32 दुनिया के लिए एक अच्छा परिचय है।
लोरेंजो मेलैटो

जवाबों:


13

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

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

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

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

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

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

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

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

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

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

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

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

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


अपने स्वयं के पुस्तकालयों को विकसित करने पर महान तर्क, लगभग आश्वस्त और मैं कोशिश करना चाहूंगा कि, आपको क्या लगता है कि मुझे stm32fxx संदर्भ मैनुअल के अलावा अन्य की आवश्यकता होगी? क्या मुझे आर्म कोर मैनुअल भी पढ़ना चाहिए? क्या मैं CMSIS का उपयोग करूंगा? मैं रजिस्टर और मेमोरी कैसे एक्सेस करूंगा? शुरू करने के तरीके पर आप अधिक जानकारी दे सकते हैं या उदाहरण दे सकते हैं
इलेक्ट्रॉन्स

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

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

आपके द्वारा बताए गए अधिक बिंदुओं के लिए धन्यवाद, लेकिन क्या आप मेरे सवाल का जवाब दे सकते हैं, शुरू करने के सर्वोत्तम तरीके पर? रजिस्टर नाम और स्मृति स्थानों के लिए CMSIS और HAL .h फ़ाइलों का उपयोग करना ??
इलेक्ट्रॉन्स

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

14

मैं आपको बता दूं कि हम में से बहुत से लोग HAL पुस्तकालयों के साथ आपके द्वारा की गई निराशा को साझा करते हैं, वे वास्तव में खराब और अस्पष्ट दस्तावेज हैं और अभी भी नए में कई बग हैं।

तो आपके सवाल का जवाब देने के लिए कि एसटी ने एचएएल पर फैसला क्यों किया सरल है:

  1. वे एक हार्डवेयर एब्सट्रैक्शन लेयर बनाना चाहते हैं जिसका मतलब है कि सादे अंग्रेजी में वे सॉफ्टवेयर डेवलपमेंट और कोड को माइक्रो-कंट्रोलर से स्वतंत्र होना चाहते हैं, इसलिए यदि आप stm32f4 के लिए आज एक कोड लिखते हैं और आपको कुछ वर्षों के बाद st3232f7 पर माइग्रेट करने की आवश्यकता होती है आसान होगा और कोड अत्यधिक मॉड्यूलर होगा।

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

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

  4. एआरएम कोर शांत जटिल है, इसलिए पुराने तरीके जिन्हें हमने 8-बिट माइक्रो कंट्रोलर पर इस्तेमाल किया है जैसे रजिस्टरों को सीधे हैंडल करना (असेंबली फैशन में सी लिखना) संभव नहीं है, यह समय लेने वाला है और जटिल आर्किटेक्चर के कारण कोड को बनाए रखने के लिए कठिन बनाता है (सबसे अच्छा चेक करें) उदाहरण के लिए घड़ी की सेटिंग)


6
यह सब बहुत ही समझ में आता है, हालांकि ये सभी StdPeriph पर भी लागू होते हैं, है न? मेरा मतलब है, यह पहले से ही एक हार्डवेयर अमूर्त पुस्तकालय है, तो पुराने को सुधारने के बजाय एक नया बनाने में क्या बात है? मैं वास्तव में उत्सुक हूं, मैं एआरएम के लिए बहुत नया हूं, मैं कई सालों से PIC का उपयोग कर रहा हूं।
जॉन

सीएमएसआईएस के अनुरूप पुस्तकालयों के लिए और भी अधिक
स्कॉट

1
@ जॉन, जहां तक ​​मैं समझता हूं कि एचएएल मानक पुस्तकालयों की तुलना में अधिक अमूर्त और कम हार्डवेयर पर निर्भर है।
इलेक्ट्रॉन्स

12

मुझे पता है कि यह लंबा और विचार करने वाला है लेकिन जैसा कि हमने अभी (सफलतापूर्वक) एचएएल का उपयोग करके हमारे नए उत्पाद को जारी किया है, मुझे लगता है कि यह विचार करने योग्य है। इसके अलावा, मैं एसटी के लिए काम नहीं करता, मुझे एचएएल के हर बिट से नफरत है, लगभग StdPeriph के साथ परियोजना को फिर से शुरू किया, मैंने दर्द महसूस किया है - लेकिन अब मैं समझता हूं कि क्यों।

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

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

यह अच्छा है या बुरा यह अप्रासंगिक है। बस हो जाता है। दरअसल, यह सॉफ्टवेयर की दुनिया में भी हुआ, एक से अधिक बार। 2000 में वेब बूम ने PHP / MySQL newbies को आकर्षित किया - उन्हें बताएं कि सीपीयू में रजिस्टर हैं, वे जवाब देंगे "मैं लिनक्स का उपयोग कर रहा हूं, इसलिए मेरे ओएस में कोई रजिस्ट्री नहीं है"। इससे पहले, संरक्षित मोड में चल रहे बहु-उपयोगकर्ता OS ने आलसी डेवलपर्स को अपने पूरे करियर में कभी भी ISR स्थापित करने और ठीक होने की अनुमति नहीं दी । पहले भी, कीबोर्ड और स्क्रीन से बने कार्ड पंचर और प्रिंटर निर्माता पागल हो जाते हैं।

और हाँ, वर्तमान रुझान मुझे व्यक्तिगत रूप से दुखी करते हैं, क्योंकि मैं अज्ञानी डेवलपर्स को नवीनतम चमकदार तकनीक के साथ विस्मय में देखता हूं, जबकि उन्हें इतिहास के साथ जोड़ने में पूरी तरह से असमर्थ रहा हूं। जब मैं 2015 में WebGL के साथ जावास्क्रिप्ट में एक गेम को कोडिंग करते हुए देखता हूं, तो मैं चिल्लाना चाहता हूं कि "कुछ नया नहीं है! मैंने 1995 में C ++ और 3Dfx SDK के साथ भी ऐसा ही किया था!"। जो कहानी नहीं बताती है वह यह है कि उसका खेल मेरे मोबाइल फोन पर चलता है, जबकि खान को गेमर पीसी (और इंस्टॉलर की जरूरत है, और मैं वेब द्वारा अपडेट को धक्का नहीं दे सकता)। सच्चाई यह है कि, वह एक महीने में खेल विकसित कर सकता है, जहां मैंने छह या बारह में ऐसा ही किया था।

जाहिर है, न तो एसटी या टीआई या इंटेल या जो भी चिप्स बनाती है, वह टर्न मिस करना चाहती है। और वे सही हैं। एचएएल एसटी की प्रतिक्रिया है, और वास्तव में काफी ध्वनि है, न केवल व्यापार या विपणन पक्ष पर, बल्कि इंजीनियरिंग की तरफ भी। इसका कारण ध्वनि है जो नाम में निहित है:

हार्डवेयर अमूर्त परत

अगर कुछ और है, तो आपको यही याद रखना चाहिए। HAL हार्डवेयर से दूर जाने का प्रयास है। यह अच्छी इंजीनियरिंग है क्योंकि यह हमें विवरणों से कार्यक्षमता को कम करने की अनुमति देती है। लेयरिंग वह है जो जटिल कार्यक्रमों को विकसित करने की अनुमति देता है - हार्डवेयर के नीचे एक दूसरे के ऊपर एक अमूर्त। अमूर्तता वास्तव में सबसे शक्तिशाली उपकरण है जिसे हमें जटिलता का प्रबंधन करना है । मुझे इस बात पर बहुत संदेह है कि इस ग्रह पर कोई विशिष्ट CPU के लिए असेंबली में वेब ब्राउज़र प्रोग्राम कर पाएगा।

सांस्कृतिक बदलाव वास्तव में पचाने में मुश्किल है, लेकिन जैसा कि मुझे लगता है कि एक को वेब अनुप्रयोगों को विकसित करने के लिए नथुने के कला प्रोग्रामिंग को पढ़ने की आवश्यकता नहीं है , ईई दुनिया को स्वीकार करना चाहिए कि नए लोग हैं (और कर सकते हैं) एम्बेडेड कोड है! कमबख्त पवित्र संदर्भ मैनुअल को पढ़े बिना ।

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

अपने रीडिंग और प्रयोगों के बीच, बस एचएएल के साथ जाएं। नया MCU? कोई बात नहीं। नई MCU लाइन? साथ ही कोई समस्या नहीं है (मैंने CubeMX के साथ सिर्फ एक दिन में एक STM32F4 न्यूक्लियो पर एक परीक्षण को कोडित किया, और फिर बस इसे हमारे डिवाइस पर पोर्ट किया ... यह सिर्फ सही लगा )। यूनिट परीक्षणों के लिए मॉकिंग? कोई बात नहीं। सूची आगे बढ़ती है, क्योंकि अमूर्त अच्छा है।

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


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

@ जॉन: एचएएल कोई "वास्तविकता" नहीं छिपाता है। आपके लिए ट्वीक करने के लिए सब कुछ है। सभी भाग वैकल्पिक हैं - जैसे आप रजिस्टरों तक पहुँचने के लिए केवल मैक्रोज़ का उपयोग करना चाह सकते हैं, या केवल एक विशिष्ट ड्राइवर (जैसे I2C) या ISRs और घड़ी कॉन्फ़िगरेशन सहित सब कुछ। आपकी पंसद। हालाँकि, मैं मानता हूँ कि प्रलेखन बहुत कुछ चूसता है। (मैंने एसटी को बताया है और उन्होंने वादा किया कि वे इस पर काम कर रहे हैं BTW)

हम नए उपकरणों के साथ भी ऐसा ही दोहरा रहे हैं। क्योंकि नए उपकरण काम को आसान और तेज़ बनाने का वादा करते हैं, इस प्रकार लागत प्रभावी होती है। लेकिन हम अब भी वही कर रहे हैं, क्योंकि मनुष्य अभी भी वही है, भले ही वह 2095 या 1995 हो। यदि हमारे पास नए उपकरण हैं या हमारे पहले से परिचित उपकरणों के साथ रहना पसंद है।
जॉनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.