ग्रहण + जीएनयू एआरएम + एसटीएम 32 - एचएएल या एसपीएल


10

मैं एआरएम विकास (एवीआर के 2 साल बाद) के साथ शुरू करने जा रहा हूं और उस पर stm32f4 माइक्रोप्रोसेसर के साथ एसटीएम डिस्कवरी बोर्ड को उठाया है।

मैंने ग्रहण + एआरएम जीसीसी के साथ जाने का फैसला किया है क्योंकि मुझे केइल पर कोड की सीमा पसंद नहीं है और मेरे पास सशुल्क संस्करण प्राप्त करने के लिए पैसे नहीं हैं।

ट्यूटोरियल के बाद मैंने gcc ARM टूल के साथ ग्रहण स्थापित किया है + Openocd + बर्तन बनाना आदि।

मेरा सवाल 'संकुल' प्लगइन के बारे में है। हर शुरुआत की तरह, मैं उलझन में हूँ कि क्या नए एसटीएम एचएएल या पुराने एसपीएल का उपयोग किया जाए।

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

इस समझ के साथ मैं HAL का उपयोग करने के बजाय चीजों को बेहतर ढंग से समझने के लिए SPL के साथ रहना चाहूंगा।

क्या मैं जानना चाहता हूं कि क्या एसटीएम के लिए पैकेज का उपयोग करने से मुझे एचएएल का उपयोग करने के लिए मजबूर होना पड़ता है? यदि हां, तो क्या कोई मुझे बता सकता है कि अपने सेटअप के साथ SPL का उपयोग कैसे करें?


1
"ट्यूटोरियल" थोड़ा अस्पष्ट है, इसलिए मुझे "पैकेज 'प्लगइन" के बारे में नहीं पता है और मुझे नहीं पता कि एसपीएल (एसटीएम परिधीय पुस्तकालय?) या एसपीसीएल क्या है। शायद मैं सिर्फ इस सवाल के लिए योग्य नहीं हूं, लेकिन STM32 के साथ दो साल से अधिक समय तक काम करने से अब मुझे आश्चर्य हुआ ...
शस्त्रागार

2
एसपीएल स्टैंडर्ड पेरिफेरल लाइब्रेरी है , दूसरी तरफ मैं एसपीसीएल को भी नहीं जानता।
बेन्स कौलिक्स

2
आज STM पसंदीदा और समर्थित तरीका STM32CubeMX का उपयोग करना है, जो HAL पर आधारित कोड जनरेट कर रहा है। और मुझे मानना ​​होगा कि यह बहुत आसान है, हालांकि मैं स्वचालित साधनों का प्रशंसक नहीं हूं क्योंकि वे महत्वपूर्ण सामान छिपाते हैं ..
यूजीन श्री।

1
यद्यपि यह ज्यादातर एसटीएम 32 प्रोसेसर एसपीएल संस्करणों के साथ संगत होना चाहिए, मेरा मानना ​​है कि एसटी एसटीएमएल एसटी 32 एफ 7 के लिए नहीं है।
टुट

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

जवाबों:


6

एसपीएल, जैसा कि मैं देख रहा हूं, आपके द्वारा उपयोग किए जा रहे आईडीई से कोई लेना-देना नहीं है। आप बस अपनी परियोजना में संबंधित मॉड्यूल (जैसे stmf4xx_dma.c और stmf4xx_dma.h) को शामिल कर सकते हैं। .c और .h फ़ाइलों में उजागर (और बहुत अच्छी तरह से वर्णित) कार्यों का उपयोग करें। वास्तव में मैं सिर्फ विंडोज़ कमांड प्रॉम्प्ट का उपयोग करके gcc, openocd और SPL के साथ stmf411 नाभिक पर सीख रहा हूं; कोई आईडीई नहीं। ग्रहण में पैकेज शायद आपको एचएएल का उपयोग करने के लिए मजबूर करेंगे (चूंकि ग्रहण के लिए डाउनलोड किए गए 'पैकेज' फ़ोल्डर के अंदर, मैं केवल एचएएल मॉड्यूल देखता हूं)।

एचएएल खुद आईएमओ जरूरत से ज्यादा स्तरित है। जबकि रजिस्टरों तक पहुंच सीधे थकाऊ होती है और शायद ही पढ़ने योग्य हो। एसपीएल सिर्फ सही लगता है। clive1, st.com फोरम पर गुरु, HAL पर SPL को भी प्राथमिकता देता है। यहाँ उस मंच पर मेरा सवाल है ... मददगार हो सकता है।

न्यूक्लियो stmf411 पर USART के साथ मदद की आवश्यकता है


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

1

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

GPIO_A->PIN &= ~(1 << 15);

सेवा

LED_On(1)

एलईडी चालू करने के लिए और जानना चाहते हैं कि वे मूल रूप से क्या कर रहे हैं। फिर यदि आपके पास इस समूह में है और आपके पास अपने MCU के संदर्भ मैनुअल और प्रोग्रामिंग मैनुअल को पढ़ने के लिए पर्याप्त समय है तो शायद रजिस्टर प्रोग्रामिंग एक और विकल्प है। लेकिन अगर आप केवल 2 से ऊपर के विकल्प के बीच फैसला करना चाहते हैं: ST के समर्थन के कारण HAL का बेहतर भविष्य है लेकिन SPL एक नए स्टार्टर के लिए समझने का एक आसान तरीका है। शायद यह http://www.eevblog.com/forum/microcontrollers/stm32-and-their-hal-live/ की मदद कर सकता है


1
लिंक के लिए धन्यवाद, दिलचस्प पढ़ें! आप सही हैं, शुरुआती के लिए एसपीएल सीखने के क्रम में बेहतर तरीका लगता है (और यही तरीका मैंने चुना भी है)। आपके उत्तर में Btw यह LED_Off होना चाहिए
अंकित

1

इस IDE को प्राप्त करें: STM32 के लिए सिस्टम कार्यक्षेत्र - यह मुफ़्त है, जो ग्रहण पर आधारित है और इसमें एक पैकेज में आर्म-जीसी और ओपनकाड दोनों हैं।

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

  • एसपीएल: पुराना, बोझिल, कोई अतिरिक्त रैम उपयोग, लचीला
  • एचएएल: वास्तविक, बोझिल, अतिरिक्त राम उपयोग, लचीला नहीं
  • LL: वास्तविक, ligtweigth, कोई अतिरिक्त रैम उपयोग, लचीला

मेरे ग्रेड के लिए संक्षिप्त विवरण:

  • बोझिल - बड़े फ़्लैश उपयोग, परिधि के साथ काम के लिए "सुपर" सार्वभौमिक कार्य
  • अतिरिक्त राम का उपयोग - यह एचएएल के बारे में है, इसमें रैम स्थित परिधीय अवस्था की नकल है और हर जगह और हर समय इसका उपयोग किया जाता है
  • लचीला नहीं - और फिर से एचएएल के बारे में, इसमें विभेदक मामलों के लिए बहुत सारे कार्य हैं, लेकिन! उनमें से अधिकांश वास्तविक उपकरणों के लिए उपयोग करने योग्य नहीं हैं (लोग usart से बाइट प्राप्त करने के लिए HAL को फिर से संगठित करने की कोशिश करते हैं >_<, TIM + DMA के लिए सभी कार्य TIM रजिस्टर को फिर से लिखने और किसी अन्य के लिए लागू नहीं किए गए हैं ...)

थोड़ा पुनर्वास HAL के लिए: यह नौसिखिया के लिए एक बड़ा फायदा है - यह STMCubeMX द्वारा दबाया गया है।

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

मैं libopencm3 के बारे में भूल गया - यह वैकल्पिक पुस्तकालय है। मैंने इसका उपयोग नहीं किया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.