हवा में एआरएम को अपग्रेड करें


9

हम एक एआरएम बोर्ड को एक जीएसएम मॉडेम के साथ बोर्ड पर बनाएंगे।
हम हवा पर एआरएम फर्मवेयर को अपग्रेड करने में सक्षम होना चाहते हैं।

क्या उसके लिए कोई अच्छा, विश्वसनीय, खुला स्रोत समाधान है?
यदि नहीं, तो क्या इस सुविधा के साथ सशुल्क ओएस है?


2
एआरएम काफी सामान्य है: एआरएम आर्किटेक्चर को एम्बेड करने वाले कई निर्माता हैं, और उनमें से कुछ उस सुविधा को प्रदान कर सकते हैं।
clabacchio

1
एआरएम चिप / परिवार के बारे में अधिक विशिष्ट जानकारी जो आप उपयोग करने की योजना बना रहे हैं वह अच्छा होगा। कई नहीं तो सभी कॉर्टेक्स-एम माइक्रोकंट्रोलर उपयोगकर्ता कोड से फ्लैश करने के लिए लेखन का समर्थन करते हैं। उदाहरण ओपन-सोर्स कार्यान्वयन मौजूद हैं, जैसे कि मेपल बूटलोडर leaflabs.com/docs/bootloader.html , और मुझे लगता है कि मैंने फर्मवेयर को कुछ क्वाडकोप्टर में समर्थित रेडियो लिंक पर अपग्रेड करते देखा है।
कांटे

हम इस समय एआरएम डिवाइस को नहीं चुना है;)
hotips

7
फर्मवेयर अपग्रेड के साथ बड़ी समस्या यह है कि फर्मवेयर के साथ कुछ गड़बड़ होने पर चिप को अपडेट मोड में कैसे मजबूर किया जाए। जब आपके पास चिप का उपयोग होता है, तो आप इसे रीसेट कर सकते हैं और बूटलोड पिन को उच्च कर सकते हैं, लेकिन आप हवा में ऐसा कैसे करने जा रहे हैं? एकमात्र विश्वसनीय समाधान जिसकी मैं कल्पना कर सकता हूं कि एक दूसरी चिप (नॉन-अपडेबल) है जो मूल संचार को संभालती है जो मुख्य चिप को अपडेट कर सकती है। उस समस्या को हल करने के बाद वास्तविक बूटलोडिंग (उदाहरण के लिए) चिप में निर्मित बूटलोडर का उपयोग करना जितना आसान हो सकता है (उदाहरण के लिए, LPC uC की मुझे पता है कि सभी में एक सीरियल बूटलोडर है)।
राउटर वैन ओइजेन

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

जवाबों:


9

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

मुख्य एप्लिकेशन में सामान्य संचार प्रोटोकॉल में तीन अतिरिक्त पैकेट प्रकार जोड़े गए हैं, जिसमें त्रुटि का पता लगाना और शीर्ष पर पुन: प्रयास करना शामिल है:

  1. एक फ़र्मवेयर अपडेट कमांड एक बाहरी SPI फ़्लैश में आरक्षित मेमोरी क्षेत्र को साफ़ करता है। यदि यूनिट अपनी बैकअप बैटरी से चल रही है या बाहरी शक्ति से चल रही है तो यह एक त्रुटि देता है लेकिन बैटरी की स्थिति 25% से नीचे है।

  2. एक लेखन ब्लॉक कमांड एक ऑफसेट पते और डेटा को स्वीकार करता है जो बाहरी फ़्लैश मेमोरी में छोटे हिस्से में लिखा जाता है। उच्च स्तर का प्रोटोकॉल त्रुटि का पता लगाने और पुन: प्राप्ति का ध्यान रखता है। प्रत्येक ब्लॉक के लिखे जाने के बाद इसे वापस पढ़ा जाता है और कमांड के स्वीकृत होने से पहले सत्यापित किया जाता है।

  3. फ़िनिश फ़र्मवेयर अपडेट कमांड में वह लंबाई शामिल है जिसे प्राप्त फ़र्मवेयर को आगे सत्यापन के लिए पूरी छवि के CRC32 के साथ होना चाहिए। यदि यह बाहरी फ्लैश मेमोरी की सामग्री से मेल खाता है और बिजली की स्थिति अभी भी ठीक है तो लंबाई और CRC32 को एक 'मैजिक नंबर' के साथ एक EEPROM क्षेत्र में स्थानांतरित किया गया है ताकि यह दर्शाया जा सके कि फर्मवेयर अपडेट लंबित है।

  4. वॉचडॉग पुनरारंभ करने के लिए बाध्य करने के लिए मुख्य अनुप्रयोग में एक कठिन लूप निष्पादित किया जाता है।

  5. बूटलोडर (जो एआरएम के फ्लैश के एक लिखित संरक्षित क्षेत्र में स्थित है) EEPROM में जादू की संख्या को देखता है और एक बार फिर छवि के CRC32 को सत्यापित करता है। यदि सब ठीक है तो यह एआरएम के फ्लैश के मुख्य प्रोग्राम क्षेत्र में बाहरी फ्लैश से छवि को स्थानांतरित करता है।

  6. EEPROM से लंबित अपग्रेड जानकारी साफ़ हो गई है और एक हार्ड लूप एक और रिबूट को मजबूर करता है। इस बार बूटलोडर मुख्य अनुप्रयोग को सामान्य रूप से शुरू करेगा।

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


1

क्या आप लिनक्स या आरटीओएस, या नंगे धातु चला रहे हैं? यदि डेबियन का उपयोग कर आप वर्तमान फाइलसिस्टम का एक स्नैपशॉट ले सकते हैं, तो "एप्ट-गेट" के माध्यम से एक अपग्रेड करें, उसके बाद बदलावों को रखें या रोलबैक करें कि यह काम किया है या नहीं।


हमारे पास आवेदन के आधार पर लिनक्स और नंगे धातु हैं ;-)
21

1
यदि आपके पास लिनक्स है तो आप उस बुनियादी ढांचे का भरपूर लाभ उठा सकते हैं। जिस तरह से मैं अपने वर्तमान प्रोजेक्ट पर अपडेट संभाल रहा हूं, वह है। कस्टम एप्लिकेशन के लिए .deb फाइलें, फिर सिस्टम को अपडेट करने के लिए apt-get अपडेट का उपयोग करें। मैं भी btrfs के साथ प्रयोग कर रहा हूँ। वह फाइलसिस्टम आपको स्नैपशॉट लेने देता है। इसलिए मेरी योजना वांछित निर्देशिकाओं को स्नैपशॉट बनाने की है, कोशिश करें और अपडेट करें, और अगर यह काम नहीं करता है, तो स्नैपशॉट वापस कर दें। यदि आप नंगे धातु पर हैं, तो आपको संभवतः सामान्य दोहरी मेमोरी दृष्टिकोण, नवीनतम कार्य कोड के लिए एक छवि, और ताज़ा डाउनलोड किए गए कोड के लिए अन्य के साथ जाना होगा।
फ्रेड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.