Kesalahan baca dan tulis EEPROM pada programmer
Sebelum sebuah modul dapat didiagnosis atau dikodekan, modul itu harus dibaca terlebih dahulu — dan kemudian, sering kali, ditulis. Kedua langkah ini gagal dengan cara yang khas. Halaman ini memetakan setiap kegagalan ke penyebabnya dan ke pengaturan atau prosedur yang memperbaikinya, mulai dari modul yang sama sekali tidak terlihat hingga penulisan yang “berhasil” lalu diam-diam menghilang.
Modul tidak terdeteksi
| Pemeriksaan | Alasan |
|---|---|
| Posisi dan cradle | modul harus masuk sepenuhnya ke dalam konektor; gunakan adaptor sesuai faktor bentuknya — SFP di dalam cradle QSFP tidak akan terlihat |
| Waktu power-up | modul membutuhkan hingga ~2 detik (SFP) atau lebih lama (CMIS) setelah dipasang sebelum bus dua kawat menjawab |
| Sinyal module present | MOD_ABS / ModPrsL harus ter-assert; pin yang bengkok atau modul tanpa sinyal ini akan terlihat seperti tidak ada |
| State daya rendah (CMIS) | data identifikasi dapat dibaca dalam LowPwr, tetapi sebagian host/programmer mengharapkan Ready untuk akses penuh |
| Kecepatan bus | mulai pada 100 kHz atau lebih rendah; sebagian modul mengirim NACK pada 400 kHz |
| Modul mati | tidak ada DDM, tidak ada data identifikasi pada kecepatan berapa pun — konfirmasikan pada papan kedua sebelum memvonisnya mati |
Pembacaan mengembalikan FFh, 00h, atau data acak
| Gejala | Penyebab | Perbaikan |
|---|---|---|
| Semuanya FFh | I²C NACK — tidak ada perangkat di alamat tersebut, atau halaman tidak ada | periksa alamatnya (identitas A0h vs diagnostik A2h pada SFP; satu A0h dengan paging pada QSFP/CMIS) |
| Semuanya 00h | modul tidak mendapat daya / tertahan dalam reset; atau EEPROM memang benar-benar kosong | periksa daya ke cradle, keberadaan modul; modul kosong memang ada (stok yang belum dikodekan) |
| Panjang benar, konten salah | membaca halaman yang berbeda dari yang dimaksud | tulis byte page-select (127) dan baca ulang; pada CMIS juga bank select (126) |
| Byte acak / bergeser | bus terlalu cepat, kabel panjang, kontensi dengan host | turunkan ke ≤ 100 kHz; gunakan kabel pendek; baca di meja kerja, bukan di switch yang sedang live |
| Pembacaan A2h gagal, A0h baik-baik saja | modul tanpa diagnostik, atau blok diagnostik yang dilindungi | periksa A0h byte 92 bit 6 (DDM diimplementasikan); sebagian jenis dilindungi tulis hanya menjawab A0h |
| Nilai berubah antar-pembacaan | monitor live — normal; atau data not ready | byte DDM memang seharusnya berubah; periksa bit data-ready sebelum memercayai satu snapshot |
Penulisan gagal total
WRITE FAIL, NACK pada data, atau byte yang terbaca kembali tidak berubah:
| Penyebab | Cara mengenalinya | Yang harus dilakukan |
|---|---|---|
| Kata sandi diperlukan (firmware kontroler) | penulisan ditolak sampai nilai yang benar ditempatkan di alamat kata sandi (SFP A2h 0x7B–0x7E, QSFP 123–126, CMIS 122–125) | masukkan kata sandi modul di Memori yang dilindungi tulis & kata sandi; kata sandi vendor yang sudah diketahui diterapkan dari basis data |
| Write protect hardware | read-only apa pun kata sandinya, bertahan melewati power cycle | pin WP harus digerakkan oleh papan programmer — software saja tidak bisa; lihat Jenis write-protection |
| Timing | kegagalan intermiten, halaman tertulis sebagian | perlambat clock (~1 kHz sering dibutuhkan untuk penulisan EEPROM yang andal), patuhi write-cycle time (5–10 ms) antar byte/halaman, tambahkan delay antar-blok |
| Wilayah read-only | byte tertentu tidak pernah berubah (checksum, ambang pada sebagian part, area vendor) | EEPROM memiliki wilayah yang dilindungi secara desain; tulis hanya bidang yang diizinkan modul |
| State salah | modul CMIS mungkin membutuhkan LowPwr, atau data-path yang dinonaktifkan, sebelum menerima penulisan | tempatkan modul pada state yang dibutuhkan terlebih dahulu |
| Halaman belum dipilih | Anda menulis offset yang benar pada halaman yang salah | set byte 127 (dan 126) sebelum penulisan dan verifikasi dengan membaca kembali byte page-select |
Penulisan “berhasil” tetapi tidak melekat
- Kembali seperti semula setelah power cycle — modul menyimpan penulisan di memori sementara dan membutuhkan save command milik vendor; tanpa itu, image lama akan kembali. Ditangani oleh sebuah programming script (Write-protection type 4).
- Kembali seperti semula seketika — mikrokontroler mencerminkan EEPROM dari penyimpanannya sendiri dan menimpa kembali byte Anda; membutuhkan algoritme milik pabrikan (type 5).
- Sebagian byte melekat, sebagian tidak — peta yang dilindungi sebagian; tulis bidang demi bidang dan verifikasi masing-masing.
Host menolak modul setelah penulisan berhasil
| Penyebab | Perbaikan |
|---|---|
| Checksum sudah usang — CC_BASE (byte 63), CC_EXT (95), CC_DMI (A2h 95), QSFP 191/223 | hitung ulang; CodingBox melakukan ini secara otomatis saat penulisan (Peta memori) |
| Data identifikasi kini tidak konsisten — misalnya vendor berubah tetapi kode kepatuhan atau panjang gelombang menyiratkan hardware yang berbeda | jaga data identifikasi tetap konsisten dengan optik yang sebenarnya (Kecepatan & rate, Ketidakcocokan fisik) |
| Menulis ke layout jenis modul yang salah | XFP yang ditulis seolah SFP, atau kebingungan halaman QSFP — pulihkan dari backup |
Modul mati setelah penulisan
Menulis data acak menimpa konstanta kalibrasi, ambang, atau area khusus vendor (tempat sebagian kontroler menyimpan konfigurasinya) dapat mem-brick sebuah modul. Jalur pemulihan: pulihkan backup yang diambil CodingBox sebelum penulisan dari code database, lalu tulis hanya bidang yang dimaksud.
Aturan emas
- Baca dan simpan terlebih dahulu — setiap penulisan sebaiknya didahului oleh pembacaan penuh yang berakhir di basis data.
- Identifikasi jenis proteksinya sebelum percobaan penulisan pertama (Jenis write-protection).
- Pelan-pelan saja — clock dan timing antar-byte menyelesaikan sebagian besar kegagalan yang tampak “acak”.
- Tulis hanya yang Anda maksud — bidang demi bidang, bukan seluruh halaman, kecuali saat memulihkan sebuah image.
- Verifikasi dengan membaca ulang setelah power cycle.
Di CodingBox
CodingBox membaca modul dengan alamat dan paging yang benar sesuai faktor bentuknya, menampilkan byte mentah dan yang sudah didekode di EEPROM editor, menghitung ulang checksum saat penulisan, menyimpan backup secara otomatis, dan mendukung entri kata sandi serta programming script untuk modul yang dilindungi dan yang membutuhkan save command (Menulis modul). Jika dicurigai ada gangguan pada level papan, lihat Pemecahan Masalah produk.
Mekanika bus di balik kegagalan-kegagalan ini — alamat, page select, write cycle time, clock stretching: Antarmuka dua kawat.
Mengapa sebuah modul merespons dengan caranya sendiri — memori yang diemulasikan MCU, boot window, clock stretching, wilayah yang dilindungi: Kontroler & firmware.