मैक ओएस पर STM32

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

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

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

और जल्द ही मैंने STM32F407 डिबग बोर्ड के लिए STM32F4 डिस्कवरी किट खरीदी

पहले दिन, मैं उसके साथ घर के चारों ओर भाग गया और एल ई डी ब्लिंकिंग और काम कर रहे गोरोस्कोप पर आनन्दित हुआ। लेकिन खुद कार्यक्रमों को लिखना शुरू करने का समय आ गया है। 30 मिनट के गोग्लिंग के बाद, मुझे एहसास हुआ कि विंडोज़ के तहत इंटरनेट काम पर वर्णित 95% समाधान, और लिनक्स के भाग्यशाली मालिक और मैक ओएस जंगल में चलते हैं। मैंने समाधान की तलाश में 3 दिन बिताए और परिणामस्वरूप मैक ओएस के लिए एसटीएम 32 के तहत प्रोग्रामिंग शुरू करने के लिए हमारे पास एक पूर्ण मैनुअल है।

आईडीई

सबसे पहले आपको विकास का माहौल बनाने की जरूरत है। हमारे मामले में, यह ग्रहण (इंडिगो आर ग्रहण आईडीई सी / सी ++ डेवलपर्स मैक कोको 64-बिट के लिए) होगा। लिंक ग्रहण डाउनलोड और स्थापित करें का पालन करें।

जीएनयू एआरएम टूलचैन

इसे आधिकारिक वेबसाइट http://www.gnuarm.com/files.html से डाउनलोड किया जा सकता है। लेकिन किसी कारण से, जब हाथ-एल्फ-जीसीसी या आर्म-एलफ-जी ++ शुरू करने की कोशिश की जाती है , तो एक त्रुटि होती है - निष्पादन योग्य में खराब सीपीयू प्रकार । क्यों? मैंने अभी तक इसका पता नहीं लगाया है। इसलिए, मैं अपने कांटा भंडार हाथ का संदर्भ देता हूं।

चलो इसे अपवित्र करें - git clone github.com/jsnyder/arm-eabi-toolchain.git
अब आपको सभी आवश्यक पैकेजों को स्थापित करने की आवश्यकता है - brew install mpfr gmp libmpc texinfo
अगला, डिफ्लेटेड डायरेक्टरी - cd arm-eabi-toolchain
और करें:
mkdir -p $ HOME / arm-cs- टूल्स / बिन
PATH = $ HOME / arm-cs-tools / bin: $ PATH निर्यात करें
CC = क्लैंग क्रॉस-बिनुटिल्स क्रॉस-जीसीसी क्रॉस-जी ++ ++-newlib बनाते हैं
क्रॉस-जीडीबी बनाएं
PATH = $ HOME / arm-cs-tools / bin: $ PATH निर्यात करें
साफ करो

ST-लिंक

हम यहां डाउनलोड और इंस्टॉल करने के लिए जाते हैं जैसा कि README में लिखा गया है। यहां आप ST-LINK डीबगर पर पढ़ सकते हैं।

समायोजन

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

अब हम अपनी जरूरत का प्रोजेक्ट बना सकते हैं।
फ़ाइल पर जाएं -> नया -> C ++ प्रोजेक्टनिष्पादन योग्य क्रॉस कंपाइल प्रोजेक्ट चुनें , इसे एक नाम दें और समाप्त करें पर क्लिक करें

अब हमारे पास एक खाली परियोजना है और इसे कॉन्फ़िगर करने की आवश्यकता है।
हमारी परियोजना का चयन करें, राइट-क्लिक करें और गुण -> C / C ++ बिल्ड -> सेटिंग्स पर जाएं
क्रॉस जीसीसी असेंबलर में -> जनरल -> असेंबलर झंडे हम लिखते हैं -मथंब -mpu = कॉर्टेक्स-एम 4
क्रॉस जीसीसी कंपाइलर में -> विविध -> अन्य झंडे लिखने -c -mthumb -mcpu = प्रांतस्था-एम 4
क्रॉस जी ++ कंपाइलर में -> विविध -> अन्य झंडे लिखने -c -mthumb -mcpu = प्रांतस्था-एम 4
क्रॉस जीसीसी लिंकर में -> विविध -> लिंकर झंडे जो हम लिखते हैं:
-T "$ {ProjDirPath} /stm32_flash.ld" -mthumb -mcpu = cortex-m4 -Wl, -Map = linker.map -Wl, -cref -Wl, - जीसी-सेक्शन

संकलन के बाद अब हमें सही रूप में बाइनरी फ़ाइल मिलती है। ऐसा करने के लिए, सेटिंग्स में वहीं, बिल्ड स्टेप्स टैब चुनें और कमांड फील्ड में लिखें
arm-none-eabi-objcopy -I ihex "$ {ProjName}" "$ {ProjName} .ihex"

आधार परियोजना

यहां हम मूल प्रोजेक्ट डाउनलोड करते हैं। यह डिबग बोर्ड को एल ई डी ब्लिंक करने में सक्षम होने का वर्णन करता है।
आप डाउनलोड करने और एक ग्रहण परियोजना में सभी फ़ाइलों को डाल दिया। आपको कनेक्टेड हेडर के लिए पथ निर्दिष्ट करना होगा। फिर से, गुण -> C / C ++ बिल्ड -> सेटिंग पर जाएं।
यहां क्रॉस जीसीसी कंपाइलर और क्रॉस जी ++ कंपाइलर शामिल हैं जिसमें हम शामिल हैं
"$ {कार्यक्षेत्र_लोक: / $ {प्रोज्नम} / inc / STM32F4xx_StdPeriph_Driver / inc}"
"$ {कार्यक्षेत्र_लोक: / $ {प्रोज्नम} / inc / STM32F4xx_StdPeriph_Driver / src}"
"$ {कार्यक्षेत्र_लोक: / $ {प्रोजनेम} / inc / CMSIS}"
"$ {कार्यक्षेत्र_लोक: / $ {प्रोजनेम} / inc / STM32F4xx}"
"$ {कार्यक्षेत्र_लोक: / $ {प्रोजनेम} / inc}"
और ठीक पर क्लिक करें।

चलो चलते हैं

सब कुछ पसंद है। मैंने सेंट-लिंक और जीडीबी को ग्रहण से नहीं जोड़ा। इसलिए, मैं दिखाऊंगा कि कंसोल से सब कुछ कैसे किया जाता है।

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

हम कंसोल खोलते हैं (यह बेहतर है)। पहले टैब में, सेंट-लिंक चलाएं स्थापना के बाद, यह विश्व स्तर पर उपलब्ध होना चाहिए।
parikmaher कहते हैं: सेंट-उपयोग

2013-12-05T22: 48: 22 INFO src / stlink-common.c: डिवाइस पैरामीटर लोड हो रहा है ...
2013-12-05T22: 48: 22 INFO src / stlink-common.c: डिवाइस कनेक्टेड है: F4 डिवाइस, आईडी 0x10016413
2013-12-05T22: 48: 22 INFO src / stlink-common.c: SRAM आकार: 0x30000 बाइट्स (192 KiB), फ्लैश: 0x100000 बाइट्स (1024 KiB) 16384 के पृष्ठ के बाइट्स में
चिप आईडी 00000413 है, कोर आईडी 2ba01477 है।
लक्ष्य वोल्टेज 2879 mV है।
* 4242 पर सुन रहा है ...


हम देखते हैं कि डिवाइस का पता कैसे लगाया जाता है और प्रोसेसर को 4242 पोर्ट पर लटका दिया जाता है।

अगले टैब में, पहले से स्थापित आर्म-नो-ईबी-जीडीबी चलाएं
parikmaher का कहना है: हाथ-कोई नहीं, ईबी-जीडीबी

जीएनयू जीडीबी (32-बिट एआरएम ईएबी टूलचेन जेबीएस -2016.05-23-v2013.05-1-gd66a29f) 7.4.50.20120716-cvs
कॉपीराइट © 2012 फ्री सॉफ्टवेयर फाउंडेशन, इंक।
लाइसेंस GPLv3 +: GNU GPL संस्करण 3 या बाद में < gnu.org/licenses/gpl.html >
यह मुफ्त सॉफ्टवेयर है: आप इसे बदलने और पुनर्वितरित करने के लिए स्वतंत्र हैं।
कानून द्वारा अनुमत सीमा तक कोई वारंटी नहीं है। टाइप करें "शो कॉपी"
और विवरण के लिए "वारंटी दिखाएं"।
इस GDB को "--host = x86_64-apple-darwin12.5.0 --target = arm-none-eabi" के रूप में कॉन्फ़िगर किया गया था।
बग रिपोर्टिंग निर्देशों के लिए, कृपया देखें:
< github.com/jsnyder/arm-eabi-toolchain >
(GDB)


सब कुछ महान है। अब आपको हमारे डिवाइस से कनेक्ट करने की आवश्यकता है। आपको लक्ष्य दूरस्थ कमांड चलाने की आवश्यकता है : 4242
(gdb) लक्ष्य दूरस्थ: 4242
रिमोट डिबगिंग का उपयोग कर: 4242
0x08000b70 में ?? ()


अगले टैब में जहां सेंट-लिंक चल रहा है, हमें जीडीबी कनेक्शन के बारे में जानकारी देखनी चाहिए
KARL - 0x03 के रूप में वापस पढ़ना चाहिए, न कि 60 02 00 00
GDB जुड़ा।


खैर, आखिरी बचा है। हमें अपने नए फर्मवेयर को रोल करने की आवश्यकता है।
हम GDB के साथ टैब पर जाते हैं और लोड कमांड निष्पादित करते हैं

(gdb) बिन.हाइक्स को लोड पथ
लोड हो रहा है अनुभाग। Sec1, आकार 0xc10 lma 0x8000000
पता 0x8000b70, लोड आकार 3088 शुरू करें
स्थानांतरण दर: 3 KB / सेकंड, 3088 बाइट्स / लिखना।


और डिबगर के अगले टैब में, आप देखेंगे कि सब कुछ सफलतापूर्वक रोल किया गया है
2013-12-05T22: 56: 04 INFO src / stlink-common.c: 16384 (0x4000) बाइट्स को stm32 पते पर लिखने का प्रयास: 134217728 (0x8000000)
EraseFlash - सेक्टर: 0x0 आकार: 0x4000
Addr पर फ्लैश पेज: 0x08000000 मिटा दिया गया
2013-12-05T22: 56: 05 INFO src / stlink-common.c: 16384 (0x4000) बाइट्स के 1 पृष्ठों को समाप्त
2013-12-05T22: 56: 05 INFO src / stlink-common.c: F2 / F4 के लिए फ्लैश लिखना शुरू करें
2013-12-05T22: 56: 05 INFO src / stlink-common.c: सफलतापूर्वक लोड फ़्लैश लोडर में
आकार: 16384
2013-12-05T22: 56: 05 INFO src / stlink-common.c: लिखने का पूर्ण सत्यापन शुरू करना
2013-12-05T22: 56: 05 INFO src / stlink-common.c: फ्लैश लिखा और सत्यापित! जॉली गुड!


परिणाम को देखने के लिए, gdb में कमांड 'c' (जारी रखें) चलाएँ। बोर्ड को क्रिसमस ट्री की तरह झपकना चाहिए।

मैंने जो कुछ भी लिखा है वह मेरे हिस्से में 100% समझ नहीं है। लेकिन शुरुआती लोगों के लिए यह एक शानदार शुरुआती बिंदु है।
आशा है कि यह लेख किसी की मदद करता है।

Source: https://habr.com/ru/post/In205028/


All Articles