मैं लिनक्स पर STM32 की खोज के लिए कैसे विकसित होऊं? [बन्द है]


26

मेरे पास एक STM32 डिस्कवरी बोर्ड है और इसे लिनक्स पर प्रोग्राम करने में सक्षम होना चाहूंगा।

ऐसा करने का सबसे आसान तरीका क्या है?


मैंने LinuxhUbuntu पर कोडसौरसरी को स्थापित किया और थोड़ा सा स्टैक्ड: PATH ठीक है, लेकिन प्रोग्राम डैसबोर्ड या सॉफ्टवेयर सेंटर पर दिखाई नहीं देता है। शायद यह उबंटू है मैं किसी भी तरह बदल जाएगा लेकिन पता नहीं कैसे। यदि आपके पास एक विचार है, तो कृपया लिखें। धन्यवाद। टॉम
टॉम रार्ट

1
@TomRitzmann PeterJ सही है, कृपया प्रश्न पूछने के लिए उत्तर का उपयोग न करें। इसके अलावा, सॉफ्टवेयर समस्याएँ यहाँ विषय पर हैं, SuperUser सही जगह है।
clabacchio

जवाबों:


12

STM32 डिस्कवरी बोर्ड को प्रोग्राम करने और डीबग करने का एक आसान तरीका (या STM32 जो ST-Link प्रोग्रामर का उपयोग कर रहा है) 'स्टिंकल' प्रोजेक्ट https://github.com/texane/stlink का उपयोग करना है (हालाँकि OpenOCD भी लोकप्रिय लगता है)

एसटी न्यूक्लियो बोर्ड भी USB फ्लैश डिवाइस के रूप में दिखाई देते हैं, इसलिए ज़रूरत भी नहीं है stlink- बस उन पर फ़ाइल कॉपी करें।

लिनक्स पर STM32 खोज के लिए विकसित करने के लिए कुछ अच्छे पृष्ठ हैं, जैसे http://gpio.kaltpost.de/?page_id=131 और http://torrentula.to.funpic.de/2012/03/22/ सेटिंग-अप-the-stm32f4-arm-development-toolchain / और http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/

हालाँकि मुझे आखिरी लिंक सबसे उपयोगी लगी। यह दर्शाता है कि एसटी की एसटीएम 32 परियोजनाओं का निर्माण कैसे किया जाता है - एकमात्र बदलाव उनके मेकफाइल को जोड़ना है, जो एक संपूर्ण समाधान की तरह लगता है।

उबंटू के हालिया संस्करणों पर, एक पैकेज है जिसे आप स्थापित कर सकते हैं जिसमें एक एआरएम संकलक होता है:

sudo apt-get install gcc-arm-none-eabi

ध्यान दें कि प्रोसेसर थोड़ा अलग हैं। STM32F0..4 सभी को अलग-अलग संकलक झंडे की आवश्यकता होगी, और लिंकर स्क्रिप्ट प्रत्येक के लिए थोड़ा अलग होगी (हालांकि केवल रैम और फ्लैश के आकार के कारण वास्तव में)।

संपादित करें: यदि आप वास्तव में जल्दी शुरू करना चाहते हैं तो आप http://www.espruino.com पर भी देख सकते हैं । यह एक जावास्क्रिप्ट दुभाषिया है, जो एसटीएम 32 पर ही चलता है, इसलिए एक बार जब आप 'स्टिंकल' स्थापित कर लेते हैं, तो आप बोर्ड पर फ्लैश कर सकते हैं, आप बस उस साइट से एक छवि डाउनलोड कर सकते हैं, उस पर फ्लैश कर सकते हैं, और फिर एक टर्मिनल एप्लिकेशन से कनेक्ट कर सकते हैं और प्रोग्रामिंग शुरू करें।


यहाँ OpenOCD द्वारा समर्थित STM32x डिस्कवरी बोर्डों की एक सूची दी गई है: github.com/openrisc/openOCD/tree/master/tcl/board (अपने ब्राउज़र का उपयोग करके "खोज के लिए खोज")
rbaleksarar

8

यदि आप GUI का उपयोग करने के बजाय पाठ संपादकों और Makefiles में अधिक हैं, तो आप कर सकते हैं:

  • आर्मच-कोई-एग्बी-जीसीसी प्रदान करने वाला एक टूलकिन स्थापित करें। Archlinux पर, आपको समुदाय से सभी समुदाय / आर्म-नोनी-एग्बी-बिनुटिल्स, आर्म-नोनी-एग्बी-जीसीसी और आर्म-नोनी-एगबी-न्यूलिब (और आर्म-नोइंग-एग्बी-जीडीबी) की आवश्यकता होगी। रेपो, या https://launchpad.net/gcc-arm-embedded (जो आर्चलिनक्स 'AUR में gcc-arm-none-eabi-bin के रूप में पाया जा सकता है)।
  • हार्डवेयर का उपयोग करने के लिए आप किस लाइब्रेरी का उपयोग करना चाहते हैं, यह तय करें। मेरे सिर के ऊपर से, तीन सामान्य विकल्प हैं:
    1. कोई नहीं। आप स्क्रैच से सब कुछ लिखते हैं। शुरुआती लोगों के लिए अनुशंसित नहीं।
    2. STM32Cube : एसटी द्वारा स्वयं प्रदान की गई एसी देयता
    3. Libopencm3 : विभिन्न विक्रेताओं द्वारा काफी कॉर्टेक्स-एम कोर का समर्थन करने वाला एक ओपन सोर्स लिब।
    4. STM32PLUS : A C ++ लिबास । हालाँकि, मैं इसके बारे में अधिक नहीं कह सकता क्योंकि मैंने इसका परीक्षण नहीं किया है।
  • अपना पहला प्रोजेक्ट बनाएं या कॉपी करें।
    1. बिना किसी परिवाद के, अपना खुद का मेकफाइल, लिंकर स्क्रिप्ट, स्टार्टअप कोड लिखें और एक सरल मेकफाइल चलाएं। सौभाग्य ;)
    2. STM32Cube के साथ: STM32CubeMX डाउनलोड और इंस्टॉल करें । एक बार * .exe फ़ाइल अनजिप करने के बाद वास्तव में सिर्फ एक जावा फ़ाइल होती है और आप इसे "java -jar filename.exe" का उपयोग करके चला सकते हैं। स्थापना को sudo की आवश्यकता है। जब किया जाता है, तो एक परियोजना बनाएं और "Truestudio" के लिए कोड उत्पन्न करें। यह आपको एक लिंकर स्क्रिप्ट, स्टार्टअप कोड, कुछ तुच्छ मुख्य-समारोह (और अगर मुझे सही ढंग से याद है तो मेकफाइल) के साथ एक प्रारंभिक बिंदु देना चाहिए। वास्तव में, भले ही आप STM32Cube lib का उपयोग न करें, STM32CubeMX क्लॉक ट्री के मानों की गणना करने और यदि आप जिस तरह से सोचते हैं, उस चिप को कॉन्फ़िगर कर सकते हैं, तो इसे सत्यापित करने के लिए महान है।
    3. Libopencm3 के साथ: libopencm3 उदाहरण प्राप्त करें , अपने बोर्ड से मेल खाता एक उदाहरण ढूंढें और इसे एक प्रारंभिक बिंदु के रूप में उपयोग करें। उदाहरणों को चलाने के लिए तैयार होना चाहिए। बस "बनाओ" टाइप करें। फिर अपने स्वयं के विकास के लिए एक प्रारंभिक बिंदु के रूप में उस उदाहरण का उपयोग करें।
    4. STM32Plus के साथ: मुझे नहीं पता। माफ़ कीजिये।
  • अपने प्रोजेक्ट को बोर्ड तक पहुंचाएं। या तो उपयोग करें

    1. सीरियल बूटलोडर: stm32flash शानदार काम करता है।
    2. डीबग पोर्ट: आप डिबगिंग एडेप्टर से बोर्ड पर उपलब्ध कराने के लिए ओपनकाड का उपयोग कर सकते हैं । Openocd महान है, लेकिन प्रलेखन हमेशा सबसे अच्छा नहीं होता है। जब संदेह हो, तो Openocd irc चैनल से जुड़ें। वहां के लोग वाकई बहुत अच्छे हैं।
  • एक पाठ संपादक में कोड और कमांड लाइन उपकरण का उपयोग करें। यह ट्यूटोरियल बहुत सारी युक्तियां प्रदान करेगा।

का आनंद लें


5

ग्रहण , जीसीसी और ओपनओसीडी एक टूलकिन है। यह EMCU-IT द्वारा अनुशंसित है और यहां अतिरिक्त जानकारी है । वे पृष्ठ भी FreeRTOS.org जैसे RTOS का उपयोग करने की सलाह देते हैं , लेकिन यह आपके ऊपर है।

और लिनक्स में एसटीएम 32 उदाहरणों को संकलित करने में मदद के लिए यहां जाएं । यह लिंक उन उदाहरणों के लिए एक मेकफाइल को इंगित करता है, जिनके साथ इसे लागू किया जा सकता है

git clone git://github.com/snowcap-electronics/stm32-examples.git
cd stm32-examples
wget http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32_f105-07_f2xx_usb-host-device_lib.zip
unzip stm32_f105-07_f2xx_usb-host-device_lib.zip

कुछ मामूली कोड फिक्स भी प्रलेखित हैं, लेकिन अधिकांश परियोजना के साथ काम करना चाहिए

make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-

1
धन्यवाद! मैंने पहले उन लिंक को नहीं देखा था। मुझे आश्चर्य है कि कहीं अधिक निश्चित मार्गदर्शिका नहीं है हालांकि अलग-अलग खोज बोर्डों के पास अलग-अलग बिल्ड फ़्लैग हैं।
गॉर्डन विलियम्स

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

1

मुझे https://github.com/JorgeAparicio/bareCortexM (लिंक ब्लॉग पोस्ट भी देखें) के साथ सफलता मिली है । मुझे पता है कि मैं कोड के माध्यम से सिंगल-स्टेप कर सकता हूं या अपने कोड में डिबगिंग स्टेटमेंट डालने या चिप के अंदर क्या चल रहा है, इसका अनुमान लगाने के बजाय डिवाइस मेमोरी को ब्राउज कर सकता हूं।

नंगे करंटेक्सम प्रोजेक्ट एक ओएस के बिना कॉर्टेक्स एम श्रृंखला, विशेष रूप से एसटीएम 32, सी ++ के साथ विकसित करने के लिए एक ग्रहण टेम्पलेट है। यह Openocd, gcc का उपयोग करने के लिए कॉन्फ़िगर किया गया है, और इसमें कुछ खोज बोर्डों सहित कई लक्ष्यों को फ्लैश और डीबग करने के लिए स्क्रिप्ट है। निर्देशों का पालन करके और अनुशंसित ग्रहण प्लगइन्स स्थापित करके मैं Ubuntu पर अपने STM32VLDISCOVERY का उपयोग करने में सक्षम था।

जैसा कि सिफारिश की गई है कि मैंने ग्रहण टेम्पलेट को STM32 हार्डवेयर के लिए उसी लेखक के libstm32pp C ++ टेम्पलेट लाइब्रेरी के साथ जोड़ दिया है। libstm32pp CMSIS के लिए एक आश्चर्यजनक रूप से पूरा प्रतिस्थापन और आपको इन बातों का कहना है कि देता है कि एक प्रोग्रामिंग मॉडल के साथ अक्सर आलोचना की STM32 ड्राइवरों प्रदान करता है PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)और PINB::setLow()या PINB::setHigh()सी ++ टेम्पलेट्स के कारण सभी ज्यादातर संकलित इनलाइन। सेटअप बहुत अच्छा है।


मैं अब बिना शर्त के कॉन्ट्रोक्सएम की सिफारिश नहीं करता; andmbrown.me.uk/wk पर stm32plus की
joeforker

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

0

शायद यह किसी के लिए उपयोगी होगा: मेरा लघु लेख (रूसी पर) और सरल परियोजना । सभी लिनक्स में और अनावश्यक चीजों के बिना जैसे ग्रहण।

पुस्तकालय एसटी वेबसाइट, मेकफाइल - इंटरनेट में कई जीपीएल उदाहरणों में से एक से लिया गया था।


0

यहां लिनक्स या किसी अन्य OS के तहत STM32F0 डिस्कवरी बोर्ड का उपयोग करते हुए त्वरित शुरुआत के लिए एक छोटी लेकिन अभिनव टेम्पलेट परियोजना है:

https://github.com/dobromyslov/stm32f0-chibios-template

ध्यान दें कि परियोजना ChibiOS का उपयोग करती है - एक स्वतंत्र और खुला स्रोत वास्तविक समय ऑपरेटिंग सिस्टम ताकि यह खरोंच से बिल्कुल नंगे हड्डी कार्यान्वयन न हो।


0

मैं सभी सामान्य linux dev टूल्स के साथ vim और arm-none-eabi-gcc का उपयोग करता हूं। लिनक्स मेरी राय में अभी तक एम्बेडेड काम के लिए बेहतर देव वातावरण है। डिबगिंग के लिए मैं स्टिंकल और आर्म-एनी-ईबी-जीडीबी का उपयोग करता हूं।


0

पर विचार करें platformio । यदि आप कमांड-लाइन के साथ सभी आरामदायक हैं, तो आप पाएंगे कि platformio काफी विकास प्रक्रिया को आसान बनाता है। pio initएक परियोजना स्थापित करने के लिए इस्तेमाल किया जा सकता है। pio runसंकलन करने के लिए टूलचिन का लाभ उठाता है। pio run --target uploadडिवाइस को कोड भेजता है। प्लेटफ़ॉर्मियो टूलचिन घटकों, पुस्तकालयों आदि को आवश्यकतानुसार डाउनलोड करने का ध्यान रखता है।

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