CodingBox दस्तावेज़

कंट्रोलर और उसका फ़र्मवेयर: DDM, APC, मेमोरी, प्रोटेक्शन

हर मैनेज्ड ट्रांसीवर के अंदर एक छोटा कंप्यूटर होता है। माइक्रोकंट्रोलर (MCU) मापता है, रेगुलेट करता है, रिपोर्ट करता है और — प्रोग्रामर के नज़रिए से सबसे ज़रूरी बात — वही वह मेमोरी है जिसे आप पढ़ते और लिखते हैं। किसी मॉड्यूल में एक साधारण EEPROM है या एक MCU जो उसका नाटक कर रहा है, यह तय करता है कि इसे कैसे कोड किया जा सकता है, कुछ राइट पावर साइकल के बाद क्यों ग़ायब हो जाते हैं और पासवर्ड आख़िर होते ही क्यों हैं। यह पेज बताता है कि कंट्रोलर क्या करता है और इसका डिज़ाइन बेंच पर कैसे दिखता है।

MCU क्या करता है

टास्कतफ़सीलकिस रूप में दिखता है
मेज़रमेंटएक 10–12-बिट ADC के ज़रिए प्रति सेकंड कई बार तापमान (थर्मिस्टर या ऑन-चिप सेंसर), Vcc, लेज़र बायस, मॉनिटर-PD करंट (Tx) और रिसीवर फ़ोटोकरंट (Rx) सैंपल करता है; फ़ैक्ट्री कैलिब्रेशन लागू करता हैDDM वैल्यू — पैरामीटर
APC — ऑटोमैटिक पावर कंट्रोलमॉनिटर-PD करंट की फ़ैक्ट्री टारगेट से तुलना करता है और ड्राइवर के बायस DAC को एडजस्ट करता हैकॉन्स्टेंट Tx पावर, बढ़ता बायस — Tx बायस और एजिंग
टेंपरेचर कंपनसेशनलुक-अप टेबल तापमान के हिसाब से मॉड्यूलेशन करंट और, PAM4 पर, DSP सेटिंग एडजस्ट करती हैंस्थिर एक्सटिंक्शन रेशियो
TEC कंट्रोलकूल्ड मॉड्यूल पर लेज़र तापमान बनाए रखने वाला PID लूप; DWDM पर वेवलेंथ-लॉकर फ़ीडबैकलेज़र तापमान, TEC करंट मॉनिटर
थ्रेशोल्ड और फ़्लैगहर मॉनिटर की अलार्म/चेतावनी थ्रेशोल्ड से तुलना करता है, लैच्ड फ़्लैग सेट करता है, IntL ड्राइव करता हैथ्रेशोल्ड और अलार्म
लो-स्पीड पिनTX_DISABLE, RS0/RS1, LPMode, ResetL पढ़ता है; TX_FAULT, RX_LOS ड्राइव करता है (या हार्डवेयर सिग्नल को गेट करता है)पिन का व्यवहार
टू-वायर स्लेवA0h/A2h (SFP) पर या पेज/बैंक के साथ A0h (QSFP, CMIS) पर जवाब देता हैमेमोरी मैप — टू-वायर इंटरफ़ेस
स्टेट मशीनCMIS मॉड्यूल और डेटा-पाथ स्टेट; एप्लीकेशन सिलेक्शन; स्क्वेल्चCMIS
प्रोटेक्शन और वेंडर फ़ंक्शनपासवर्ड, राइट-प्रोटेक्ट रीजन, सेव कमांड, वेंडर अनलॉक, ऑथेंटिकेशन सिग्नेचरराइट-प्रोटेक्शन के प्रकार
CDB / फ़र्मवेयर अपडेटCMIS मॉड्यूल पर, नई फ़र्मवेयर इमेज रिसीव और फ़्लैश करता हैफ़र्मवेयर वर्ज़न बाइट

सामान्य पार्ट: लो-कॉस्ट SFP/SFP+ में कुछ kB फ़्लैश वाले 8-बिट MCU (8051-क्लास); 100G+ और CMIS मॉड्यूल में 32-बिट Cortex-M क्लास; कुछ विक्रेता एक डेडिकेटेड ट्रांसीवर-कंट्रोलर ASIC इस्तेमाल करते हैं जो ADC, DAC और टू-वायर स्लेव को इंटीग्रेट करता है।

मेमोरी बनाने के दो तरीक़े

डिज़ाइनमैप कैसे स्टोर होता हैप्रोग्रामिंग के लिए नतीजे
A0h के लिए डिस्क्रीट EEPROM (जैसे, AT24C02-क्लास), A2h के लिए MCUA0h पहचान जानकारी एक असली सीरियल EEPROM है जिससे होस्ट और प्रोग्रामर सीधे बात करते हैं; MCU सिर्फ़ डायग्नोस्टिक्स हैंडल करता हैA0h राइट साधारण EEPROM राइट हैं — t_WR और पेज साइज़ का ध्यान रखें; एक हार्डवेयर WP पिन इन्हें ब्लॉक कर सकता है (राइट-प्रोटेक्शन के प्रकार 1–3)
MCU-एमुलेटेड मैपMCU हर टू-वायर रिक्वेस्ट का जवाब RAM से देता है और बदलावों को अपने इंटरनल फ़्लैश/EEPROM में मिरर करता है — या नहीं करताराइट वहाँ जाते हैं जहाँ फ़र्मवेयर तय करता है: स्वीकार, इग्नोर, पासवर्ड-गेटेड, सिर्फ़ एक सेव कमांड के बाद स्टोर, या अगले बूट पर फ़र्मवेयर की अपनी कॉपी से ओवरराइट (प्रकार 4–5)
हाइब्रिडवेंडर ब्लॉक के लिए EEPROM, पेज और पासवर्ड के लिए MCUबाइट रेंज के हिसाब से मिले-जुले नियम

एक एमुलेटेड मैप बेंच के ज़्यादातर रहस्य समझा देता है: एक ऐसे पेज से FFh जिसे फ़र्मवेयर इम्प्लीमेंट नहीं करता, ऐसे राइट जो “सफल” होते हैं और फिर पलट जाते हैं, ऐसे बाइट जो एक रेंज में रीड-ओनली हैं और अगली में फ़्री, MCU के सैंपलिंग में व्यस्त रहते हुए क्लॉक स्ट्रेचिंग (EEPROM रीड और राइट एरर)।

बूट और t_init विंडो

पावर-अप पर MCU अपने नॉन-वोलेटाइल स्टोर से कैलिब्रेशन और पहचान जानकारी लोड करता है, ADC शुरू करता है, APC को उसके टारगेट तक चलाता है और तभी टू-वायर स्लेव को एनेबल करके data-not-ready को क्लियर करता है। यही वह 300 ms (SFP) से 2 s (QSFP/CMIS) है जो स्पेसिफ़िकेशन होस्ट के जवाब की उम्मीद करने से पहले देते हैं, और यही वजह है कि इंसर्शन के तुरंत बाद की रीड बेकार डेटा लौटाती है (होस्ट क्या करता है)।

कैलिब्रेशन यहीं रहता है

रॉ ADC काउंट का उन कॉन्स्टेंट के बिना कोई मतलब नहीं जो फ़ैक्ट्री ने एक टेस्ट स्टेशन पर मापे थे: मॉनिटर-PD करंट बनाम असल लॉन्च पावर, रिसीवर फ़ोटोकरंट बनाम मॉड्यूल की तरंगदैर्ध्य पर इनपुट पावर, थर्मिस्टर कर्व, बायस DAC स्केल। इंटरनली कैलिब्रेटेड मॉड्यूल पर फ़र्मवेयर इन्हें लागू करता है और फ़िज़िकल यूनिट रिपोर्ट करता है; एक्सटर्नली कैलिब्रेटेड मॉड्यूल पर ये कॉन्स्टेंट A2h 56–91 पर लिखे जाते हैं ताकि होस्ट इन्हें लागू कर सके (कैलिब्रेशन)। वेंडर एरिया को ओवरराइट करना, जहाँ कुछ फ़र्मवेयर ये कॉन्स्टेंट रखते हैं, बेतुका DDM या एक मरा हुआ APC लूप पैदा करता है — एक लापरवाह राइट के मॉड्यूल को “ब्रिक” करने का क्लासिक तरीक़ा (मैन्युफ़ैक्चरिंग और टेस्टिंग)।

प्रोटेक्शन कैसे इम्प्लीमेंट किया जाता है

मैकेनिज़्मइम्प्लीमेंटेशनबेंच पर नज़र
पासवर्डफ़र्मवेयर पासवर्ड एरिया (SFP A2h 123–126, QSFP 123–126, CMIS 122–125) में लिखे गए 4 बाइट की तुलना एक स्टोर की गई वैल्यू से करता है; सेशन के लिए राइट अनलॉक करता हैसही वैल्यू डालने तक WRITE FAILपासवर्ड
राइट-प्रोटेक्ट रीजनफ़र्मवेयर उन रेंज पर राइट इग्नोर करता है जिन्हें वह रीड-ओनली मानता है (चेकसम, थ्रेशोल्ड, कैलिब्रेशन, वेंडर एरिया)बाइट बिना बदले वापस पढ़े जाते हैं, कोई एरर नहीं
एक डिस्क्रीट EEPROM पर हार्डवेयर WP पिनपिन मॉड्यूल के अंदर हाई पर टाइड है या MCU से ड्राइव होता हैइसे ड्राइव करने के लिए प्रोग्रामर बोर्ड चाहिए
सेव कमांडराइट RAM में जाते हैं; एक वेंडर-स्पेसिफ़िक सीक्वेंस इन्हें फ़्लैश में कमिट करता हैसीक्वेंस भेजे बिना पावर साइकल के बाद पलट जाता है
फ़र्मवेयर मिररबूट पर फ़र्मवेयर अपनी ही इमेज से मैप को फिर से लिखता हैहर पावर साइकल पर बदलाव ग़ायब हो जाते हैं — सिर्फ़ विक्रेता का टूल ही इमेज बदल सकता है
ऑथेंटिकेशनफ़र्मवेयर वेंडर बाइट में एक सिग्नेचर (सीरियल, वेंडर डेटा और एक सीक्रेट का हैश) कैलकुलेट करता है; होस्ट इसे वेरिफ़ाई करता हैपहचान जानकारी में बदलाव चेकसम पास कर जाते हैं फिर भी होस्ट रिजेक्ट कर देता है — विक्रेता लॉक

हर टाइप को कैसे पहचाना और प्रोग्राम किया जाता है: राइट-प्रोटेक्शन के प्रकार, EEPROM रीकोडिंग

फ़र्मवेयर अपडेट

CMIS मॉड्यूल CDB कमांड (स्टार्ट डाउनलोड, राइट ब्लॉक, कम्प्लीट, रन, कमिट) के ज़रिए टू-वायर बस पर फ़र्मवेयर रिसीव कर सकते हैं, अक्सर दो इमेज बैंक के साथ ताकि फ़ेल हुआ अपडेट वापस गिर सके। SFF-8472/8636 मॉड्यूल में कोई स्टैंडर्ड मैकेनिज़्म नहीं होता; विक्रेता वेंडर बाइट के ज़रिए प्रोप्राइटरी सीक्वेंस इस्तेमाल करते हैं। विक्रेता CMIS इंटरऑपरेबिलिटी की समस्याएँ फ़र्मवेयर फ़िक्स से ही सुलझाते हैं (CMIS समस्याएँ), और फ़र्मवेयर वर्ज़न बाइट (CMIS लोअर पेज 39–40, पेज 01h 128–129) को पहचान जानकारी के साथ रिकॉर्ड करना उपयोगी है।

कंट्रोलर के फ़ेल्योर मोड

लक्षणसंभावित कारण
मॉड्यूल बस पर इनविज़िबल, बाक़ी ऑप्टिक्स ठीकMCU बूट नहीं हो रहा: करप्टेड फ़र्मवेयर, ब्राउन-आउट, ख़राब क्रिस्टल
DDM वैल्यू फ़्रोज़न या बेतुकीADC या कैलिब्रेशन करप्शन; फ़र्मवेयर हैंग
Tx पावर ड्रिफ़्ट कर रही है जबकि APC को इसे रोके रखना चाहिएमॉनिटर-PD या ADC फ़ॉल्ट, APC डिसेबल्ड
रैंडम NACK, धीमी रीडMCU ओवरलोडेड (सैंपलिंग), एक तेज़ प्रोग्रामर से क्लॉक-स्ट्रेच लिमिट पार
काम करता है, पर हर राइट पलट जाता हैडिज़ाइन के हिसाब से फ़र्मवेयर मिरर — कोई ख़राबी नहीं
राइट के बाद मॉड्यूल डेडफ़र्मवेयर कॉन्फ़िगरेशन या कैलिब्रेशन एरिया ओवरराइट हो गया

CodingBox में

CodingBox मॉड्यूल को वैसे ही ट्रीट करता है जैसे फ़र्मवेयर इसे पेश करता है: यह मैप टाइप डिटेक्ट करता है, सेव-कमांड और मिरर्ड डिज़ाइन के लिए जाने-पहचाने पासवर्ड और प्रोग्रामिंग स्क्रिप्ट लागू करता है, चेकसम को फिर से कैलकुलेट करता है, हर राइट से पहले एक बैकअप रखता है और अगर कंट्रोलर बुरी तरह रिएक्ट करे तो आपको इसे code database से रीस्टोर करने देता है। EEPROM editor उन रेंज को मार्क करता है जिन्हें स्पेसिफ़िकेशन रीड-ओनली या वेंडर-स्पेसिफ़िक बताता है ताकि आपको पता रहे कि आप कब फ़र्मवेयर के निजी इलाक़े में लिख रहे हैं।


अगर आपको इस सामग्री में कोई अशुद्धि या त्रुटि दिखे, तो संबंधित अंश चुनें और Ctrl+Enter दबाकर