विषयसूची:

प्रोग्रामिंग अरुडिनो ओवर द एयर (ओटीए) - अमीबा अरुडिनो: 4 कदम
प्रोग्रामिंग अरुडिनो ओवर द एयर (ओटीए) - अमीबा अरुडिनो: 4 कदम

वीडियो: प्रोग्रामिंग अरुडिनो ओवर द एयर (ओटीए) - अमीबा अरुडिनो: 4 कदम

वीडियो: प्रोग्रामिंग अरुडिनो ओवर द एयर (ओटीए) - अमीबा अरुडिनो: 4 कदम
वीडियो: ESP32 OTA (Over-the-Air) Updates using AsyncElegantOTA: Arduino IDE or VS Code (ESP8266 NodeMCU) 2024, जुलाई
Anonim
प्रोग्रामिंग अरुडिनो ओवर द एयर (ओटीए) - अमीबा अरुडिनो
प्रोग्रामिंग अरुडिनो ओवर द एयर (ओटीए) - अमीबा अरुडिनो

बाजार में कई वाई-फाई माइक्रोकंट्रोलर हैं, कई निर्माता Arduino IDE का उपयोग करके अपने वाई-फाई माइक्रोकंट्रोलर की प्रोग्रामिंग का आनंद लेते हैं। हालांकि, वाई-फाई माइक्रोकंट्रोलर द्वारा पेश की जाने वाली सबसे अच्छी विशेषताओं में से एक को अनदेखा कर दिया जाता है, वह है ओटीए (ओवर-द-एयर) फ़ंक्शन का उपयोग करके दूरस्थ रूप से और वायरलेस तरीके से अपने कोड को प्रोग्रामिंग और अपलोड करना।

इस निर्देश में, मैं आपको दिखाऊंगा कि अमीबा Arduino वाई-फाई माइक्रोकंट्रोलर पर सर्वव्यापी Arduino IDE का उपयोग करके अपने वाई-फाई माइक्रोकंट्रोलर पर OTA कैसे सेट करें!

आपूर्ति

अमीबा अरुडिनो एक्स 1

चरण 1: ओटीए

ओटीए
ओटीए

OTA (ओवर-द-एयर) इंटरनेट के माध्यम से ऑनलाइन अपग्रेड तंत्र को संदर्भित करता है।

Arduino IDE OTA सुविधा प्रदान करता है, जो ऊपर की आकृति में वर्कफ़्लो का अनुसरण करता है।

(i) Arduino IDE स्थानीय नेटवर्क में Arduino IDEOTA सेवा वाले उपकरणों के लिए mDNS के माध्यम से खोज करता है।

(ii) चूँकि mDNS सेवा अमीबा पर चल रही है, अमीबा mDNS खोज का जवाब देती है और कनेक्शन के लिए विशिष्ट TCP पोर्ट खोलती है।

(iii) उपयोगकर्ता Arduino IDE में प्रोग्राम विकसित करता है। पूरा होने पर, नेटवर्क पोर्ट चुनें।

(iv) अपलोड पर क्लिक करें। फिर Arduino IDE टीसीपी के माध्यम से अमीबा को ओटीए छवि भेजता है, अमीबा छवि को विशिष्ट पते पर सहेजता है और अगली बार इस छवि से बूट करने के लिए बूट विकल्प सेट करता है।

वर्कफ़्लो में तीन भाग होते हैं: mDNS, TCP और OTA छवि प्रक्रिया। mDNS से संबंधित विवरण mDNS ट्यूटोरियल में वर्णित है। टीसीपी सॉकेट प्रोग्रामिंग का उपयोग छवि को स्थानांतरित करने में किया जाता है और पहले से ही ओटीए एपीआई में प्रदान किया जाता है।

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

चरण 2: अमीबा फ्लैश मेमोरी लेआउट

अमीबा फ्लैश मेमोरी लेआउट
अमीबा फ्लैश मेमोरी लेआउट

अमीबा RTL8195A की फ्लैश मेमोरी का आकार 2MB है, जो 0x00000000 से 0x00200000 तक है। हालाँकि, अमीबा RTL8710 की फ्लैश मेमोरी का आकार 1MB है। विभिन्न बोर्डों के उपयोग में फिट होने के लिए, हम मानते हैं कि फ्लैश मेमोरी लेआउट 1 एमबी है।

जैसा कि ऊपर की आकृति में दिखाया गया है, अमीबा प्रोग्राम फ्लैश मेमोरी के तीन भागों पर कब्जा कर लेता है:

- बूट छवि:

यानी बूटलोडर। जब अमीबा बूट होता है, तो यह बूट इमेज को मेमोरी में रखता है और इनिशियलाइज़ेशन करता है। इसके अलावा, यह निर्धारित करता है कि बूटलोडर के बाद कहां आगे बढ़ना है। बूटलोडर सिस्टम डेटा क्षेत्र में ओटीए पते और रिकवरी पिन को देखता है और निर्धारित करता है कि बाद में कौन सी छवि निष्पादित की जाएगी। बूटलोडर के अंत में, यह छवि को स्मृति में रखता है और इसे निष्पादित करने के लिए आगे बढ़ता है।

- डिफ़ॉल्ट छवि 2:

इस भाग में डेवलपर कोड रखा गया है, पता 0x0000B000 से शुरू होता है। पहले 16 बाइट्स इमेज हेडर हैं, 0x0000B008~0x0000B00F में सिग्नेचर शामिल है, जिसका उपयोग यह सत्यापित करने के लिए किया जाता है कि इमेज वैध है या नहीं। नई छवि को पुरानी छवि से अलग करने के लिए हस्ताक्षर फ़ील्ड में दो मान्य मान हैं।

- ओटीए छवि:

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

कोड के अलावा, कुछ डेटा ब्लॉक हैं:

- सिस्टम डेटा:

सिस्टम डेटा ब्लॉक 0x00009000 से शुरू होता है। दो ओटीए-संबंधित डेटा हैं:

1. ओटीए पता: 4 बाइट्स डेटा 0x00009000 से शुरू होता है। यह ओटीए इमेज एड्रेस बताता है। यदि OTA पता मान अमान्य है (अर्थात, 0xFFFFFFFF), तो फ़्लैश मेमोरी में OTA छवि को ठीक से लोड नहीं किया जा सकता है।

2. रिकवरी पिन:4 बाइट्स डेटा 0x00009008 से शुरू होता है, रिकवरी पिन का उपयोग यह निर्धारित करने के लिए किया जाता है कि दोनों छवि के मान्य होने पर कौन सी छवि (डिफ़ॉल्ट छवि 2 या ओटीए छवि) निष्पादित की जाए। यदि पुनर्प्राप्ति पिन मान अमान्य है (यानी, 0xFFFFFFFF), तो नई छवि डिफ़ॉल्ट रूप से निष्पादित की जाएगी।

जब हम डीएपी के माध्यम से अमीबा में प्रोग्राम अपलोड करेंगे तो सिस्टम डेटा हटा दिया जाएगा। अर्थात्, ओटीए पता हटा दिया जाएगा और अमीबा यह निर्धारित करेगी कि कोई ओटीए छवि नहीं है।

- अंशांकन डेटा: परिधीय अंशांकन डेटा इस ब्लॉक में रखा गया है। आम तौर पर इन डेटा को हटाया नहीं जाना चाहिए।

चरण 3: बूट प्रवाह

बूट फ्लो
बूट फ्लो

ऊपर की छवि से, हम निम्नलिखित परिदृश्यों पर चर्चा करते हैं: (i) ओटीए का उपयोग नहीं किया जाता है, प्रोग्राम अपलोड करने के लिए डीएपी का उपयोग करें:

इस स्थिति में, बूटलोडर डिफ़ॉल्ट छवि 2 और ओटीए पते के हस्ताक्षर की जांच करता है। चूंकि ओटीए पता हटा दिया गया है, इसलिए निष्पादित करने के लिए डिफ़ॉल्ट छवि 2 का चयन किया जाएगा।

(ii) ओटीए छवि अमीबा को स्थानांतरित कर दी गई है, ओटीए पता सही ढंग से सेट है, रिकवरी पिन सेट नहीं है:

अमीबा को ओटीए के माध्यम से अद्यतन छवि प्राप्त हुई है, डिफ़ॉल्ट छवि 2 के हस्ताक्षर पुराने हस्ताक्षर पर सेट हो जाएंगे।

बूटलोडर डिफ़ॉल्ट छवि 2 और ओटीए पते के हस्ताक्षर की जांच करता है। यह पाएगा कि ओटीए पते में एक वैध ओटीए छवि है। चूंकि रिकवरी पिन सेट नहीं है, यह नई छवि (यानी, ओटीए छवि) को निष्पादित करने के लिए चुनता है।

(iii) ओटीए छवि अमीबा को स्थानांतरित की जाती है, ओटीए पता सही ढंग से सेट होता है, रिकवरी पिन सेट होता है:

अमीबा को ओटीए के माध्यम से अद्यतन छवि प्राप्त हुई है, डिफ़ॉल्ट छवि 2 के हस्ताक्षर पुराने हस्ताक्षर पर सेट हो जाएंगे।

बूटलोडर डिफ़ॉल्ट छवि 2 और ओटीए पते के हस्ताक्षर की जांच करता है। यह पाएगा कि ओटीए पते में एक वैध ओटीए छवि है। फिर रिकवरी पिन वैल्यू चेक करें। यदि पुनर्प्राप्ति पिन LOW से जुड़ा है, तो नई छवि (यानी, OTA छवि) निष्पादित की जाएगी। यदि रिकवरी पिन हाई से जुड़ा है, तो पुरानी छवि (यानी, डिफ़ॉल्ट छवि 2) निष्पादित की जाएगी।

चरण 4: उदाहरण

उदाहरण
उदाहरण
उदाहरण
उदाहरण
उदाहरण
उदाहरण
उदाहरण
उदाहरण

ओटीए सुविधा का उपयोग करने के लिए, कृपया डीएपी फर्मवेयर को संस्करण> 0.7 में अपग्रेड करें (v0.7 शामिल नहीं है)। फ़ैक्टरी डिफ़ॉल्ट डीएपी फर्मवेयर संस्करण 0.7 है। कृपया डीएपी फर्मवेयर को अपग्रेड करने के निर्देश का पालन करें:

उदाहरण खोलें: "फ़ाइल" -> "उदाहरण" -> "अमीबाओटा" -> "ओटा_बेसिक"

नेटवर्क कनेक्शन के लिए नमूना कोड में ssid और पासवर्ड की जानकारी भरें।

ओटीए से संबंधित कुछ पैरामीटर हैं:

§ MY_VERSION_NUMBER:पहले संस्करण में, हमें OTA पता और पुनर्प्राप्ति पिन सेट करने की आवश्यकता है। चूंकि इस बार हम USB के माध्यम से अपलोड करते हैं, यह पहला संस्करण है, इसलिए हमें इस मान को बदलने की आवश्यकता नहीं है।

OTA_PORT:Arduino IDE अमीबा को mDNS के माध्यम से खोजेगा। अमीबा Arduino IDE को बताएगी कि वह OTA छवि की प्रतीक्षा करने के लिए TCP पोर्ट 5000 खोलता है।

RECOVERY_PIN:पुनर्प्राप्ति के लिए उपयोग किए गए पिन को कॉन्फ़िगर करें। हम यहां पिन 18 का उपयोग करते हैं।

फिर हम अमीबा के लिए यूएसबी अपलोड प्रोग्राम का उपयोग करते हैं। टूल्स -> पोर्ट्स पर क्लिक करें, उपयोग करने के लिए सीरियल पोर्ट की जांच करें:

कृपया ध्यान दें कि Arduino IDE अपलोड प्रोग्राम और आउटपुट लॉग के लिए एक पोर्ट का उपयोग करता है। इस स्थिति से बचने के लिए कि जब हम ओटीए का उपयोग करते हैं तो लॉग आउटपुट नहीं हो सकता है, हम लॉग संदेश देखने के लिए सीरियल मॉनिटर के बजाय अन्य सीरियल पोर्ट टर्मिनल (जैसे, तेरा टर्म या पुट्टी) का उपयोग करते हैं।

फिर अपलोड पर क्लिक करें और रीसेट बटन दबाएं।

लॉग संदेश में:

1. "===== छवि 1 दर्ज करें ====" और "छवि 2 दर्ज करें ====" के बीच, आप "फ़्लैश छवि 2: Addr 0xb000" पा सकते हैं। इसका अर्थ है कि अमीबा डिफ़ॉल्ट छवि 2 से 0xb000 पर बूट करने का निर्धारण करती है।

2. "छवि 2 दर्ज करें ====" के बाद, आप "यह संस्करण 1 है" पा सकते हैं। यह वह लॉग संदेश है जिसे हम स्केच में जोड़ते हैं।

3. अमीबा के एपी से कनेक्ट होने और आईपी एड्रेस "192.168.1.238" प्राप्त करने के बाद, यह एमडीएनएस को सक्रिय करता है और क्लाइंट की प्रतीक्षा करता है।

इसके बाद, हम "MY_VERSION_NUMBER" को 2 में संशोधित करते हैं।

"टूल्स" -> "पोर्ट" पर क्लिक करें, आप "नेटवर्क पोर्ट" की एक सूची देख सकते हैं। "MyAmeba को 192.168.1.238 (Ameba RTL8195A) पर खोजें", MyAmeba वह mDNS डिवाइस नाम है जिसे हमने नमूना कोड में सेट किया है, और "192.168.1.238" अमीबा का IP है।

यदि आपको अमीबा का नेटवर्कपोर्ट नहीं मिल रहा है, तो कृपया पुष्टि करें:

- क्या आपका कंप्यूटर और अमीबा एक ही स्थानीय नेटवर्क में हैं?

- Arduino IDE को पुनरारंभ करने का प्रयास करें।

- सीरियल मॉनिटर में लॉग संदेश देखें कि क्या अमीबा एपी से सफलतापूर्वक जुड़ा है।

फिर अपलोड पर क्लिक करें। इस बार कार्यक्रम टीसीपी के माध्यम से अपलोड किया जाएगा। लॉग टर्मिनल में, आप क्लाइंट कनेक्शन जानकारी देख सकते हैं।

जब ओटीए छवि सफलतापूर्वक डाउनलोड हो जाती है, तो अमीबा रीबूट हो जाएगा और लॉग टर्मिनल में निम्नलिखित लॉग दिखाया जाएगा।

- "===== छवि 1 दर्ज करें ====" और "छवि 2 दर्ज करें ====" के बीच, आप एक लॉग संदेश "फ़्लैश छवि 2: Addr 0x80000" देख सकते हैं। इसका मतलब है कि अमीबा ओटीए इमेज से 0x80000 पर बूट करना निर्धारित करती है।

- "छवि 2 दर्ज करें ====" के बाद, लॉग "यह संस्करण 2 है" वह संदेश है जिसे हम स्केच में जोड़ते हैं।

अमीबा में ओटीए छवि डाउनलोड होने के बाद पिछली छवि को पुनर्प्राप्त करने के लिए, कृपया स्केच में सेट किए गए पुनर्प्राप्ति पिन (यानी, पिन 18) को उच्च (3.3V) से कनेक्ट करें, और रीसेट दबाएं।

फिर डिफॉल्ट इमेज 2 को बूट करते समय चुना जाएगा। ध्यान दें कि डाउनलोड की गई ओटीए छवि हटाई नहीं गई है, एक बार रिकवरी पिन हाई से डिस्कनेक्ट हो जाने के बाद, ओटीए छवि निष्पादित की जाएगी।

हम निम्नलिखित आकृति में ओटीए का उपयोग करके विकास प्रवाह को सारांशित करते हैं।

सिफारिश की: