Błędy odczytu i zapisu EEPROM na programatorze · Typowe problemy i rozwiązania · Transceivery optyczne i kable · Dokumentacja · CodingBox
CodingBox Dokumentacja

Błędy odczytu i zapisu EEPROM na programatorze

Zanim moduł da się zdiagnozować albo zakodować, trzeba go odczytać — a potem, często, zapisać. Oba kroki zawodzą na charakterystyczne sposoby. Ta strona przypisuje każdą usterkę do jej przyczyny oraz do ustawienia albo procedury, która ją naprawia — od modułu w ogóle niewidzianego po zapis, który „się udaje” i po cichu znika.

Moduł nie wykryty

SprawdzenieDlaczego
Osadzenie i gniazdomoduł musi całkowicie wejść w złącze; użyj adaptera dla jego formatu obudowy — SFP w gnieździe QSFP nie zostanie widziany
Czas rozruchumoduły potrzebują do ~2 s (SFP) albo dłużej (CMIS) po włożeniu, zanim magistrala dwuprzewodowa zacznie odpowiadać
Sygnał obecności modułuMOD_ABS / ModPrsL musi być aktywny; wygięty pin albo moduł bez tego sygnału wygląda jak nieobecny
Stan niskiego poboru mocy (CMIS)dane identyfikacyjne da się odczytać w LowPwr, ale część hostów/programatorów oczekuje Ready dla pełnego dostępu
Szybkość magistralizacznij od 100 kHz albo niżej; część modułów odpowiada NACK przy 400 kHz
Martwy modułbrak DDM, brak danych identyfikacyjnych przy żadnej szybkości — potwierdź na drugiej płytce, zanim go skreślisz

Odczyty zwracają FFh, 00h albo śmieci

ObjawPrzyczynaRozwiązanie
Same FFhNACK I²C — brak urządzenia pod tym adresem albo strona nieobecnasprawdź adres (A0h dane identyfikacyjne kontra A2h diagnostyka w SFP; pojedyncze A0h ze stronicowaniem w QSFP/CMIS)
Same 00hmoduł niezasilany / w resecie; albo naprawdę pusty EEPROMsprawdź zasilanie gniazda, obecność modułu; puste moduły się zdarzają (niezakodowany zapas)
Poprawna długość, zła zawartośćodczyt innej strony niż zamierzonazapisz bajt wyboru strony (127) i odczytaj ponownie; w CMIS także wybór banku (126)
Poprzestawiane / przesunięte bajtyzbyt szybka magistrala, długi kabel, rywalizacja z hostemobniż do ≤ 100 kHz; używaj krótkich przewodów; odczytuj na stanowisku, nie w działającym przełączniku
Odczyty A2h zawodzą, A0h w porządkumoduł bez diagnostyki albo zabezpieczony blok diagnostycznysprawdź A0h bajt 92 bit 6 (DDM zaimplementowane); część typów zabezpieczonych przed zapisem odpowiada tylko na A0h
Wartości zmieniają się między odczytamimonitory na żywo — normalne; albo data not readybajty DDM mają się zmieniać; przed zaufaniem migawce sprawdź bit gotowości danych

Zapis zawodzi całkowicie

WRITE FAIL, NACK na danych, albo bajt po odczycie wraca niezmieniony:

PrzyczynaJak rozpoznaćCo zrobić
Wymagane hasło (kontroler firmware)zapis odrzucany, dopóki poprawna wartość nie zostanie umieszczona pod adresem hasła (SFP A2h 0x7B–0x7E, QSFP 123–126, CMIS 122–125)wpisz hasło modułu w Pamięć zabezpieczona przed zapisem i hasła; znane hasła producentów są stosowane z bazy danych
Sprzętowe zabezpieczenie przed zapisemtylko do odczytu niezależnie od hasła, przetrwa cykl zasilaniapin WP musi być sterowany przez płytkę programującą — samo oprogramowanie nie wystarczy; zobacz Rodzaje zabezpieczenia przed zapisem
Timingprzerywane błędy, częściowo zapisane stronyzwolnij zegar (do niezawodnego zapisu EEPROM często potrzeba ~1 kHz), zachowaj czas cyklu zapisu (5–10 ms) między bajtami/stronami, dodaj opóźnienia między blokami
Region tylko do odczytukonkretne bajty nigdy się nie zmieniają (sumy kontrolne, progi w części modułów, obszar producenta)EEPROM ma zabezpieczony region z założenia projektowego; zapisuj tylko pola, na które moduł pozwala
Zły stanmoduły CMIS mogą wymagać LowPwr albo dezaktywowanej ścieżki danych, zanim przyjmą zapisnajpierw ustaw moduł w wymaganym stanie
Strona niewybranazapisałeś właściwy offset na złej stronieustaw bajt 127 (i 126) przed zapisem i zweryfikuj, odczytując z powrotem bajt wyboru strony

Zapis „udaje się”, ale nie utrzymuje się

  • Cofa się po cyklu zasilania — moduł przechowuje zapisy w pamięci tymczasowej i potrzebuje producenckiej komendy zapisu (save); bez niej wraca stary obraz. Obsługiwane przez skrypt programujący (Rodzaj zabezpieczenia przed zapisem 4).
  • Cofa się natychmiast — mikrokontroler odzwierciedla EEPROM z własnej pamięci i nadpisuje twoje bajty; wymaga algorytmu producenta (typ 5).
  • Część bajtów się utrzymuje, część nie — częściowo zabezpieczona mapa; zapisuj pole po polu i weryfikuj każde.

Host odrzuca moduł po udanym zapisie

PrzyczynaRozwiązanie
Sumy kontrolne nieaktualne — CC_BASE (bajt 63), CC_EXT (95), CC_DMI (A2h 95), QSFP 191/223przelicz; CodingBox robi to automatycznie przy zapisie (Mapa pamięci)
Dane identyfikacyjne teraz niespójne — np. zmienił się producent, ale kody zgodności albo długość fali wskazują na inny sprzętutrzymuj dane identyfikacyjne spójne z rzeczywistą optyką (Szybkość i przepływność, Niezgodności fizyczne)
Zapisano w układzie dla złego typu modułuXFP zapisany jako SFP albo pomylenie stron QSFP — przywróć z kopii zapasowej

Moduł martwy po zapisie

Zapisanie śmieci na stałych kalibracyjnych, progach albo obszarze specyficznym dla producenta (gdzie część kontrolerów trzyma swoją konfigurację) może trwale uszkodzić moduł. Droga odzyskania: przywróć kopię zapasową, którą CodingBox zrobił przed zapisem, z code database, a potem zapisz tylko zamierzone pola.

Złote zasady

  1. Najpierw odczytaj i zapisz — przed każdym zapisem powinien być pełny odczyt, który trafia do bazy danych.
  2. Zidentyfikuj rodzaj zabezpieczenia, zanim spróbujesz pierwszego zapisu (Rodzaje zabezpieczenia przed zapisem).
  3. Zwalniaj — zegar i odstępy czasowe między bajtami rozwiązują większość „losowych” błędów.
  4. Zapisuj tylko to, co zamierzasz — pola, nie całe strony, chyba że przywracasz obraz.
  5. Zweryfikuj, odczytując ponownie po cyklu zasilania.

W CodingBox

CodingBox odczytuje moduły z poprawnym adresem i stronicowaniem dla danego formatu obudowy, pokazuje surowe i zdekodowane bajty w EEPROM editor, przelicza sumy kontrolne przy zapisie, automatycznie zapisuje kopię zapasową i obsługuje wpisywanie haseł oraz skrypty programujące dla modułów zabezpieczonych i wymagających komendy zapisu (Zapis modułu). Jeśli podejrzewasz usterkę na poziomie płytki, zobacz produktowe Rozwiązywanie problemów.

Mechanika magistrali stojąca za tymi usterkami — adresy, wybór strony, czas cyklu zapisu, rozciąganie zegara: Interfejs dwuprzewodowy.

Dlaczego moduł odpowiada tak, jak odpowiada — pamięć emulowana przez MCU, okno rozruchu, rozciąganie zegara, zabezpieczone regiony: Kontroler i firmware.


Jeśli znajdziesz nieścisłość lub błąd w tym materiale, zaznacz odpowiedni fragment i naciśnij Ctrl+Enter, aby .