Programlayıcıda EEPROM okuma ve yazma hataları
Bir modül tanılanabilmeden veya kodlanabilmeden önce okunması gerekir — ve ardından, çoğu zaman, yazılması. Her iki adım da kendine özgü biçimlerde başarısız olur. Bu sayfa, modülün hiç görülmemesinden, “başarılı olup” sessizce kaybolan bir yazmaya kadar, her başarısızlığı nedenine ve onu düzelten ayara veya yordama eşler.
Modül algılanmıyor
| Kontrol | Neden |
|---|---|
| Oturma ve yuva | modül, konektöre tam oturmalıdır; kendi form faktörüne uygun adaptörü kullanın — bir QSFP yuvasındaki bir SFP görülmez |
| Güç açılış süresi | modüller, takıldıktan sonra iki telli veri yolu yanıt vermeden önce ~2 saniyeye (SFP) veya daha uzuna (CMIS) ihtiyaç duyar |
| Modül mevcut sinyali | MOD_ABS / ModPrsL etkinleşmelidir; bükülmüş bir pin veya bu sinyali olmayan bir modül yok gibi görünür |
| Düşük güç durumu (CMIS) | kimlik LowPwr’da okunabilir, ama bazı hostlar/programlayıcılar tam erişim için Ready bekler |
| Veri yolu hızı | 100 kHz veya daha düşükten başlayın; bazı modüller 400 kHz’de NACK verir |
| Ölü modül | hiçbir hızda ne DDM ne kimlik — mahkûm etmeden önce ikinci bir kartta doğrulayın |
Okumalar FFh, 00h veya anlamsız veri döndürüyor
| Belirti | Neden | Çözüm |
|---|---|---|
| Tümü FFh | I²C NACK — o adreste cihaz yok veya sayfa mevcut değil | adresi kontrol edin (SFP’de A0h kimliğine karşı A2h tanılaması; QSFP/CMIS’te sayfalamalı tek A0h) |
| Tümü 00h | modül güçlenmemiş / sıfırlamada tutuluyor; ya da gerçekten boş EEPROM | yuvaya giden gücü, modülün takılı olduğunu kontrol edin; boş modüller vardır (kodlanmamış stok) |
| Doğru uzunluk, yanlış içerik | amaçlanandan farklı bir sayfa okunuyor | sayfa seçim baytını (127) yazın ve yeniden okuyun; CMIS’te ayrıca banka seçimi (126) |
| Karışmış / kaymış baytlar | veri yolu çok hızlı, uzun kablo, host ile çakışma | ≤ 100 kHz’e düşürün; kısa kablolar kullanın; canlı bir anahtarda değil, tezgâhta okuyun |
| A2h okumaları başarısız, A0h sorunsuz | tanılaması olmayan bir modül veya korumalı bir tanılama bloğu | A0h bayt 92 bit 6’yı kontrol edin (DDM uygulanmış); bazı yazma korumalı türler yalnızca A0h’a yanıt verir |
| Değerler okumalar arasında değişiyor | canlı ölçülen değerler — normal; ya da data not ready | DDM baytlarının değişmesi beklenir; bir anlık görüntüye güvenmeden önce veri hazır bitini kontrol edin |
Yazma tamamen başarısız oluyor
WRITE FAIL, veri üzerinde NACK veya bayt değişmeden geri okunuyor:
| Neden | Nasıl tanınır | Ne yapılmalı |
|---|---|---|
| Parola gerekli (ürün yazılımı denetleyicisi) | parola adresine doğru değer yerleştirilene kadar yazma reddedilir (SFP A2h 0x7B–0x7E, QSFP 123–126, CMIS 122–125) | modülün parolasını Korumalı bellek ve parolalar içine girin; bilinen satıcı parolaları veritabanından uygulanır |
| Donanımsal yazma koruması | parolaya bakılmaksızın salt okunur, güç döngülerinden sağ çıkar | WP pini programlayıcı kart tarafından sürülmelidir — yalnızca yazılım bunu yapamaz; bkz. Yazma koruması türleri |
| Zamanlama | aralıklı başarısızlıklar, kısmen yazılmış sayfalar | saati yavaşlatın (güvenilir EEPROM yazmaları için çoğu zaman ~1 kHz gerekir), baytlar/sayfalar arasında yazma döngüsü süresine (5–10 ms) uyun, bloklar arası gecikmeler ekleyin |
| Salt okunur bölge | belirli baytlar hiç değişmez (sağlama toplamları, bazı parçalarda eşikler, satıcı alanı) | EEPROM, tasarım gereği korumalı bir bölgeye sahiptir; yalnızca modülün izin verdiği alanları yazın |
| Yanlış durum | CMIS modülleri, yazmaları kabul etmeden önce LowPwr veya devre dışı bırakılmış bir veri yolu isteyebilir | önce modülü gereken duruma getirin |
| Sayfa seçilmemiş | doğru ofseti yanlış sayfaya yazdınız | yazmadan önce bayt 127’yi (ve 126’yı) ayarlayın ve sayfa seçim baytını geri okuyarak doğrulayın |
Yazma “başarılı oluyor” ama kalıcı olmuyor
- Güç döngüsünden sonra eski haline dönüyor — modül yazmaları geçici bellekte saklar ve satıcının kaydetme komutuna ihtiyaç duyar; bu olmadan eski görüntü geri döner. Bir programlama betiğiyle ele alınır (Yazma koruması türü 4).
- Hemen eski haline dönüyor — mikrodenetleyici, EEPROM’u kendi deposundan yansıtır ve baytlarınızın üzerine yazar; üreticinin algoritmasını gerektirir (tür 5).
- Bazı baytlar kalıcı oluyor, bazıları olmuyor — kısmen korumalı bir harita; alan alan yazın ve her birini doğrulayın.
Host, başarılı bir yazmadan sonra modülü reddediyor
| Neden | Çözüm |
|---|---|
| Sağlama toplamları güncel değil — CC_BASE (bayt 63), CC_EXT (95), CC_DMI (A2h 95), QSFP 191/223 | yeniden hesaplayın; CodingBox bunu yazma sırasında otomatik yapar (Bellek haritası) |
| Kimlik artık tutarsız — örn. satıcı değişti ama uyumluluk kodları veya dalga boyu farklı bir donanım ima ediyor | kimliği gerçek optiklerle tutarlı tutun (Hız ve oran, Fiziksel uyumsuzluklar) |
| Yanlış modül türünün yerleşimine yazıldı | bir SFP gibi yazılmış bir XFP veya bir QSFP sayfa karışıklığı — yedekten geri yükleyin |
Bir yazmadan sonra modül ölü
Kalibrasyon sabitlerinin, eşiklerin veya satıcıya özgü alanın (bazı denetleyicilerin yapılandırmalarını sakladığı yer) üzerine anlamsız veri yazmak bir modülü tuğlaya çevirebilir. Kurtarma yolu: CodingBox’ın yazmadan önce code database’den aldığı yedeği geri yükleyin, ardından yalnızca amaçlanan alanları yazın.
Altın kurallar
- Önce okuyun ve kaydedin — her yazmadan önce, veritabanına düşen tam bir okuma yapılmalıdır.
- İlk yazma denemesinden önce koruma türünü belirleyin (Yazma koruması türleri).
- Yavaş gidin — saat ve baytlar arası zamanlama, “rastgele” başarısızlıkların çoğunu çözer.
- Yalnızca amaçladığınızı yazın — bir görüntüyü geri yüklemiyorsanız, sayfaların tamamını değil, alanları.
- Bir güç döngüsünden sonra yeniden okuyarak doğrulayın.
CodingBox’ta
CodingBox, modülleri form faktörüne göre doğru adres ve sayfalamayla okur, EEPROM editor içinde ham ve çözümlenmiş baytları gösterir, yazma sırasında sağlama toplamlarını yeniden hesaplar, otomatik olarak bir yedek saklar ve korumalı ile kaydetme komutlu modüller için parola girişini ve programlama betiklerini destekler (Bir modülü yazmak). Kart düzeyinde bir arızadan şüpheleniliyorsa ürünün Sorun giderme sayfasına bakın.
Bu başarısızlıkların arkasındaki veri yolu mekaniği — adresler, sayfa seçimi, yazma döngüsü süresi, saat germe: İki telli arayüz.
Bir modülün neden böyle yanıt verdiği — MCU tarafından emüle edilen bellek, açılış penceresi, saat germe, korumalı bölgeler: Denetleyici ve ürün yazılımı.