Kontroler dan firmware-nya: DDM, APC, memori, proteksi
Setiap transceiver terkelola memiliki komputer kecil di dalamnya. Mikrokontroler (MCU) mengukur, mengatur, melaporkan, dan — dari sudut pandang programmer yang paling penting — adalah memori yang Anda baca dan tulis. Apakah sebuah modul memiliki EEPROM biasa atau MCU yang berpura-pura menjadi EEPROM menentukan bagaimana modul itu dapat dikodekan, mengapa sebagian penulisan hilang setelah siklus daya, dan mengapa kata sandi ada sama sekali. Halaman ini menjelaskan apa yang dilakukan kontroler dan bagaimana desainnya terlihat di meja kerja.
Apa yang dilakukan MCU
| Tugas | Detail | Terlihat sebagai |
|---|---|---|
| Pengukuran | mengambil sampel suhu (termistor atau sensor terintegrasi), Vcc, bias laser, arus monitor-PD (Tx), dan fotoarus penerima (Rx) melalui ADC 10–12-bit beberapa kali per detik; menerapkan kalibrasi pabrik | nilai DDM — Parameter |
| APC — kontrol daya otomatis | membandingkan arus monitor-PD dengan target pabrik dan menyesuaikan DAC bias driver | daya Tx konstan, bias naik — Tx bias & penuaan |
| Kompensasi suhu | tabel pencarian menyesuaikan arus modulasi dan, pada PAM4, setting DSP terhadap suhu | extinction ratio stabil |
| Kontrol TEC | loop PID menjaga suhu laser pada modul yang didinginkan; umpan balik pengunci panjang gelombang pada DWDM | monitor suhu laser, arus TEC |
| Ambang dan flag | membandingkan setiap monitor dengan ambang alarm/peringatan, menetapkan flag ter-latch, menggerakkan IntL | Ambang & alarm |
| Pin kecepatan rendah | membaca TX_DISABLE, RS0/RS1, LPMode, ResetL; menggerakkan TX_FAULT, RX_LOS (atau mengendalikan sinyal perangkat keras-nya) | perilaku pin |
| Slave two-wire | merespons di A0h/A2h (SFP) atau A0h dengan halaman/bank (QSFP, CMIS) | peta memori — Antarmuka two-wire |
| Mesin status | status modul dan jalur data CMIS; pemilihan aplikasi; squelch | CMIS |
| Perlindungan dan fungsi vendor | kata sandi, rentang perlindungan tulis, perintah simpan, pembukaan kunci vendor, tanda tangan autentikasi | Jenis perlindungan tulis |
| CDB / update firmware | pada modul CMIS, menerima dan mem-flash image firmware baru | byte versi firmware |
Komponen tipikal: MCU 8-bit (kelas 8051) dengan flash beberapa kB pada SFP/SFP+ berbiaya rendah; kelas 32-bit Cortex-M pada modul 100G+ dan CMIS; sebagian vendor memakai ASIC kontroler transceiver khusus yang mengintegrasikan ADC, DAC, dan slave two-wire.
Dua cara membangun memori
| Desain | Cara peta disimpan | Konsekuensi untuk pemrograman |
|---|---|---|
| EEPROM diskret (misalnya kelas AT24C02) untuk A0h, MCU untuk A2h | identitas A0h adalah EEPROM serial sungguhan yang diajak bicara langsung oleh host dan programmer; MCU hanya menangani diagnostik | penulisan A0h adalah penulisan EEPROM biasa — perhatikan t_WR dan ukuran halaman; pin WP perangkat keras dapat memblokirnya (Jenis perlindungan tulis 1–3) |
| Peta yang diemulasikan MCU | MCU merespons setiap permintaan two-wire dari RAM dan mencerminkan perubahan ke flash/EEPROM internalnya — atau tidak | penulisan berakhir sesuai keputusan firmware: diterima, diabaikan, dijaga kata sandi, disimpan hanya setelah perintah simpan, atau ditimpa dari salinan firmware sendiri pada boot berikutnya (jenis 4–5) |
| Hibrida | EEPROM untuk blok vendor, MCU untuk halaman dan kata sandi | aturan campuran per rentang byte |
Peta yang diemulasikan menjelaskan sebagian besar misteri di meja kerja: FFh dari halaman yang tidak diimplementasikan firmware, penulisan yang “berhasil” lalu kembali seperti semula, byte yang read-only pada satu rentang dan bebas pada rentang berikutnya, clock stretching ketika MCU sedang sibuk mengambil sampel (Kesalahan baca & tulis EEPROM).
Boot dan jendela t_init
Saat dinyalakan, MCU memuat kalibrasi dan identitas dari penyimpanan non-volatile-nya, menjalankan ADC, menjalankan APC hingga mencapai targetnya, dan baru setelah itu mengaktifkan slave two-wire serta menghapus data-not-ready. Itulah rentang 300 ms (SFP) hingga 2 s (QSFP/CMIS) yang diizinkan spesifikasi sebelum host dapat mengharapkan jawaban, dan alasan mengapa pembacaan segera setelah penyisipan menghasilkan data sampah (Yang dilakukan host).
Di sinilah kalibrasi berada
Hitungan ADC mentah tidak berarti apa-apa tanpa konstanta yang diukur pabrik pada stasiun uji: arus monitor-PD vs daya pancar aktual, fotoarus penerima vs daya input pada panjang gelombang modul, kurva termistor, skala DAC bias. Pada modul dikalibrasi secara internal, firmware menerapkan konstanta ini dan melaporkan dalam satuan fisik; pada modul dikalibrasi secara eksternal, konstanta dituliskan ke A2h 56–91 agar diterapkan oleh host (Kalibrasi). Menimpa area vendor tempat sebagian firmware menyimpan konstanta ini menghasilkan DDM yang tidak masuk akal atau loop APC yang mati — cara klasik penulisan yang ceroboh “mem-brick” sebuah modul (Manufaktur & pengujian).
Bagaimana perlindungan diterapkan
| Mekanisme | Implementasi | Tampilan di meja kerja |
|---|---|---|
| Kata sandi | firmware membandingkan 4 byte yang dituliskan ke area kata sandi (SFP A2h 123–126, QSFP 123–126, CMIS 122–125) dengan nilai yang tersimpan; membuka penulisan untuk sesi tersebut | WRITE FAIL hingga nilai yang benar dimasukkan — Kata sandi |
| Rentang perlindungan tulis | firmware mengabaikan penulisan ke rentang yang dianggapnya read-only (checksum, ambang, kalibrasi, area vendor) | byte terbaca kembali tanpa perubahan, tanpa kesalahan |
| Pin WP perangkat keras pada EEPROM diskret | pin ditarik tinggi di dalam modul atau digerakkan oleh MCU | membutuhkan papan programmer untuk menggerakkannya |
| Perintah simpan | penulisan mendarat di RAM; urutan khusus vendor meng-commit-nya ke flash | kembali seperti semula setelah siklus daya kecuali urutan tersebut dikirim |
| Cermin firmware | saat boot, firmware menulis ulang peta dari image miliknya sendiri | perubahan hilang setiap siklus daya — hanya alat vendor yang dapat mengubah image tersebut |
| Autentikasi | firmware menghitung tanda tangan (hash dari nomor seri, data vendor, dan sebuah rahasia) ke dalam byte vendor; host memverifikasinya | perubahan identitas lolos checksum tetapi host tetap menolaknya — Penguncian vendor |
Bagaimana setiap jenis dikenali dan diprogram: Jenis perlindungan tulis, Pengodean ulang EEPROM.
Update firmware
Modul CMIS dapat menerima firmware melalui bus two-wire lewat perintah CDB (start download, write block, complete, run, commit), sering dengan dua image bank sehingga update yang gagal dapat fallback. Modul SFF-8472/8636 tidak memiliki mekanisme standar; vendor memakai urutan eksklusif melalui byte vendor. Perbaikan firmware adalah cara vendor menyelesaikan masalah interoperabilitas CMIS (Masalah CMIS), dan byte versi firmware (halaman bawah CMIS 39–40, halaman 01h 128–129) layak dicatat bersama identitasnya.
Mode kegagalan kontroler
| Gejala | Kemungkinan penyebab |
|---|---|
| Modul tidak terlihat pada bus, optik baik-baik saja | MCU tidak boot: firmware korup, penurunan tegangan, kristal rusak |
| Nilai DDM beku atau tidak masuk akal | korupsi ADC atau kalibrasi; firmware hang |
| Daya Tx drift padahal seharusnya dijaga oleh APC | gangguan monitor-PD atau ADC, APC nonaktif |
| NACK acak, pembacaan lambat | MCU overload (pengambilan sampel), batas clock-stretch terlampaui oleh programmer yang cepat |
| Berfungsi, tetapi setiap penulisan kembali seperti semula | cermin firmware memang dirancang begitu — bukan gangguan |
| Modul mati setelah penulisan | area konfigurasi firmware atau kalibrasi tertimpa |
Di CodingBox
CodingBox memperlakukan modul sesuai dengan bagaimana firmware menyajikannya: mendeteksi jenis peta, menerapkan kata sandi yang diketahui dan script pemrograman untuk desain perintah-simpan dan cermin, menghitung ulang checksum, menyimpan backup sebelum setiap penulisan, dan memungkinkan Anda memulihkannya dari code database jika kontroler bereaksi buruk. EEPROM editor menandai rentang yang didefinisikan spesifikasi sebagai read-only atau khusus vendor sehingga Anda tahu kapan sedang menulis ke wilayah privat firmware.