CodingBox 說明文件

編程器讀寫 EEPROM 時的錯誤

模組在被診斷或編碼之前必須先被讀取——之後往往還要被寫入。這兩步都有各自典型的失敗方式。本頁把每種失敗映射到其成因,以及能解決它的設定或操作步驟,從模組完全不被識別,到寫入「成功」卻悄悄消失。

模組未被檢測到

檢查項原因
插接與適配座模組必須完全插入連接器;使用對應封裝形式的轉接器——把 SFP 插進 QSFP 適配座是不會被看到的
上電時間模組插入後需要最多約 2 秒(SFP)或更長(CMIS)時間,雙線總線才會應答
模組在位信號MOD_ABS / ModPrsL 必須被拉低;引腳彎曲或沒有該信號的模組會顯示為「不在位」
低功耗狀態(CMIS)LowPwr 狀態下身份資訊可讀,但部分主機/編程器要求 Ready 狀態才能完整訪問
總線速度從 100 kHz 或更低開始;部分模組在 400 kHz 下會返回 NACK
模組已損壞任何速度下都沒有 DDM、沒有身份資訊——在第二塊板卡上確認後再判定為損壞

讀出 FFh、00h 或亂碼

症狀原因解決辦法
全為 FFhI²C NACK——該地址上沒有設備,或該頁不存在檢查地址(SFP 上 A0h 身份資訊與 A2h 診斷資訊;QSFP/CMIS 上單一 A0h 加分頁)
全為 00h模組未上電 / 處於復位狀態;或 EEPROM 確實為空檢查適配座供電、模組是否在位;未編碼的空白模組確實存在
長度正確,內容錯誤讀取的頁不是預期的頁寫入頁選位元組(127)後重新讀取;CMIS 上還要檢查 bank 選擇(126)
位元組錯亂 / 錯位總線過快、線纜過長、與主機爭用總線降到 ≤ 100 kHz;使用短線;在工作台上讀取,而不是在帶電交換機中讀取
A2h 讀取失敗,A0h 正常模組不帶診斷功能,或診斷區塊受保護檢查 A0h 位元組 92 第 6 位(是否實現 DDM);部分受寫保護的類型只響應 A0h
數值在多次讀取間變化實時監測數據——屬正常現象;或數據尚未就緒DDM 位元組本就會變化;在信任某次快照前先檢查數據就緒位

寫入直接失敗

WRITE FAIL、數據 NACK,或位元組讀回後未改變:

原因如何識別該怎麼做
需要密碼(帶固件控制器)在密碼地址(SFP A2h 0x7B–0x7E,QSFP 123–126,CMIS 122–125)寫入正確值之前,寫操作會被拒絕受保護記憶體區與密碼中輸入模組密碼;資料庫中的已知廠商密碼會自動應用
硬件寫保護無論密碼如何都是只讀,斷電重啟後依然如此WP 引腳必須由編程器板卡驅動——軟件本身無法做到;參見寫保護類型
時序問題間歇性失敗,部分頁寫入不完整放慢時鐘(通常約 1 kHz 才能可靠寫入 EEPROM),遵守位元組/頁之間的寫週期時間(5–10 ms),增加塊間延時
只讀區域特定位元組永遠不變(校驗和、部分器件的閾值、廠商區)EEPROM 按設計存在受保護區域;只寫模組允許寫入的欄位
狀態不對CMIS 模組可能要求先進入 LowPwr,或先停用數據通路,才接受寫入先把模組切換到所需狀態
頁未選中你在錯誤的頁上寫了正確的偏移量寫入前設定位元組 127(及 126),並通過讀回頁選位元組來驗證

寫入「成功」但沒有生效

  • 斷電重啟後回滾——模組把寫入內容存放在臨時記憶體區,需要廠商的保存命令;沒有它,舊鏡像會恢復。可通過編程腳本處理(寫保護類型 4)。
  • 立即回滾——微控制器從自己的記憶體中鏡像 EEPROM 內容,並覆蓋你寫入的位元組;需要使用廠商的算法(類型 5)。
  • 部分位元組生效,其餘不生效——記憶體映射部分受保護;應逐欄位寫入並逐一驗證。

寫入成功後主機仍拒絕模組

原因解決辦法
校驗和過期——CC_BASE(位元組 63)、CC_EXT(95)、CC_DMI(A2h 95)、QSFP 191/223重新計算;CodingBox 在寫入時會自動完成(記憶體映射
身份資訊現在自相矛盾——例如廠商變了,但合規代碼或波長仍暗示著不同的硬件保持身份資訊與實際光學器件一致(速率與模式問題物理層不匹配
按錯誤的模組類型佈局寫入——把 XFP 當 SFP 寫,或 QSFP 頁搞混從備份恢復

模組寫入後損壞

覆蓋校準常數、閾值或廠商專用區域(部分控制器在此保存自己的配置)的垃圾數據,會直接把模組變磚。恢復方法:從 CodingBox 在寫入前保存到 code database 的備份恢復,然後只寫入你真正想改的欄位。

黃金法則

  1. 先讀後寫——每次寫入之前都應該先做一次完整讀取並存入資料庫。
  2. 在第一次寫入前確定保護類型寫保護類型)。
  3. 放慢速度——時鐘和位元組間時序能解決大多數「隨機」失敗。
  4. 只寫你想改的內容——除非是恢復鏡像,否則只寫欄位,不要整頁覆蓋。
  5. 斷電重啟後重新讀取以驗證。

在 CodingBox 中

CodingBox 會按封裝形式使用正確的地址和分頁方式讀取模組,在 EEPROM editor 中顯示原始位元組和解碼結果,寫入時自動重新計算校驗和,自動保存備份,並支援帶密碼或保存命令的受保護模組的密碼輸入和編程腳本(寫入模組)。如果懷疑是板卡級故障,參見產品的故障排查

這些故障背後的總線機制——地址、頁選、寫週期時間、時鐘拉伸: 雙線介面

為甚麼模組會這樣應答——MCU 模擬的記憶體、啟動窗口、時鐘拉伸、受保護區域: 控制器與固件


如果您發現本文有不準確之處或錯誤,請選取相應片段並按 Ctrl+Enter,即可