Jenis proteksi tulis dan pemrograman
Faktor bentuk memberi tahu Anda di mana bidang-bidang sebuah modul berada. Sumbu kedua yang independen menentukan apakah Anda dapat mengubahnya: bagaimana modul melindungi memorinya dari penulisan. Produsen memakai lima pendekatan, dan masing-masing memerlukan metode pemrograman yang berbeda. Mengenali jenisnya lebih dulu menghemat berjam-jam upaya penulisan yang gagal.
Lima jenis perlindungan
| # | Jenis | Cara mengenalinya | Cara memprogramnya |
|---|---|---|---|
| 1 | Tidak dilindungi | Menerima penulisan seketika | Tulis langsung — tetapi dengan clock lambat |
| 2 | Pin write-protect perangkat keras | Read-only apa pun yang dicoba; kata sandi tidak membantu | Kendalikan jalur WP selama penulisan |
| 3 | Kata sandi (kontroler firmware) | WRITE FAIL sampai kata sandi dimasukkan | Masukkan kata sandi di 0x7B terlebih dahulu |
| 4 | Penyimpanan sementara + save command | Penulisan “berhasil” tetapi kembali seperti semula setelah power cycle | Kirim save sequence milik vendor |
| 5 | Gabungan | Memerlukan sequence I/O khusus vendor untuk membuka kunci | Algoritma pemrograman vendor (script) |
1. Tidak dilindungi
EEPROM tidak memiliki pembatasan penulisan. Kendala praktisnya adalah timing: pemrograman yang andal biasanya memerlukan clock two-wire sekitar 1 kHz — kira-kira sepuluh kali lebih lambat daripada kecepatan baca normal. Pada kecepatan standar, penulisan gagal secara intermiten dan meninggalkan halaman yang tertulis sebagian. Tanda terkait lainnya: pada sebagian modul sederhana, hanya A0h yang terbaca dengan bersih sementara A2h mengembalikan error.
2. Pin write-protect perangkat keras
Pin WP EEPROM terhubung ke suplai melalui sebuah resistor, sehingga chip menyala dalam keadaan terkunci. Membuka kunci berarti menarik jalur WP menuju ground melalui jalur berimpedansi lebih rendah selama penulisan berlangsung — sesuatu yang hanya dapat dilakukan oleh papan programmer yang memiliki kendali atas jalur tersebut. Perangkat lunak saja tidak dapat melewati jenis ini: modul tetap read-only melalui power cycle dan percobaan kata sandi.
3. Dilindungi kata sandi (kontroler firmware)
Sesuai SFF-8472, blok A2h menyediakan area kata sandi 7-byte yang dimulai pada offset 0x7B; sebagian besar modul memakai kata sandi 4-byte. Sebuah kontroler di dalam modul membandingkan apa yang ditulis di sana dengan nilai yang tersimpan, dan baru setelah itu membuka penulisan EEPROM. Tanpa kata sandi, setiap penulisan mengembalikan WRITE FAIL.
- Masukkan kata sandi yang benar, lalu tulis.
- Jika tidak diketahui: pencarian kamus kata sandi vendor yang sudah diketahui (lihat Pengodean ulang EEPROM untuk nilai yang umum) atau hubungi produsen.
- Kontroler semacam ini sensitif terhadap kecepatan clock dan jeda antar-blok — alasan lain untuk memprogram secara perlahan.
4. Penyimpanan sementara dengan save command
Penulisan mendarat di memori volatile. Semuanya tampak baik-baik saja — sampai modul mengalami power cycle dan kode lama kembali muncul. Firmware vendor memerlukan save command eksplisit (sequence byte proprietary) untuk melakukan commit atas image sementara tersebut ke penyimpanan permanen. Tidak ada standar yang mendefinisikannya; sequence tiap vendor berbeda-beda dan direkam sebagai sebuah script.
5. Perlindungan gabungan
Modul-modul terbaru menumpuk beberapa mekanisme sekaligus: WP perangkat keras dan kata sandi dan save command dan prasyarat operasional — misalnya modul harus ditempatkan dalam mode daya rendah sebelum menerima penulisan. Ini tipikal untuk modul pada revisi SFF-8472 terbaru yang mengekspos 256+ halaman di atas offset A2h 0x80, serta untuk modul CMIS. Pemrograman memerlukan algoritma dari produsen, yang biasanya dibagikan kepada pelanggan pembelian dalam jumlah besar.
Cara mengenali jenisnya
- Coba pembacaan biasa: apakah A2h terbaca dengan bersih? (Jenis 1 sering gagal di sini.)
- Coba penulisan satu byte ke bidang yang tidak dilindungi. Berhasil seketika → jenis 1.
WRITE FAIL→ jenis 3 (atau 5). Berhasil diam-diam tetapi kembali seperti semula setelah power cycle → jenis 4. - Masukkan kata sandi yang sudah diketahui. Masih read-only → jenis 2 (perangkat keras) atau jenis 5 (gabungan).
- Periksa faktor bentuk dan revisi spesifikasi — modul CMIS dan SFF-8472 revisi akhir biasanya jenis 5.
Di CodingBox
- Pengaturan kata sandi — alamat tabel, alamat kata sandi (0x7B), dan nilainya diatur di Memori yang dilindungi tulis & kata sandi; kata sandi yang sudah diketahui diterapkan dari basis data.
- Script — script pemrograman CodingBox membawa save sequence vendor dan algoritma unlock untuk jenis 4 dan 5.
- Penulisan byte demi byte dan clocking lambat untuk modul yang gagal pada kecepatan standar.
- WP perangkat keras ditangani oleh papan programmer, bukan oleh perangkat lunak.
- Setiap pembacaan disimpan ke code database sebelum Anda menulis, sehingga percobaan yang gagal selalu dapat dipulihkan.
Gejala di meja kerja —
WRITE FAIL, penulisan yang kembali seperti semula, kata sandi ditolak — dan apa yang harus dilakukan untuk masing-masing: Kesalahan baca & tulis EEPROM.
Mengapa jenis-jenis ini ada — EEPROM diskret vs peta yang diemulasikan MCU, save command, mirror firmware, dan signature sebagaimana diimplementasikan firmware: Kontroler & firmware.