CSR BC417143B पर ब्लूटूथ HC-04

CSR (कैम्ब्रिज सिलिकॉन रेडियो) ने ब्लू टूथ उपकरणों के लिए विशेष चिप्स लॉन्च किया। चिप्स स्पष्ट रूप से काफी सस्ती हैं, क्योंकि सज्जन चीनी BC417143B चिप ( BlueCore4 परिवार, देखें [1]) के आधार पर लघु (एक सिम कार्ड से थोड़ा बड़ा) ब्लूटूथ HC-04 स्कार्फ प्रदान करते हैं, जिसे केवल 6.6 डॉलर में रूस में खरीदा जा सकता है ( dealextreme.com के माध्यम से, [2] और [3]) देखें।

छवि

डिफ़ॉल्ट रूप से, सॉफ़्टवेयर जो आपको किसी भी हैंडहेल्ड (या फोन, लैपटॉप, इत्यादि) को एक माइक्रोकंट्रोलर (रोबोट, अर्डुइनो बोर्ड, किसी भी डिवाइस जो माइक्रोकंट्रोलर पर टीटीएल है) के आधार पर कनेक्ट करने की अनुमति देता है UART RS-232 बंदरगाह)। CSR CASIRA BLUELAB SDK (जिसमें ब्लूटूथ प्रोग्राम्स के काम करने के उदाहरण हैं) का उपयोग करके, आप HC-04 मॉड्यूल को स्वयं को फिर से शुरू कर सकते हैं और अपने खुद के ब्लूटूथ डिवाइस बना सकते हैं। प्रोग्रामर और मॉड्यूल के लिए एक पूर्ण हार्डवेयर डिबगर आसानी से अपने आप से किया जा सकता है, यह एलपीटी पोर्ट (देखें [4]) के माध्यम से कंप्यूटर से जुड़ा हुआ है। इस लेख में, CSR के चिप्स के परिवार के विकास टूलकिट का एक संक्षिप्त विवरण, जिसे आप HC-04 मॉड्यूल के लिए अपने कार्यक्रमों को जल्दी से लिखना शुरू कर सकते हैं।

मैं HC-04 मॉड्यूल की तकनीकी विशेषताओं के बारे में विस्तार से नहीं बताऊंगा, क्योंकि सब कुछ डेलेक्स्ट्रीम वेबसाइट [2] के लिंक पर पाया जा सकता है। मैं केवल सबसे दिलचस्प के बारे में लिखूंगा। बोर्ड पर, मॉड्यूल में 1 मेगाबाइट मेमोरी चिप है। इसमें कंट्रोल फर्मवेयर और सभी सेटिंग्स (उस पर बाद में) शामिल हैं। मॉड्यूल के बाहरी 34 संपर्क आउटपुट हैं:
- हार्डवेयर UART , TXD, RXD, CTS और RTS सिग्नल।
- पीसीएम सीरियल पोर्ट (डिजिटल ऑडियो इनपुट / आउटपुट के लिए)।
- दो एनालॉग इनपुट / आउटपुट AIO
- रीसेट रीसेट पैर (आप इसे कहीं भी कनेक्ट नहीं कर सकते हैं)।
- इनपुट वोल्टेज की आपूर्ति +3.3 वोल्ट, वर्तमान खपत अधिकतम 35 एमए।
- यूएसबी इंटरफ़ेस।
- एसपीआई इंटरफेस, जिसके माध्यम से फर्मवेयर फ्लैश किया जाता है और डिबगिंग होती है।
- 12 डिजिटल इनपुट / आउटपुट पोर्ट PIO

मॉड्यूल (3.3 वोल्ट, अधिकतम 35 एमए) को बिजली की आपूर्ति करने के बाद, यह एक धारावाहिक COM पोर्ट प्रोफाइल के साथ एक वायरलेस ब्लूटूथ डिवाइस के रूप में पता लगाया जा सकता है। यही है, आपके हाथ में (फोन, लैपटॉप, आदि) पर, एक सीरियल पोर्ट दिखाई देता है जिसके माध्यम से आप सीधे मानक आरएस -232 पोर्ट के टीटीएल सिग्नल TX और RX के माध्यम से डेटा का आदान-प्रदान कर सकते हैं। फ़र्मवेयर HC-04 एटी-कमांड को एक विस्तृत श्रृंखला ( 1200 से 1382400 बाउड्स ) पर डेटा ट्रांसफर गति को बदलने की अनुमति देता है, और गति सेटिंग्स में परिवर्तन गैर-वाष्पशील है, और पावर ऑफ़ के बीच सहेजे जाते हैं। इस प्रकार, इसके छोटे आकार और कम कीमत (रूस में आप $ 6.6 के लिए खरीद सकते हैं) के कारण, HC-04 मॉड्यूल पहले से ही वायरलेस संचार के लिए एक सुविधाजनक तैयार उपकरण के रूप में दिलचस्प है।

हालांकि, जैसा कि यह निकला, एचसी -04 मॉड्यूल के लिए, आप स्वयं प्रोग्राम लिख सकते हैं और उन्हें चिप मेमोरी में लिख सकते हैं। इन विशेषताओं की समीक्षा लेख का मुख्य भाग है।

विकास उपकरण


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

छवि

इस सरल प्रोग्रामर के माध्यम से, आप HC-04 मॉड्यूल की संपूर्ण फ्लैश मेमोरी को बाइनरी फ़ाइलों ( ब्लूफ्लैश उपयोगिता का उपयोग करके) में विलय कर सकते हैं, मॉड्यूल और प्रोग्राम सेटिंग्स ( पीएसटीटीएल उपयोगिता का उपयोग करके) को देख और संपादित कर सकते हैं। आप फर्मवेयर प्रोग्राम और डिबग (उसी एलपीटी एसपीआई का उपयोग करते हुए) लिख सकते हैं । विभिन्न ब्लूटूथ डिवाइसों के लिए स्रोत कोड और अंग्रेजी में आवश्यक दस्तावेज के कई उदाहरण हैं। यदि आप CSR CASIRA BLUELAB SDK (इंस्टालेशन पैकेज को लगभग 55 मेगाबाइट लेता है, तो इंस्टॉलेशन के बाद यह 310 मेगाबाइट लेता है) इन सभी संभावनाओं को विंडोज ऑपरेटिंग सिस्टम पर खोला जाता है।

उदाहरण आपको भूमिका ए के ब्लूटूथ डिवाइस बनाने की अनुमति देते हैं (कुछ एक ब्लूटूथ विज़ार्ड की तरह, जो वे खुद ब्लूटूथ डिवाइस ढूंढते हैं और उनसे कनेक्ट होते हैं। रोल ए का डिवाइस वायरलेस उपकरणों की खोज करके नहीं पाया जा सकता है) और रोल बी (ब्लूटूथ उपकरणों का गुलाम जो वायरलेस उपकरणों की खोज करके पाया जा सकता है)। CSR CASIRA BLUELAB SDK के उदाहरणों का उपयोग करते हुए, आप दो HC-04 मॉड्यूल के बीच डेटा के आदान-प्रदान को व्यवस्थित कर सकते हैं, इस मामले में एक को A को लागू करना चाहिए, और दूसरा रोल B (मानक फर्मवेयर, जो कारखाने में HC-04 में दर्ज है, इस की अनुमति नहीं देता है) यह केवल बी को लागू करता है)।

सेटिंग्स स्टोर, स्थायी स्टोर


फर्मवेयर के साथ-साथ HC-04 मॉड्यूल मेमोरी में, कई विभिन्न पैरामीटर (जैसे ब्लूटूथ एड्रेस, डिवाइस नाम, ट्रांसमीटर आउटपुट पावर, आदि), तथाकथित चाबियाँ, दर्ज की जाती हैं। यह एचसी -04 मॉड्यूल की एक विशेषता नहीं है, जैसा कि प्रोग्रामिंग अनुप्रयोगों के दौरान ब्लूकोर वास्तुकला में प्रथागत है। सभी कुंजियों को PSTool उपयोगिता द्वारा देखा जा सकता है, यदि आवश्यक हो तो बदल दिया जाता है (यदि आप, निश्चित रूप से, समझें कि आप क्या कर रहे हैं) और एक .psr फ़ाइल में सहेजा गया है, जिसमें एक सुविधाजनक पाठ प्रारूप है। कुंजी डंपिंग में काफी लंबा समय लगता है (मुझे लगभग 2 मिनट लगते हैं), जबकि फर्मवेयर काम करना बंद नहीं करता है। चिप में संग्रहीत सभी कुंजी भंडारण स्तर से विभाजित होती हैं। स्तर सेटिंग्स (FLASH, RAM, ROM), साथ ही निर्माण के समय (कार्यान्वयन, फैक्टरी) के भंडारण स्थान से बंधे हैं। स्टोर मेनू (सभी (TIFR), कार्यान्वयन केवल (I), ROM केवल ®, RAM केवल (T), फ़ैक्टरी केवल (F), नहीं RAM (IFR) में प्रदर्शित करने के लिए किन स्तरों को प्रदर्शित किया जाना है। यदि एक ही कुंजी को विभिन्न स्तरों पर और विभिन्न मूल्यों के साथ एक साथ परिभाषित किया गया है, और सभी स्तरों (सभी (TIFR)) को चुना गया है, तो उच्चतम स्तर पर संग्रहीत कुंजी का मूल्य प्रदर्शित किया जाएगा। डिफ़ॉल्ट कुंजी मान रोम में संग्रहीत किए जाते हैं, निम्नतम स्तर। रनटाइम कुंजियों को उच्चतम स्तर, ट्रांसिएंट (RAM) पर संग्रहीत किया जाता है। स्तरों के पहले अक्षरों से संक्षिप्त रूप से कई स्तरों का संकेत मिलता है, उदाहरण के लिए IFR, TIFR। परसेंट स्टोर के स्तर की अधिक जानकारी के लिए, blab-ug-008Pb_PSTool_User_Guide.pdf देखें

सीएसआर ब्लूकोर और एसडीके लाइब्रेरी


XIDE उदाहरण परियोजनाओं में, सभी सूक्ष्मताएं पुस्तकालयों में उपयोगकर्ता की आंखों से बहुत दूर छिपी हुई हैं। पुस्तकालय 3 वर्गों में विभाजित हैं:
फाउंडेशन लाइब्रेरी - उपकरण के साथ मुख्य कार्यक्षमता, निम्न-स्तरीय कार्य। यह केवल बाइनरी रूप में वितरित किया जाता है, बिना स्रोत कोड के। फाउंडेशन लाइब्रेरी फ़ंक्शंस का उपयोग करने के लिए हेडर फ़ाइल csr.h है।

समर्थन पुस्तकालय - कनेक्शन समर्थन (RFCOMM, L2CAP, और SCO) प्रदान करते हैं। हेडर फ़ाइलें और स्रोत कोड फ़ाइलें C: \ BlueLab \ src \ lib फ़ोल्डर में स्थित हैं।

प्रोफ़ाइल लाइब्रेरी - ब्लू प्रोफाइल का संदर्भ लें। प्रोफाइल एक ब्लूटूथ डिवाइस के उद्देश्य की तरह कुछ हैं (उदाहरण के लिए, एक सीरियल पोर्ट, एक ऑडियो डिवाइस, फ़ाइलों के लिए एक स्रोत और गंतव्य, एक यूएसबी इंटरफ़ेस, आदि)। हेडर फ़ाइलें और स्रोत कोड फ़ाइलें C: \ BlueLab \ src \ lib फ़ोल्डर में स्थित हैं।

ब्लूकोर चिप में डेटा (कालिंबा, पीसीएम, एससीओ, RFCOMM, L2CAP, UART, होस्ट, USB, HID, क्षेत्र, फ़ाइल, ऑडियो नोट्स) के कई अलग-अलग इंटरफेस, स्रोत और रिसीवर हैं, जो पुस्तकालयों का उपयोग करके आसानी से एक दूसरे से जुड़े हो सकते हैं धाराओं के माध्यम से डेटा का आदान-प्रदान। कुछ डेटा स्रोत और रिसीवर (कलींबा) बोर्ड पर डीएसपी के साथ ब्लूकोर कोर हैं। BC417143B चिप, HC-04 पर लगाई गई, BlueCore4 परिवार की है और इसमें DSP नहीं है। विवरण के लिए दस्तावेज़ CS-110275-UGP1_Implementing_Streams_in_BlueLab.pdf देखें

पुस्तकालय का उपयोग शुरू करने के लिए, आपको आवश्यक .h फ़ाइल को #include निर्देश के साथ कनेक्ट करना होगा और वांछित लाइब्रेरी का नाम प्रोजेक्ट सेटिंग्स में जोड़ना होगा परियोजना गुण -> कॉन्फ़िगरेशन गुण -> बिल्ड सिस्टम -> लाइब्रेरी - आवश्यक पुस्तकालयों के नाम इनपुट फ़ील्ड में इंगित किए जाते हैं, कॉमा द्वारा अलग किए गए (बिना) फ़ाइल एक्सटेंशन)। पुस्तकालयों को फिर से बनाया जा सकता है (शॉर्टकट काफी लंबा है!) शॉर्टकट 41L लॉन्च करके -> पुनर्निर्माण -> वीएम लाइब्रेरी और डीएसपी लाइब्रेरी।

XIDE का एक संक्षिप्त विवरण और सबसे सरल अनुप्रयोग


BlueTooth डिवाइस प्रोजेक्ट जो एक होस्ट को खोज के माध्यम से पा सकते हैं प्रत्यय _b (उदाहरण के लिए, spp_dev_b) है। परियोजनाएं जो स्वयं एक मेजबान के रूप में काम करती हैं, अर्थात्, अन्य ब्लूट्यूट उपकरणों को खुद से जोड़ सकती हैं, प्रत्यय _a है (उदाहरण के लिए, spp_dev_a)। प्रत्यय _a वाले उपकरण होस्ट द्वारा ब्लूटूथ डिवाइस खोज के माध्यम से नहीं मिल सकते हैं।

प्रोजेक्ट को xIDE के माध्यम से शुरू करने के लिए, आपको प्रोजेक्ट फ़ोल्डर में जाने की जरूरत है (डेमो उदाहरण की सभी परियोजनाएं फ़ोल्डर C: \ BlueLab41 \ apps \ उदाहरण में हैं ) और * .xiw फ़ाइल लॉन्च करने के लिए डबल-क्लिक करें (कार्यक्षेत्र सेटिंग्स यहां संग्रहीत हैं, प्रोजेक्ट सेटिंग्स * .xip फ़ाइल में संग्रहीत हैं। )। XIDE डेवलपमेंट का माहौल अपने आप शुरू हो जाएगा, जिसमें आप प्रोजेक्ट के सोर्स कोड देख सकते हैं और संकलन और डीबगिंग के लिए कोड चला सकते हैं। जब LPT SPI के माध्यम से डिबगिंग शुरू की जाती है, तो चिप का प्रकार स्वचालित रूप से पढ़ा जाता है, और परियोजना इसके लिए संकलित होती है। संकलन के बाद, प्रोग्राम को स्वचालित रूप से सीएसआर प्रोसेसर से जुड़ी बाहरी फ्लैश मेमोरी में डाला जाता है (मुझे याद है कि ब्लू-एचटी -04 मॉड्यूल के लिए यह बीसी 417143 बी-आईक्यूएन-ई 4 प्रोसेसर (ब्लूकोर 4-बाहरी डिवाइस) है, और कार्यक्रम शुरू होता है। डिबगिंग को रोकने के बाद, यदि आप पावर को फिर से चालू करते हैं, तो चिप को एक नए संकलित प्रोग्राम द्वारा अधिलेखित कर दिया जाएगा जो कि काम करना शुरू कर देगा। सामान्य परियोजना भरी हुई है और चिप मेमोरी लगभग एक मिनट है (और आप एलपीटी पोर्ट से क्या चाहते हैं?)।

आप एक एलईडी चमकती, खरोंच से HC-04 के लिए सबसे सरल आवेदन लिख सकते हैं। ऐसा करने के लिए, xIDE लॉन्च करें, प्रोजेक्ट चुनें -> नया ..., प्रोजेक्ट प्रकार निर्दिष्ट करें Bluelab -> रिक्त VM प्रोजेक्ट, किसी भी प्रोजेक्ट का नाम दर्ज करें (उदाहरण के लिए MyFirstBluelab), प्रोजेक्ट स्थान के लिए एक फ़ोल्डर चुनें (सब कुछ वैसा ही किया गया है, जैसा कि विज़ुअल स्टूडियो में है) और ठीक पर क्लिक करें। फिर आपको मॉड्यूल फ़ाइल main.c बनाने की आवश्यकता है, और वहां पाठ दर्ज करें:

#include <message.h><br>#include <pio.h><br><br> #define LED_1 (1<<1)<br><br>typedef struct <br>{<br> TaskData task;<br> uint16 change;<br>} ToggleTask;<br><br> static void MyHandler (Task t, MessageId id, Message payload)<br>{<br> uint16 change = ((ToggleTask *) t)-> change;<br> PioSet(change, PioGet() ^ change);<br> MessageSendLater (t, 0, 0, 500);<br>}<br><br> static ToggleTask toggle = { { MyHandler }, LED_1 };<br><br> int main ( void )<br>{<br> PioSetDir (LED_1, ~0);<br> MessageSend(&toggle.task, 0, 0);<br> MessageLoop();<br> return 0;<br>}
लिस्टिंग का एक संक्षिप्त विवरण (विवरण के लिए, फ़ाइल CS-110344-UGP2_WritingBlueCoreApplication.pdf देखें ):
- इसमें ब्लॉक हेडर संदेश और इनपुट / आउटपुट पोर्ट को सपोर्ट करने के लिए जुड़े हुए हैं।
- परिभाषित ऑपरेटर एलईडी के पैर को सेट करता है, जिसे हम नियंत्रित करेंगे।
- टॉगलटैस्क संरचना टॉगल एप्लिकेशन कार्य के डेटा स्टोर के लिए प्रकार सेट करती है।
- सबरूटीन मायहैंडलर - एक संदेश हैंडलर जो एलईडी को नियंत्रित करता है। एल्गोरिथ्म बहुत सरल है। टास्क टी के स्थानांतरित ढांचे से परिवर्तन पैरामीटर का मूल्य पढ़ा जाता है। एलईडी LED_1 का मुखौटा है, और परिवर्तन पैरामीटर को यहां केवल एक रनिंग कार्य के डेटा के भंडारण और प्रसारण के प्रदर्शन के रूप में लागू किया जाता है। PioSet और PioGet प्रक्रियाओं की कॉल यह सुनिश्चित करती है कि एलईडी विपरीत स्थिति में सेट है (यदि इसे बंद कर दिया गया था, तो यह चालू हो जाता है, और इसके विपरीत), परिवर्तन चर का मान मास्क के रूप में उपयोग किया जाता है। MessageSendLater प्रक्रिया टास्क 500 में एक नया संदेश भेजता है।
- टॉगल स्टैटिक वैरिएबल की घोषणा, टॉगल टस्क स्ट्रक्चर वेरिएबल के लिए मेमोरी आवंटित करती है और अपने टास्क में बदलाव के लिए वैल्यू असाइन करती है।
- मुख्य प्रक्रिया कोड में, PioSetDir आउटपुट के रूप में PIO1 (LED_1) को कॉन्फ़िगर करता है।
- MessageSend प्रारंभिक संदेश भेजता है जो MyHandler प्राप्त करेगा।
- CallLoop प्रक्रिया कॉल कार्यों के बीच संदेश वितरण शुरू करता है। MessageLoop में, निष्पादन लूप किया जाता है, और नियंत्रण कभी भी रिटर्न 0 ऑपरेटर तक नहीं पहुंचता है।

अब यदि आप F7 दबाते हैं, तो परियोजना संकलित होगी। यदि आप F5 दबाते हैं, तो प्रोग्राम स्वचालित रूप से चिप मेमोरी में डाला जाएगा और निष्पादन के लिए चलेगा (बशर्ते कि आपके पास एलपीटी एसपीआई मॉड्यूल जुड़ा हुआ है और एचसी -04 मॉड्यूल जुड़ा हुआ है), और पीआईओ 1 पैर पर एलईडी 1 हर्ट्ज की आवृत्ति पर फ्लैश करेगा। उसी समय, पूर्ण डिबगिंग उपलब्ध है - चरणों में, ब्रेकप्वाइंट के साथ, चर, स्मृति और प्रोसेसर रजिस्टरों पर एक नज़र के साथ। ब्रेकप्वाइंट को हमेशा की तरह कोड टेक्स्ट के बाईं ओर क्लिक करके कोड में सेट किया जाता है (एक ब्राउन सर्कल उस रेखा के विपरीत दिखाई देता है जहां ब्रेकपॉइंट सेट किया गया है) - ठीक विज़ुअल स्टूडियो की तरह। आप दस्तावेज़ CS-101500-UGP5_BlueLab xIDEuser guide.pdf में डिबगिंग के बारे में अधिक पढ़ सकते हैं।

छवि

BlueLab एप्लिकेशन की सामान्य संरचना


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

संदेश निम्न रूप में बनाए और प्रसारित किए जाते हैं:
टास्क टी, MessageId आईडी, संदेश पेलोड

टास्क टी संदेश के प्राप्तकर्ता को इंगित करता है, यह प्राप्त कार्य के लिए एक संकेतक है, उदाहरण के लिए और AppTask।
MessageId आईडी संदेश की पहचान करता है। निम्न संदेश क्रमांकन प्रणाली को अपनाया गया है:
- यह संदेश कि कार्य स्वयं को भेजता है, 0x00 से शुरू होता है।
- सिस्टम मैसेज 0x8000 से शुरू होते हैं।
- एक अलग प्रोफ़ाइल लाइब्रेरी द्वारा कार्य को भेजे गए संदेश 0x7000 आधार से शुरू होते हैं, और एसपीपी पुस्तकालय संदेश 0x6f00 से शुरू होते हैं।

संदेश पेलोड - संदेश में प्रेषित पेलोड (डेटा)। कभी-कभी किसी संदेश में एक पेलोड नहीं होता है जब केवल संदेश पहचानकर्ता पर्याप्त होता है। इस स्थिति में, संदेश पेलोड NULL है।

संदेश भेजने, मैसेज देखने के लिए कार्यों का एक सेट है। संदेश और संबंधित प्रलेखन देखें। प्रत्येक कार्य के लिए संदेश हैंडलर को संबोधित सभी संदेशों को संसाधित करना होगा। किसी डेवलपर के लिए संदेशों को संसाधित करने के लिए कोड विकसित करना आम बात है जो अनुप्रयोग कार्य स्वीकार करता है। BlueLab या SDK पुस्तकालयों से आरंभ किए गए प्रोफ़ाइल कार्यों और समर्थन कार्यों के लिए हैंडलर लिखने की आवश्यकता नहीं है। इन कार्यों के लिए हैंडलर पहले से ही पुस्तकालयों में बनाए गए हैं और संबंधित इनिट फ़ंक्शन को कॉल करने के बाद चुने गए हैं। एप्लिकेशन टास्क एप्लिकेशन को शुरुआती लाइब्रेरियों से प्राप्त संदेशों को संसाधित करना होगा। सिस्टम संदेशों की तालिका CS-110344-UGP2_WritingBlueCoreApplication.pdf , परिशिष्ट A प्रणाली संदेशों में दी गई है। पुस्तकालय संदेशों के डेटाबेस तालिका (संदेश आईडी मान का पहला बाइट) एक ही फाइल में दिया गया है, परिशिष्ट बी लाइब्रेरी संदेश मामले । डीबगर (LPT SPI या USB SPI) के माध्यम से डिबगिंग के दौरान, संदेश आउटपुट विंडो, संदेश टैब में दिखाई देते हैं।

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

आप प्रिंटफ़ ऑपरेटर के साथ प्रोग्राम कोड से डिबगिंग संदेश प्रिंट कर सकते हैं। इस स्थिति में, प्रिंट चैनल 0 टैब आउटपुट विंडो में खुलता है, और प्रिंटफ आउटपुट वहां मुद्रित होता है। Printf आउटपुट वास्तविक समय में काम करता है जबकि फर्मवेयर LPT SPI पर डीबगर के माध्यम से चल रहा है। एक वास्तविक एप्लिकेशन में, सभी प्रिंटफ स्टेटमेंट को हटा दिया जाना चाहिए, अन्यथा डिबगर के बिना एक एप्लिकेशन लटकाएगा और काम नहीं करेगा (स्टैक ओवरफ्लो के कारण)। डिबग आउटपुट को निकालने के लिए, विशेष संकलन समय टोकन का उपयोग करें DEBUG_PRINT_ENABLED और सशर्त संकलन ऑपरेटर #ifdef।
#define DEBUG_PRINT_ENABLED 1 // प्रिंटफ़ आउटपुट सक्षम करें

DEBUG_PRINT_ENABLED को प्रोजेक्ट गुणों, बिल्ड सिस्टम -> प्रतीकों को परिभाषित करने में भी परिभाषित किया जा सकता है। DEBUG_PRINT_ENABLED का उपयोग करने का एक उदाहरण नमूना एप्लिकेशन प्रोजेक्ट C: \ BlueLab41 \ apps \ example \ में उपलब्ध है।

कई समस्याएँ हैं जिनका सामना आपने xIDE के साथ प्रयोग करते समय किया है। यदि प्रोग्राम को चिप में फ्लैश किया जाता है, लेकिन डिबगिंग त्रुटि के साथ शुरू नहीं करना चाहता है "डिस्क से पढ़ी गई एप्लिकेशन फ़ाइल अमान्य प्रतीत होती है।", यह तब हो सकता है जब प्रोजेक्ट फ़ोल्डर में एक कठिन पथ है, जिसमें रिक्त स्थान और / या रूसी अक्षर शामिल हैं। उदाहरण के लिए, आपकी परियोजना c: \ Documents and Settings \ User \ Admin \ My Documents \ LEDFlashing \ फ़ोल्डर में स्थित है । प्रोजेक्ट लेआउट को सरल रूप में बदलें, उदाहरण के लिए c: \ temp \ LEDFlashing और डिबगर सामान्य रूप से शुरू हो जाएगा। Russification के साथ, xIDE की कुछ समस्याएं हैं - रूसी में कोड में संग्रहीत पाठ को फिर से खोलने पर पटाखे के साथ प्रदर्शित किया जाता है, इसलिए कोड में रूसी में टिप्पणियां लिखना काम नहीं करेगा। कभी-कभी कैसपर्सकी एंटी-वायरस बहुत संकलन के साथ हस्तक्षेप करता है (प्रक्रिया बहुत धीमी है)। पथ C: \ BlueLab41 \ tools \ * पर ऑब्जेक्ट स्कैन अपवाद को कॉन्फ़िगर करना उचित है। किसी कारण से, विंडोज को पुनरारंभ करने के बाद ही सेटिंग्स प्रभावी होंगी।

छवि

शब्दकोष


HCI होस्ट कंट्रोलर इंटरफ़ेस
नियंत्रण रेखा लिंक नियंत्रक
वीडियो सीएसआर ब्लूकोर प्रोग्रामिंग वातावरण
वीएम वर्चुअल मशीन - जैसा कि मैं इसे समझता हूं, यह अंतर्निहित आरआईएससी माइक्रोप्रोसेसर पर होस्ट प्रोसेसर फ़ंक्शन का निष्पादन है। एक क्लासिक VM है, और एक मूल VM है, वास्तुकला और निष्पादन की गति में भिन्नता है। CS-122636-AN-1classicvsNative.pdf देखें
वीएम एपीआई गैर-डीएसपी एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस।
ब्लूकोर CSR की ब्लूटूथ चिप लाइन का नाम है। HC-04 रूमाल में BlueCore4 चिप का उपयोग किया गया है।
पेलोड पेलोड। संदेश के गुजरने के संदर्भ में, संदेश में प्रेषित डेटा।
आवेदन कार्य आवेदन कार्य किसी भी BlueCore फर्मवेयर कार्यक्रम का एक अनिवार्य तत्व है।
प्रीमेप्टिव , इस संदर्भ में पूर्व-खाली , प्रीमेप्टिव मल्टीटास्किंग। प्रत्येक कार्य के लिए, एक सीमित निष्पादन समय अंतराल आवंटित किया जाता है, जो यह सुनिश्चित करता है कि सभी कार्यों के निष्पादन को अवरुद्ध करना असंभव है यदि कार्यों में से एक अवरुद्ध है (उदाहरण के लिए, एक अनंत लूप में प्रवेश करता है)।
इस संदर्भ में पूर्वव्यापी नहीं होने का मतलब है कि जब एक के बाद एक कार्य किए जाते हैं, तो मल्टीटास्किंग और प्रत्येक कार्य को शुरू से अंत तक किया जाता है। इस स्थिति में, एक कार्य में लॉक करना सभी कार्यों को पूरा करने से रोक सकता है। यह CSR BlueCore और SDK पुस्तकालयों में उपयोग किए जाने वाले कार्य परिदृश्य के ठीक समान है।
L2CAP तार्किक लिंक नियंत्रण और अनुकूलन प्रोटोकॉल
रिकॉर्ड (कुंजी) के रूप में इंस्टालेशन डेटा का लगातार स्टोर स्टोरेज
टीआईएफआर क्षणिक (रैम), कार्यान्वयन, फैक्टरी, रॉम - लगातार स्टोर प्लेसमेंट जिसका अर्थ है कि सभी संभावित प्लेसमेंट विकल्प। उत्पाद निर्माण के दौरान स्थापित कीज़ फ़ैक्ट्री और कार्यान्वयन क्षेत्रों में स्थित होती हैं, उत्पाद संचालन के दौरान उत्पन्न होने वाली कुंजियाँ Transient (RAM) में स्थित होती हैं।
IFR कार्यान्वयन, फैक्टरी, ROM - लगातार स्टोर प्लेसमेंट जो रैम का उपयोग नहीं करते हैं।
BCSP ब्लूकोर सीरियल प्रोटोकॉल - एक प्रोटोकॉल जिसके माध्यम से सभी डिबगिंग टूल ब्लूकोर चिप के साथ संवाद करते हैं (भौतिक स्तर पर, यह ब्लूकोर चिप एसपीआई इंटरफेस के माध्यम से होता है)।
कालिम्बा डीएसपी - कुछ ब्लूकोर चिप्स (ब्लूकोर 3 और ब्लूकोर 5) में एक डीएसपी है। दुर्भाग्य से, HC-04 मॉड्यूल BC417143B में DSP नहीं है। कालींबा डीएसपी के साथ काम करने के लिए एक विशेष एपीआई और एक संबंधित पुस्तकालय है।

संदर्भ


CSR वेबसाइट पर BlueCore4-External डिवाइस चिप का सामान्य विवरण
Dealextreme पर ब्लूटूथ HC-04
डेलेक्स्ट्रीम पर कैसे खरीदें
प्रोग्रामर और डिबगर एलपीटी एसपीआई का विवरण, प्रलेखन के लिए लिंक, सीएसआर कैसिरा BLUELAB एसडीके, HC-04 मॉड्यूल के लिए फर्मवेयर
पोर्ट PIO1 पर HC-04 मॉड्यूल चमकती एलईडी के लिए XIDE प्रोजेक्ट सोर्स कोड

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


All Articles