- एवीआर में फ़्यूज़ क्या हैं - एक विस्तार से स्पष्टीकरण
- Arduino में फ्यूज बिट्स
- एवीआर में फ़्यूज़ का परीक्षण करने के लिए आवश्यक घटक
- AVR में फ्यूज बिट्स के परीक्षण के लिए योजनाबद्ध
- AVR में फ़्यूज़ का परीक्षण करना
इस ट्यूटोरियल में, हम फ़्यूज़ के बारे में बात करने जा रहे हैं। जब मैं कॉलेज में था और इलेक्ट्रॉनिक्स में सभी शांत चीजों के बारे में सीख रहा था, तो मैंने पहली बार AVR में फ्यूज शब्द को सुना, इस विषय पर मेरा प्रारंभिक विचार था, ओह! AVR के अंदर कुछ है जो अगर मैंने कुछ गलत किया तो मैं उड़ जाऊंगा। इसके बाद, इंटरनेट से गुजरने के लिए ज्यादा संसाधन उपलब्ध नहीं थे। मैंने यह पता लगाने के लिए काफी खोज की कि इन फ़्यूज़ ने AVR माइक्रोकंट्रोलर के अंदर कुछ विशेष बिट्स को संदर्भित किया है । ये बिट AVR के अंदर छोटे स्विच की तरह होते हैं और इन्हें चालू / बंद करके हम AVR की कुछ विशेष विशेषताओं को चालू / बंद कर सकते हैं। इसे चालू और बंद करने का मतलब है सेटिंग और रीसेट करना।
हम एवीआर में फ्यूज बिट्स के बारे में चर्चा करने के लिए इस अवसर को लेने जा रहे हैं । सादगी के लिए, हम एक Arduino बोर्ड का उदाहरण लेंगे, जिसमें लोकप्रिय ATmega328P माइक्रोकंट्रोलर हैं । यहां, आप सीखेंगे कि इनमें से कुछ सुविधाओं को चालू और बंद करने के लिए इन फ़्यूज़ को कैसे सेट किया जाए, जो वास्तविक जीवन के अनुप्रयोगों में वास्तव में काम आता है। तो, चलो इसे सही में मिलता है।
हमारे पिछले पोस्टों में, हमने AVR माइक्रोकंट्रोलर के साथ Interfacing GSM मॉड्यूल और AVR माइक्रोकंट्रोलर के साथ Interfacing HC-05 जैसे कई AVR माइक्रोकंट्रोलर प्रोजेक्ट बनाए हैं। यदि आप उन परियोजनाओं के बारे में अधिक जानना चाहते हैं, तो आप उन्हें देख सकते हैं।
एवीआर में फ़्यूज़ क्या हैं - एक विस्तार से स्पष्टीकरण
जैसा कि हमने पहले चर्चा की थी, माइक्रोकंट्रोलर में फ़्यूज़ एवीआर माइक्रोकंट्रोलर में विभिन्न विशेषताओं को सक्षम और अक्षम करने के लिए छोटे स्विच की तरह होते हैं जिन्हें चालू और बंद किया जा सकता है। यह वह हिस्सा है जहां हमारा अगला सवाल उठता है, तो हम इन फ़्यूज़ को कैसे सेट या रीसेट करते हैं? इस प्रश्न का उत्तर सरल है: हम इसे फ्यूज रजिस्टरों की सहायता से करते हैं ।
ATmega328P IC में, कुल 19 फ्यूज बिट्स हैं और वे तीन फ्यूज बाइट्स में विभाजित हैं। जिन्हें "विस्तारित फ्यूज बाइट", "हाई फ्यूज बाइट" और "लो फ्यूज बाइट" के रूप में परिभाषित किया गया है ।
यदि आप ATmega328 / P डेटाशीट रेव: 7810D-AVR-01/15 की तालिका -27 को देखते हैं, तो आप फ्यूज बिट्स के बारे में सभी छोटे विवरणों का पता लगा सकते हैं। लेकिन नीचे की छवि आपको डेटाशीट के फ्यूज बिट्स सेक्शन के बारे में बेहतर विचार देगी।
अब जैसा कि आपने फ्यूज बिट्स के बारे में थोड़ा सा जान लिया है, चलो डेटाशीट के माध्यम से जाने और इस आईसी के बारे में सभी आवश्यक विवरणों का पता लगाएं।
विस्तारित फ्यूज बिट्स:
एक बार जब आप फ्यूज बिट्स टैब पर क्लिक करते हैं और थोड़ा सा नीचे स्क्रॉल करते हैं, तो आपको टेबल 27-5 मिलेगा: जो "विस्तारित फ्यूज बाइट" के लिए तालिका दिखाता है, जिसे आमतौर पर " ईएफयूएसई" के रूप में जाना जाता है । नीचे दी गई छवि बिल्कुल यही दर्शाती है।
इस तालिका में, केवल तीन प्रयोग करने योग्य बिट्स हैं, और अन्य तीन आरक्षित हैं। ये तीन बिट्स ब्राउनआउट डिटेक्शन लेवल से संबंधित हैं । जैसा कि आप नोट में देख सकते हैं यदि हम टेबल 28-5 को देखते हैं, तो हम इसके बारे में अधिक जानकारी पा सकते हैं।
जैसा कि आप ऊपर की तालिका में देख सकते हैं, हमारे पास ब्राउउट डिटेक्शन के लिए तालिका है । ब्राउनआउट का पता लगाना एक विशेषता है जो आपूर्ति वोल्टेज एक निश्चित वोल्टेज स्तर से नीचे आने पर माइक्रोकंट्रोलर को रीसेट करता है। ATmega328P IC में, हम ब्राउनआउट डिटेक्शन को पूरी तरह से निष्क्रिय कर सकते हैं या हम इसे उपरोक्त तालिका में दिखाए गए स्तरों पर सेट कर सकते हैं।
उच्च फ्यूज बाइट्स:
जैसा कि आप नीचे दी गई छवि में देख सकते हैं, डेटाशीट की तालिका 27-6: ATmega32830 आईसी के उच्च फ्यूज बिट्स को दिखाती है।
उच्च फ्यूज ATmega328 Microcontroller के अंदर विभिन्न कार्यों के साथ सौदा। इस खंड में, हम हायर फ़्यूज़ बिट्स और उनके कामकाज के बारे में बात करेंगे। चलो BOOTRST, BOOTSZ0 और BOOTSZ1 बिट्स के साथ शुरू करते हैं। ये तीन बिट्स बूट आकार सेट करने के लिए जिम्मेदार हैं; बूट आकार बूटलोडर को स्थापित करने के लिए आरक्षित मेमोरी की मात्रा को संदर्भित करता है ।
एक बूटलोडर सॉफ्टवेयर का एक विशेष टुकड़ा है जो माइक्रोकंट्रोलर के शीर्ष पर चलता है और विभिन्न कार्यों का प्रबंधन करता है। लेकिन Arduino के मामले में, बूटलोडर का उपयोग माइक्रोकंट्रोलर के अंदर Arduino स्केच को अपलोड करने के लिए किया जाता है। हमारे पिछले लेखों में से एक में, हमने आपको दिखाया है कि कैसे Armeino का उपयोग करके ATmega328P में बूटलोडर को जलाएं। यदि आप विषय में रुचि रखते हैं तो आप यह देख सकते हैं। हमारे विषय पर वापस आते हुए, उच्च बाइट में अन्य बिट्स के उद्देश्यों को यथोचित रूप से स्पष्ट किया जाता है, EESAVE बिट को EEPROM मेमोरी को संरक्षित करना है जबकि एक चिप मिटा चक्र के तहत किया जाता है। WDTON बिट वॉचडॉग टाइमर को सक्षम या अक्षम करना है ।
वॉचडॉग टाइमर ATmega328P IC में एक विशेष टाइमर है जिसमें इसकी अलग घड़ी होती है और स्वतंत्र रूप से चलती है। यदि वॉचडॉग टाइमर सक्षम है, तो आपको इसे एक निश्चित अवधि के साथ खाली करने की आवश्यकता है, अन्यथा, वॉचडॉग टाइमर माइक्रोकंट्रोलर को रीसेट करेगा। यह एक उपयोगी विशेषता है जो प्रोसेसर के अटक जाने पर कई माइक्रोकंट्रोलर के भीतर आती है; वॉचडॉग अंतिम एप्लिकेशन को किसी भी क्षति को रोकने के लिए इसे रीसेट करेगा।
डिबग तार को सक्षम करने के लिए DWEN बिट है; यह एक तैयारी प्रोटोकॉल है जो आंतरिक रूप से उनके हार्डवेयर में बनाया गया है, जो प्रोसेसर को प्रोग्राम और डीबग करने के लिए उपयोग किया जाता है। इस सुविधा को सक्षम करने के साथ, आप प्रोसेसर को फ्लैश कर सकते हैं और सिंगल वायर संलग्न कर सकते हैं। लेकिन इसका उपयोग करने के लिए, आपको विशेष हार्डवेयर की आवश्यकता होगी जो Atmel की तैयारी है।
शेष दो बिट्स वे बिट्स हैं जिनसे आपको बचने की आवश्यकता है जब तक कि आप वास्तव में नहीं जानते कि आप क्या कर रहे हैं। ये RSTDISBL बिट -7 और स्पीन बिट -5 हैं। RSTDISBL (बाहरी रीसेट अक्षम) जैसा कि नाम से तात्पर्य है बाहरी हार्डवेयर रीसेट पिन अक्षम करता है, और SPI बिट का उपयोग SPI प्रोग्रामिंग इंटरफ़ेस को अक्षम करने के लिए किया जाता है। इन दो बिट्स में से किसी को अक्षम करना आपके AVR को पूरी तरह से ईंट कर सकता है; इसलिए, उन्हें अकेला छोड़ना एक अच्छा विचार है।
कम फ्यूज बाइट्स:
जैसा कि आप नीचे दी गई छवि में देख सकते हैं, डेटाशीट की तालिका 27-7: ATmega32880 IC के लोअर फ्यूज बिट्स को दिखाती है।
यह फ्यूज बाइट AVR के अंदर घड़ी स्रोत और घड़ी के कुछ अन्य मापदंडों को स्थापित करने के लिए जिम्मेदार है। इस भाग में, हम उस सब के बारे में जानेंगे।
7 वें बिट या CKDIV8 ध्वज को घड़ी के स्रोत को 8 से विभाजित करने के लिए सेट किया जा सकता है, यह बहुत काम आता है जिसे आप पहले से ही जान सकते हैं यदि आपने खुद AVR की प्रोग्रामिंग करने की कोशिश की है। अगला बिट CKOUT बिट है और कम फ्यूज बाइट में यह 6 वाँ बिट है। प्रोग्रामिंग यह microcontroller के PORTB0 पर आंतरिक घड़ी संकेत उत्पादन होगा।
बिट्स -5 और बिट -4 SUT1 और SUT0 माइक्रोकंट्रोलर के स्टार्ट-अप समय को नियंत्रित करते हैं। यह किसी भी स्टार्ट-अप कार्यों को रोकता है जो आपूर्ति वोल्टेज को स्वीकार्य न्यूनतम सीमा वोल्टेज स्तर तक पहुंचने से पहले हो सकता है या नहीं हो सकता है। और अंतिम चार CKSEL0 - 4 बिट्स का उपयोग माइक्रोकंट्रोलर के घड़ी स्रोत का चयन करने के लिए किया जाता है। नीचे दी गई तालिका आपको इन चार बिट्स की बेहतर समझ प्रदान करती है जो घड़ी के स्रोत को स्थापित करने के लिए जिम्मेदार हैं, आप इस तालिका को डेटाशीट के क्लॉक सोर्स अनुभाग पर पा सकते हैं।
अब, इससे पहले कि हम आगे बढ़ें, एक और चीज है जो मुझे गुजरनी चाहिए वह है ऑसिलेटर स्टार्ट-अप देरी के लिए तालिका। स्टार्ट-अप देरी से, हम कम फ्यूज बाइट के बिट्स 4 और 5 का उल्लेख कर रहे हैं। विलंब को उस स्थिति के आधार पर सेट करने की आवश्यकता है जो सर्किट में काम करेगा और आपके द्वारा उपयोग किए जा रहे ओसीलेटर के प्रकार। जब पावर-अप या पावर-डाउन अनुक्रम निष्पादित किया जाता है, तो डिफ़ॉल्ट मान 6 घड़ी चक्रों के साथ बढ़ती शक्ति को धीमा करने के लिए सेट होते हैं। अगला, स्टार्ट-अप के बाद देरी के 65 एमएस के साथ 14 घड़ी चक्र की एक और देरी है।
हे भाई! यह पचाने के लिए बहुत सारी जानकारी थी। लेकिन किसी भी आगे बढ़ने से पहले, आइए इस अनुभाग को एक त्वरित नोट के साथ समाप्त करते हैं।
ध्यान दें:
यदि आपने डेटाशीट को ध्यान से देखा है, तो आपने देखा होगा, फ़्यूज़ बिट को प्रोग्रामिंग करने का अर्थ है इसे कम सेट करना, अर्थात 0 (शून्य), जो कि हम आम तौर पर किसी पोर्ट को उच्च या निम्न बनाने के लिए करते हैं। आपको अपने फ़्यूज़ को कॉन्फ़िगर करते समय इसे ध्यान में रखना होगा।
Arduino में फ्यूज बिट्स
हमने उपरोक्त अनुभाग में फ़्यूज़ के बारे में बहुत सारी बातें की हैं, लेकिन इस खंड में, उन्हें कैसे कॉन्फ़िगर करें और उन्हें माइक्रोकंट्रोलर में कैसे लिखें, इसके बारे में बात करते हैं। उसके लिए, हमें Avrdude नामक एक टूल की आवश्यकता होगी । यह एक उपकरण है जिसे AVR माइक्रोकंट्रोलर में मेमोरी को पढ़ने, लिखने और संशोधित करने के लिए उपयोग किया जा सकता है। यह SPI के साथ काम करता है और इसमें विभिन्न प्रकार के प्रोग्रामर के लिए समर्थन की एक लंबी सूची है। आप नीचे दिए गए लिंक से टूल डाउनलोड कर सकते हैं। इसके अलावा, हम अपने पसंदीदा माइक्रोकंट्रोलर अरुडिनो का उपयोग करेंगे।
- डाउनलोड Avrdude संस्करण 6.3 विंडोज- ming32
अब, जब आपके पास Avrdude है, तो आपको उसे निकालने और उस फ़ोल्डर में एक कमांड विंडो खोलने की आवश्यकता है। इसके अलावा, यदि आप इसे बाद में उपयोग करने की योजना बना रहे हैं, तो आप अपने विंडोज़ पर्यावरण चर अनुभाग में फ़ोल्डर पथ जोड़ सकते हैं। लेकिन मैं इसे अपने डेस्कटॉप पर रखूंगा और वहां एक कमांड विंडो खोलूंगा। एक बार जब हमने ऐसा कर लिया है, तो हम अपने पीसी के लिए USBasp प्रोग्रामर को कनेक्ट करेंगे और हम यह सुनिश्चित करेंगे कि हमारे पास हमारे USBasp प्रोग्रामर के लिए उचित ड्राइवर हो। एक बार जब हम ऐसा कर लेते हैं, तो हम जाने के लिए अच्छे हैं और हम पहले डिफ़ॉल्ट फ्यूज मान को पढ़ेंगे। ऐसा करने के लिए, आपको निम्न कमांड चलाने की आवश्यकता है।
avrdude.exe -c usbasp -p m328p -U lfuse: r: low_fuse_val.txt: h -U hfuse: r: high_fuse_val.txt: h -U efuse: r: ext_fuse_val.txt: h
यदि सब कुछ सही है, तो यह कमांड फ्यूज बाइट्स को पढ़ेगा और उन्हें तीन अलग-अलग टेक्स्ट फाइलों में डाल देगा। नीचे दी गई छवि आपको प्रक्रिया का बेहतर विचार देगी।
जैसा कि आप देख सकते हैं, अर्डुडे ने Arduino नैनो पर फ्यूज बिट्स के माध्यम से पढ़ा और उन्हें तीन अलग-अलग पाठ फ़ाइलों में सहेजा। अब, हमने उन्हें खोला और तीन मान लिए; के लिए 0xFD,: EFUSE के लिए HFUSE: 0XDA, के लिए LFUSE: 0xFF। यह डिफ़ॉल्ट फ्यूज वैल्यू था जो हमें एक Arduino नैनो के लिए मिला था। अब, इन बिट्स को बाइनरी में परिवर्तित करते हैं और उनकी तुलना डेटशीट से उनके डिफ़ॉल्ट मान से करते हैं। नीचे दी गई तालिका ठीक यही दर्शाती है।
सुविधा के लिए, फ़्यूज़ बिट्स हेक्साडेसिमल मानों में लिखे गए हैं, लेकिन अगर हम उन्हें बाइनरी मानों में परिवर्तित करते हैं और उनकी तुलना डेटाशीट से करते हैं, तो हम जानेंगे कि क्या हो रहा है। चलिए लोअर फ्यूज बाइट से शुरू करते हैं। जैसा कि आप उपरोक्त स्ट्रिंग से देख सकते हैं, यह 0XFF पर सेट है और बाइनरी मान 0B11111111 होगा ।
Arduino के साथ स्टॉक लोअर फ्यूज बाइट्स की तुलना:
कम फ्यूज बाइट |
बिट नं। |
AVR में डिफ़ॉल्ट मान |
Arduino का डिफ़ॉल्ट मान |
CKDIV8 |
। |
0 (क्रमादेशित) |
1 (अप्रमाणित) |
CKOUT |
६ |
1 (अप्रमाणित) |
1 (अप्रमाणित) |
SUT1 |
५ |
1 (अप्रमाणित) |
1 (अप्रमाणित) |
SUT0 |
४ |
0 (क्रमादेशित) |
1 (अप्रमाणित) |
CKSEL3 |
३ |
0 (क्रमादेशित) |
1 (अप्रमाणित) |
CKSEL2 |
२ |
0 (क्रमादेशित) |
1 (अप्रमाणित) |
CKSEL1 |
1 |
1 (अप्रमाणित) |
1 (अप्रमाणित) |
CKSEL0 |
० |
0 (क्रमादेशित) |
1 (अप्रमाणित) |
उच्चतर फ्यूज बाइट 0X110010 पर बाइनरी में 0XDA पर सेट है ।
बाइनरी में उच्च फ्यूज बाइट:
हाई फ्यूज बाइट |
बिट नं। |
AVR में डिफ़ॉल्ट मान |
Arduino का डिफ़ॉल्ट मान |
RSTDISBL |
। |
1 (अप्रमाणित) |
1 (अप्रमाणित) |
DWEN |
६ |
1 (अप्रमाणित) |
1 (अप्रमाणित) |
दर्शक |
५ |
0 (क्रमादेशित) |
0 (क्रमादेशित) |
WDTON |
४ |
1 (अप्रमाणित) |
1 (अप्रमाणित) |
EESAVE |
३ |
1 (अप्रमाणित) |
1 (अप्रमाणित) |
BOOTSZ1 |
२ |
0 (क्रमादेशित) |
0 (क्रमादेशित) |
BOOTSZ0 |
1 |
0 (क्रमादेशित) |
1 (अप्रमाणित) |
BOOTRST |
० |
1 (अप्रमाणित) |
0 (क्रमादेशित) |
विस्तारित फ्यूज बाइट के लिए सेटिंग 0XFD पर सेट है, बाइनरी में यह 0B11111101 है।
बाइनरी में विस्तारित फ्यूज बाइट:
विस्तारित फ्यूज बाइट |
बिट नं। |
AVR में डिफ़ॉल्ट मान |
Arduino का डिफ़ॉल्ट मान |
- |
। |
1 |
1 |
- |
६ |
1 |
1 |
- |
५ |
1 |
1 |
- |
४ |
1 |
1 |
- |
३ |
1 |
1 |
BODLEVEL2 |
२ |
1 (अप्रमाणित) |
1 (अप्रमाणित) |
BODLEVEL1 |
1 |
1 (अप्रमाणित) |
0 (क्रमादेशित) |
BODLEVEL0 |
० |
1 (अप्रमाणित) |
1 (अप्रमाणित) |
अब, यह इस खंड के अंत का प्रतीक है। अब तक, हमने एवीआर माइक्रोकंट्रोलर और इसके फ्यूज बिट्स के बारे में बहुत कुछ सीखा है। तो, आइए इस लेख को Arduino Nano में फ्यूज बिट्स के साथ फेरबदल और प्रयोग करके अपने सिद्धांत को परीक्षण में शामिल करें।
एवीआर में फ़्यूज़ का परीक्षण करने के लिए आवश्यक घटक
हमने उपरोक्त भाग में फ़्यूज़ के बारे में बहुत सारी बातें की हैं। लेकिन लेख में आगे बढ़ने के लिए, हमें कुछ हार्डवेयर घटकों और कुछ सॉफ़्टवेयर टूल की आवश्यकता है। इस खंड में, हम उन लोगों के बारे में बात करेंगे। छवियों के साथ आवश्यक घटकों की एक सूची नीचे दी गई है।
- ब्रेडबोर्ड - १
- अरुडिनो नैनो - 1
- USBasp AVR प्रोग्रामर - 1
- यूएसबी केबल - 1
- एवीआर 10-पिन से 6- पिन कनवर्टर - 1
- Avrdude (प्रोग्रामिंग उपकरण AVR के लिए)
- एलईडी - १
- 330R रेसिस्टर - 1
- जंपर केबल
AVR में फ्यूज बिट्स के परीक्षण के लिए योजनाबद्ध
इस सेटअप में हार्डवेयर परीक्षण सेटअप नीचे दिखाया गया है। हमने Arduino नैनो को USB केबल के साथ PC से कनेक्ट किया है, और हमने USBasp प्रोग्रामर को भी PC से कनेक्ट किया है। इस लेख का उद्देश्य AVR में फ्यूज बिट्स को प्रोग्राम करना है। उस कारण से, हमने USBasp प्रोग्रामर को Arduino के साथ जोड़ा है। नीचे दी गई छवि आपको सेटअप का बेहतर विचार देगी।
AVR में फ़्यूज़ का परीक्षण करना
परीक्षण सेटअप नीचे दिखाया गया है। जैसा कि आप देख सकते हैं, हमने Arduino और USBasp प्रोग्रामर को मेरे लैपटॉप के USB से कनेक्ट किया है।
अब Arduino IDE खोलते हैं और एक बेसिक ब्लिंक स्केच अपलोड करते हैं। मूल ब्लिंक स्केच की सामग्री आत्म-व्याख्यात्मक है, इसलिए मैंने इसके बारे में कोई विवरण नहीं दिया।
आप वीडियो में देखेंगे कि पिन नंबर 13 पर लेड ब्लिंक कर रहा है जैसा कि इसे चाहिए। अब फ़्यूज़ सेटिंग को ट्विक करें और इसे अपने डिफॉल्ट मान पर सेट करें। और जैसा कि हमने पहले डेटाशीट में देखा है; EFUSE 0xFF है; HFUSE D9 है; LFUSE है: 62 अब इसे Avrdude के साथ कॉन्फ़िगर करते हैं, इसे फ्लैश करते हैं, और देखते हैं कि क्या होता है। हमारे द्वारा उपयोग किया जाने वाला कोड है-
avrdude -c usbasp -p m328P -U lfuse: w: 0x62: m -U hfuse: w: 0xd9: m -U efuse: w: 0xff: m
एक बार जब मैं ऐसा करता हूं, तो आप देखेंगे कि एलईडी बहुत धीरे-धीरे झपकेगा क्योंकि हमने 16Mhz की घड़ी के लिए मान की गणना की है और अब फ्यूज जलने के बाद यह केवल 1Mhz आंतरिक RC थरथरानवाला है। यही कारण है कि एलईडी इतनी धीमी गति से पलक झपक रही है। अब एक बार फिर स्केच अपलोड करने का प्रयास करते हैं। हम देखेंगे कि Arduino एक त्रुटि देता है और कोड अपलोड नहीं किया जाता है। क्योंकि फ़्यूज़ में फेरबदल करके, हमने बूटलोडर सेटिंग्स को भी गड़बड़ कर दिया है। आप निचे इमेज में देख सकते है।
इसे ठीक करने के लिए और Arduino को वापस रखने के लिए जैसा कि पहले था, हमें Arduino के लिए बस बूटलोडर को फिर से जलाने की आवश्यकता है। ऐसा करने के लिए, टूल -> प्रोग्रामर- USBasp पर जाएं , और एक बार जब हम ऐसा कर लेते हैं, तो हम फिर से टूल पर जा सकते हैं और हम बर्न बूटलोडर विकल्प पर क्लिक कर सकते हैं। यह आपके Arduino पर फिर से स्टॉक बूटलोडर को जला देगा और सबकुछ वापस उसी तरह चला जाएगा जैसा पहले था।
बाद बूटलोडर को Arduino में वापस फ्लैश किया गया था, यह अपनी मूल स्थिति में वापस चला गया और बूटलोडर को फिर से जलाने के बाद अंतिम छवि आपको एक निमिष एलईडी दिखाती है।
और यह इस लेख के अंत को चिह्नित करता है। मुझे आशा है कि आपने लेख का आनंद लिया और कुछ नया सीखा। यदि आपके पास लेख के बारे में कोई प्रश्न हैं, तो नीचे टिप्पणी करने में संकोच न करें।