यह जानने के लिए कि यह कैसे काम करता है आप उपरोक्त में से कोई भी उपयोग नहीं करना चाहते हैं। एक हाथ क्रॉस कंपाइलर और सेंट से प्रलेखन प्राप्त करें। कोडिंग शुरू करें। ये चिप्स आमतौर पर प्रोग्राम करने में आसान होते हैं। प्रलेखन आपको बताता है कि रजिस्टर में क्या बिट्स क्या करते हैं।
इन पुस्तकालयों में से कोई भी / आप से उस समझ / बोझ / काम को दूर करने के लिए है और यह आपको एप्लिकेशन प्रोग्रामिंग अनुभव की तरह एक एपीआई कॉल की तरह महसूस कराता है। जिसे बहुत सारे लोग चाहते हैं। आप इन पुस्तकालयों को समझने में मदद करने के लिए सभी स्रोत का उपयोग कर सकते हैं, लेकिन जैसा कि आप इसे बेहतर करते हैं, आपको पुस्तकालयों में छेद और समस्याएं मिलती हैं, कभी-कभी बहुत डरावना कोड। कोड को एक साथ उछाला गया, उदारतापूर्वक लिखा गया और मोटे तौर पर एक चिप से दूसरे चिप में रखा गया, शायद आपकी चिप की विशेषता का समर्थन नहीं किया गया है, आदि और इन सभी में अत्यधिक मात्रा में ओवरहेड है। कार्य के लिए 10 से 100 गुना बहुत अधिक कोड, निश्चित रूप से इसका बहुत कुछ दूर अनुकूलन हो सकता है लेकिन पहले स्थान पर क्यों है?
चाहे आप स्वयं जाएं या इन पुस्तकालयों में से किसी एक का उपयोग करें, फिर भी आपको अपने द्वारा उपयोग किए जा रहे पुस्तकालयों के लिए स्रोत को देखना चाहिए कि क्या आप जो कर रहे हैं उसके साथ सहज हैं, अगर यह समझ में आता है, चिप प्रलेखन से मेल खाता है, आदि। गलत हो जाता है कि आप उनके सामान के माध्यम से खुदाई करने की संभावना रखते हैं जितना कि आपका पता लगाने के लिए।
ध्यान दें कि चिप डॉक्स एकदम सही नहीं हैं, यह मज़े का हिस्सा है।
मुझे समझ में नहीं आता कि नंगे धातु प्रोग्रामिंग के बारे में चर्चा में विधानसभा क्यों आती है। आप बहुत कम असेंबली के साथ प्राप्त कर सकते हैं। इन कोर्टेक्स-एम चिप्स के लिए, आपको तकनीकी रूप से केवल बूट करने के लिए इस एशम की आवश्यकता है:
.globl _start
_start:
.word 0x20001000
.word main
आप न तो डेटा पर भरोसा कर सकते हैं और न ही bss कर सकते हैं और आप उस न्यूनतम के साथ मुख्य से वापसी नहीं कर सकते। लेकिन यह सब कुछ है कि आप नंगे धातु के barest के लिए की जरूरत है। अब यदि आप व्यवधान डालना चाहते हैं तो आपको वेक्टर तालिका में अधिक प्रविष्टियों की आवश्यकता होगी। अधिक .word लाइनें। मैं अधिक asm की सलाह देता हूं, लेकिन शायद 10 या 20 लाइनें अधिक।
यह आमतौर पर मैं उपयोग सभी asm है।
.cpu cortex-m0
.thumb
.thumb_func
.global _start
_start:
stacktop: .word 0x20001000
.word reset
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.thumb_func
reset:
bl notmain
b hang
.thumb_func
hang: b .
.align
.thumb_func
.globl PUT16
PUT16:
strh r1,[r0]
bx lr
.thumb_func
.globl PUT32
PUT32:
str r1,[r0]
bx lr
.thumb_func
.globl GET32
GET32:
ldr r0,[r0]
bx lr
.thumb_func
.globl GET16
GET16:
ldrh r0,[r0]
bx lr
.thumb_func
.globl dummy
dummy:
bx lr
.end
हाँ, यह कोर्टेक्स- m0 कहता है, लेकिन यह मेरे m4 कोड के लिए वास्तविक बूटस्ट्रैप है। मैं यह पसंद करता हूं कि अंगूठा नहीं अंगूठे 2। और मैं सिर्फ एक कॉर्टेक्स-एम से दूसरे में इस कोड का पुन: उपयोग करता हूं, स्टैक पॉइंटर एड्रेस को आवश्यकतानुसार बदलते हुए, इसलिए यह m0, m3 और m4 के लिए काम करता है। मेरे पास अभी तक कोई m7 नहीं है और न ही मैंने इस पर ज्यादा शोध किया है।
विशिष्ट निर्देश आवश्यक होने पर fpu को सक्षम करने के लिए asm की कुछ और लाइनों की आवश्यकता हो सकती है। लेकिन बिंदु न तो निम्न स्तर की प्रोग्रामिंग और एएसएम को भ्रमित करता है। सी के पास आपको चिप को कॉन्फ़िगर करने की आवश्यकता है, साथ ही एक आवेदन लिखना होगा। आप जिन पुस्तकालयों के बारे में बात कर रहे हैं, वे C नहीं asm में लिखे गए हैं, इसलिए स्पष्ट रूप से उन्हें asm का उपयोग करने की आवश्यकता नहीं है।
यदि आप आंतरिक कामकाज सीखना चाहते हैं, तो अपना कोड लिखें। एक संदर्भ के रूप में इन पुस्तकालयों का उपयोग न करें। कभी-कभी उनके कोड के माध्यम से पढ़ने की कोशिश की तुलना में इसे हैक करना आसान होता है। (न केवल एसटी बल्कि सभी विक्रेताओं में से एक। विक्रेताओं में से एक के पास कोड की एक पंक्ति थी, इसलिए मैं इसे एक साक्षात्कार प्रश्न के रूप में उपयोग करता हूं, इसे यहां पोस्ट नहीं करना चाहिए।
एसटी निश्चित रूप से लेकिन अन्य विक्रेताओं के साथ-साथ बिजली बचाने के लिए, घड़ी में चिप के वर्गों के लिए सक्षम है, इसलिए इससे पहले कि आप अंदर जाएं और एक एलईडी को झपकी लेने की कोशिश करें, आपको उस gpio ब्लॉक के लिए सक्षम बिट खोजने की जरूरत है और देखें कि क्या यह बाहर आता है रीसेट सक्षम, यदि नहीं तो इसे सक्षम करें, बिना घड़ी के उस gpio तर्क से बात करने में सक्षम बस प्रोसेसर को लटका देता है क्योंकि यह तर्क की प्रतिक्रिया की प्रतीक्षा कर रहा है जो कभी भी प्रतिक्रिया नहीं देगा। वे हमेशा आपको इन सक्षमों के बारे में नहीं बताते हैं। एक बार सक्षम होने के बाद वे कभी-कभी कुछ विशेष परिधीयों के लिए आपको init के माध्यम से चलते हैं। ST डॉक्स बहुत अच्छे हैं। माइक्रोचिप से आ रहा है जो दस्तावेज़ीकरण के लिए एक बहुत बुरा ग्रेड है, आपको समस्या नहीं होनी चाहिए।
Libraries/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h
या तो याDrivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h
क्रमशः में पाए जाते हैं।