Kontroler i jego firmware: DDM, APC, pamięć, zabezpieczenia
Każdy zarządzany transceiver ma w środku mały komputer. Mikrokontroler (MCU) mierzy, reguluje, raportuje i — z punktu widzenia programisty najważniejsze — jest pamięcią, którą odczytujesz i zapisujesz. To, czy moduł ma zwykłą EEPROM, czy MCU udający EEPROM, decyduje o tym, jak można go zakodować, dlaczego część zapisów znika po cyklu zasilania i po co w ogóle istnieją hasła. Ta strona opisuje, co robi kontroler i jak jego konstrukcja objawia się na stanowisku.
Co robi MCU
| Zadanie | Szczegóły | Widoczne jako |
|---|---|---|
| Pomiar | próbkuje przez 10–12-bitowy ADC kilka razy na sekundę temperaturę (termistor albo czujnik na chipie), Vcc, prąd polaryzacji lasera, prąd monitor-PD (Tx) i fotoprąd odbiornika (Rx); stosuje kalibrację fabryczną | wartości DDM — Parametry |
| APC — automatyczna regulacja mocy | porównuje prąd monitor-PD z celem fabrycznym i dostraja DAC polaryzacji sterownika | stała moc Tx, rosnący prąd polaryzacji — Prąd polaryzacji Tx i starzenie |
| Kompensacja temperaturowa | tabele przeglądowe dostrajają prąd modulacji oraz, w PAM4, ustawienia DSP w funkcji temperatury | stabilny współczynnik wygaszenia |
| Sterowanie TEC | pętla PID utrzymująca temperaturę lasera w modułach chłodzonych; sprzężenie zwrotne stabilizatora długości fali w DWDM | monitory temperatury lasera i prądu TEC |
| Progi i flagi | porównuje każdy monitor z progami alarmu/ostrzeżenia, ustawia zatrzaśnięte flagi, steruje IntL | Progi i alarmy |
| Piny niskoprędkościowe | odczytuje TX_DISABLE, RS0/RS1, LPMode, ResetL; steruje TX_FAULT, RX_LOS (albo przepuszcza sygnały sprzętowe) | zachowanie pinów |
| Urządzenie podrzędne szyny dwuprzewodowej | odpowiada pod A0h/A2h (SFP) albo A0h ze stronami/bankami (QSFP, CMIS) | mapa pamięci — Interfejs dwuprzewodowy |
| Automaty stanów | stany modułu i toru danych CMIS; wybór aplikacji; squelch | CMIS |
| Ochrona i funkcje producenta | hasła, obszary chronione przed zapisem, polecenia zapisu, odblokowanie producenta, sygnatury uwierzytelniające | Rodzaje zabezpieczenia przed zapisem |
| CDB / aktualizacja firmware | w modułach CMIS odbiera i wgrywa nowe obrazy firmware | bajty wersji firmware |
Typowe układy: 8-bitowe MCU (klasy 8051) z kilkoma kB flash w tanich SFP/SFP+; 32-bitowe klasy Cortex-M w modułach 100G+ i CMIS; część producentów używa dedykowanego ASIC kontrolera transceivera, integrującego ADC, DAC i urządzenie podrzędne szyny dwuprzewodowej.
Dwa sposoby budowy pamięci
| Konstrukcja | Jak przechowywana jest mapa | Konsekwencje dla programowania |
|---|---|---|
| Osobna EEPROM (np. klasy AT24C02) dla A0h, MCU dla A2h | dane identyfikacyjne A0h to prawdziwa szeregowa EEPROM, z którą host i programator rozmawiają bezpośrednio; MCU zajmuje się tylko diagnostyką | zapisy do A0h to zwykłe zapisy EEPROM — trzeba respektować t_WR i rozmiar strony; sprzętowy pin WP może je blokować (Rodzaje zabezpieczenia przed zapisem 1–3) |
| Mapa emulowana przez MCU | MCU odpowiada na każde żądanie z szyny dwuprzewodowej z RAM i odzwierciedla zmiany w swojej wewnętrznej flash/EEPROM — albo nie | zapisy trafiają tam, gdzie zdecyduje firmware: przyjęte, zignorowane, zablokowane hasłem, zapisane dopiero po poleceniu zapisu, albo nadpisane własną kopią firmware przy następnym rozruchu (rodzaje 4–5) |
| Hybryda | EEPROM dla bloku producenta, MCU dla stron i haseł | mieszane reguły w zależności od zakresu bajtów |
Emulowana mapa wyjaśnia większość zagadek ze stanowiska: FFh ze strony, której firmware nie implementuje, zapisy, które „udają się” i cofają, bajty tylko do odczytu w jednym zakresie i wolne w sąsiednim, rozciąganie taktu, gdy MCU jest zajęty próbkowaniem (Błędy odczytu i zapisu EEPROM).
Rozruch i okno t_init
Przy włączeniu zasilania MCU wczytuje kalibrację i dane identyfikacyjne z pamięci nieulotnej, uruchamia ADC, doprowadza APC do wartości docelowej i dopiero wtedy włącza urządzenie podrzędne szyny dwuprzewodowej oraz kasuje data-not-ready. To te 300 ms (SFP) do 2 s (QSFP/CMIS), które specyfikacje dają, zanim host może oczekiwać odpowiedzi, i powód, dla którego odczyt zaraz po wsunięciu zwraca śmieci (Co robi host).
Tu mieszka kalibracja
Surowe odczyty ADC nic nie znaczą bez stałych, które fabryka zmierzyła na stacji testowej: prąd monitor-PD względem rzeczywistej mocy nadawanej, fotoprąd odbiornika względem mocy wejściowej na długości fali modułu, krzywa termistora, skala DAC polaryzacji. W modułach kalibrowanych wewnętrznie firmware je stosuje i raportuje jednostki fizyczne; w modułach kalibrowanych zewnętrznie stałe są zapisane w A2h 56–91, żeby zastosował je host (Kalibracja). Nadpisanie obszaru producenta, w którym część firmware'ów trzyma te stałe, daje absurdalny DDM albo martwą pętlę APC — to klasyczny sposób, w jaki nieostrożny zapis zamienia moduł w bezużyteczną „cegłę” (Produkcja i testowanie).
Jak zaimplementowana jest ochrona
| Mechanizm | Implementacja | Widok ze stanowiska |
|---|---|---|
| Hasło | firmware porównuje 4 bajty zapisane w obszarze hasła (SFP A2h 123–126, QSFP 123–126, CMIS 122–125) z zapisaną wartością; odblokowuje zapisy na czas sesji | WRITE FAIL, dopóki nie zostanie podana właściwa wartość — Hasła |
| Obszary chronione przed zapisem | firmware ignoruje zapisy do zakresów, które uważa za tylko do odczytu (sumy kontrolne, progi, kalibracja, obszar producenta) | bajty odczytane z powrotem bez zmian, bez błędu |
| Sprzętowy pin WP w osobnej EEPROM | pin jest podciągnięty wewnątrz modułu albo sterowany przez MCU | wymaga, żeby sterowała nim płytka programująca |
| Polecenie zapisu | zapisy trafiają do RAM; sekwencja specyficzna dla producenta zatwierdza je we flash | cofa się po cyklu zasilania, jeśli sekwencja nie zostanie wysłana |
| Kopia lustrzana firmware | przy rozruchu firmware przepisuje mapę z własnego obrazu | zmiany znikają przy każdym cyklu zasilania — obraz może zmienić tylko narzędzie producenta |
| Uwierzytelnianie | firmware oblicza sygnaturę (hash numeru seryjnego, danych producenta i sekretu) do bajtów producenta; host ją weryfikuje | edycje danych identyfikacyjnych przechodzą sumy kontrolne, a host mimo to odrzuca — Blokada producenta |
Jak rozpoznać i zaprogramować każdy typ: Rodzaje zabezpieczenia przed zapisem, Przekodowanie EEPROM.
Aktualizacje firmware
Moduły CMIS mogą odbierać firmware przez szynę dwuprzewodową za pomocą poleceń CDB (rozpoczęcie pobierania, zapis bloków, zakończenie, uruchomienie, zatwierdzenie), często z dwoma bankami obrazów, dzięki czemu nieudana aktualizacja się wycofuje. Moduły SFF-8472/8636 nie mają standardowego mechanizmu; producenci używają zastrzeżonych sekwencji przez bajty producenta. Poprawki firmware to sposób, w jaki producenci rozwiązują problemy z interoperacyjnością CMIS (Problemy z CMIS), a bajty wersji firmware (dolna strona CMIS 39–40, strona 01h 128–129) warto zapisywać razem z danymi identyfikacyjnymi.
Tryby awarii kontrolera
| Objaw | Prawdopodobna przyczyna |
|---|---|
| Moduł niewidoczny na szynie, optyka poza tym sprawna | MCU się nie uruchamia: uszkodzony firmware, zanik zasilania, uszkodzony kwarc |
| Wartości DDM zamrożone albo absurdalne | uszkodzenie ADC albo kalibracji; zawieszenie firmware |
| Moc Tx dryfuje, mimo że APC powinno ją utrzymywać | usterka monitor-PD albo ADC, APC wyłączone |
| Losowe NACK, wolne odczyty | MCU przeciążony (próbkowaniem), szybki programator przekracza limity rozciągania taktu |
| Działa, ale każdy zapis się cofa | kopia lustrzana firmware zgodnie z zamierzeniem — to nie usterka |
| Moduł martwy po zapisie | nadpisany obszar konfiguracji albo kalibracji firmware |
W CodingBox
CodingBox traktuje moduł tak, jak przedstawia go firmware: wykrywa typ mapy, stosuje znane hasła i skrypty programujące dla konstrukcji z poleceniem zapisu i kopią lustrzaną, przelicza sumy kontrolne, zachowuje kopię zapasową przed każdym zapisem i pozwala ją przywrócić z code database, jeśli kontroler zareaguje źle. EEPROM editor oznacza zakresy, które specyfikacja definiuje jako tylko do odczytu albo specyficzne dla producenta, żebyś wiedział, kiedy zapisujesz na prywatnym terytorium firmware.