हम एक एआरएम बोर्ड को एक जीएसएम मॉडेम के साथ बोर्ड पर बनाएंगे।
हम हवा पर एआरएम फर्मवेयर को अपग्रेड करने में सक्षम होना चाहते हैं।
क्या उसके लिए कोई अच्छा, विश्वसनीय, खुला स्रोत समाधान है?
यदि नहीं, तो क्या इस सुविधा के साथ सशुल्क ओएस है?
हम एक एआरएम बोर्ड को एक जीएसएम मॉडेम के साथ बोर्ड पर बनाएंगे।
हम हवा पर एआरएम फर्मवेयर को अपग्रेड करने में सक्षम होना चाहते हैं।
क्या उसके लिए कोई अच्छा, विश्वसनीय, खुला स्रोत समाधान है?
यदि नहीं, तो क्या इस सुविधा के साथ सशुल्क ओएस है?
जवाबों:
मैं किसी भी पूर्व-निर्मित समाधान से अवगत नहीं हूं, लेकिन मैं वर्णन करूंगा कि मैं एक परियोजना में इसके आसपास कैसे गया। यह पूरी तरह से 'अटूट' नहीं है, लेकिन मुझे इसके बारे में हजारों अपग्रेड के बारे में पता नहीं है। इस एप्लिकेशन के लिए इकाइयों की पहुंच हासिल करने की तुलना में बहुत कम विफलता दर अभी भी सस्ती होगी।
मुख्य एप्लिकेशन में सामान्य संचार प्रोटोकॉल में तीन अतिरिक्त पैकेट प्रकार जोड़े गए हैं, जिसमें त्रुटि का पता लगाना और शीर्ष पर पुन: प्रयास करना शामिल है:
एक फ़र्मवेयर अपडेट कमांड एक बाहरी SPI फ़्लैश में आरक्षित मेमोरी क्षेत्र को साफ़ करता है। यदि यूनिट अपनी बैकअप बैटरी से चल रही है या बाहरी शक्ति से चल रही है तो यह एक त्रुटि देता है लेकिन बैटरी की स्थिति 25% से नीचे है।
एक लेखन ब्लॉक कमांड एक ऑफसेट पते और डेटा को स्वीकार करता है जो बाहरी फ़्लैश मेमोरी में छोटे हिस्से में लिखा जाता है। उच्च स्तर का प्रोटोकॉल त्रुटि का पता लगाने और पुन: प्राप्ति का ध्यान रखता है। प्रत्येक ब्लॉक के लिखे जाने के बाद इसे वापस पढ़ा जाता है और कमांड के स्वीकृत होने से पहले सत्यापित किया जाता है।
फ़िनिश फ़र्मवेयर अपडेट कमांड में वह लंबाई शामिल है जिसे प्राप्त फ़र्मवेयर को आगे सत्यापन के लिए पूरी छवि के CRC32 के साथ होना चाहिए। यदि यह बाहरी फ्लैश मेमोरी की सामग्री से मेल खाता है और बिजली की स्थिति अभी भी ठीक है तो लंबाई और CRC32 को एक 'मैजिक नंबर' के साथ एक EEPROM क्षेत्र में स्थानांतरित किया गया है ताकि यह दर्शाया जा सके कि फर्मवेयर अपडेट लंबित है।
वॉचडॉग पुनरारंभ करने के लिए बाध्य करने के लिए मुख्य अनुप्रयोग में एक कठिन लूप निष्पादित किया जाता है।
बूटलोडर (जो एआरएम के फ्लैश के एक लिखित संरक्षित क्षेत्र में स्थित है) EEPROM में जादू की संख्या को देखता है और एक बार फिर छवि के CRC32 को सत्यापित करता है। यदि सब ठीक है तो यह एआरएम के फ्लैश के मुख्य प्रोग्राम क्षेत्र में बाहरी फ्लैश से छवि को स्थानांतरित करता है।
EEPROM से लंबित अपग्रेड जानकारी साफ़ हो गई है और एक हार्ड लूप एक और रिबूट को मजबूर करता है। इस बार बूटलोडर मुख्य अनुप्रयोग को सामान्य रूप से शुरू करेगा।
हालांकि, मैंने इस चरण का उपयोग करते हुए तैनाती से पहले नए फ़र्मवेयर रिलीज़ को अपडेट करने में विफल होने वाले अद्यतन चरण को कभी नहीं देखा है। यदि कोई नया रिलीज़ GSM नेटवर्क से कनेक्ट करने में सक्षम नहीं है और भविष्य के अपडेट कॉमन को स्वीकार करता है तो इसके लिए ऑन-साइट फर्मवेयर अपडेट की आवश्यकता होगी।
क्या आप लिनक्स या आरटीओएस, या नंगे धातु चला रहे हैं? यदि डेबियन का उपयोग कर आप वर्तमान फाइलसिस्टम का एक स्नैपशॉट ले सकते हैं, तो "एप्ट-गेट" के माध्यम से एक अपग्रेड करें, उसके बाद बदलावों को रखें या रोलबैक करें कि यह काम किया है या नहीं।