CodingBox 說明文件

寫保護類型與編程

封裝形式告訴你模組欄位存放在哪裏。另一個獨立的維度決定能否修改它們:模組如何保護自身記憶體區不被寫入。廠商採用五種方式,每種都需要不同的編程方法。先識別出保護類型,能省下數小時的失敗寫入嘗試。

五種保護類型

#類型如何識別如何編程
1無保護立即接受寫入直接寫入——但需使用較慢的時鐘
2硬件寫保護引腳無論怎樣嘗試都是只讀;密碼也無濟於事寫入過程中控制 WP 線
3密碼保護(固件控制器)未輸入密碼前返回 WRITE FAIL先在 0x7B 處輸入密碼
4臨時儲存 + 保存命令寫入「成功」,但斷電重啟後恢復原狀發送廠商的保存序列
5組合保護需要廠商專有的 I/O 序列才能解鎖廠商編程算法(腳本)

1. 無保護

EEPROM 沒有寫入限制。實際的難點在於時序:可靠的編程通常需要將雙線時鐘降到約 1 kHz——大約是正常讀取速度的十分之一。以標準速度寫入會間歇性失敗,留下部分寫入的頁面。一個相關的跡象是:在一些簡單模組上,只有 A0h 能正常讀取,而 A2h 會返回錯誤。

2. 硬件寫保護引腳

EEPROM 的 WP 引腳通過電阻接到電源,因此晶片上電後處於鎖定狀態。解鎖的方法是在寫入過程中通過低阻抗路徑將 WP 線拉向地——這只有能夠控制該引腳的編程器板才能做到。僅靠軟件無法繞過這種類型:無論怎樣斷電重啟或嘗試密碼,模組都始終保持只讀。

3. 密碼保護(固件控制器)

根據 SFF-8472,A2h 區塊從偏移量 0x7B 開始保留了一個 7 位元組的密碼區;大多數模組使用 4 位元組密碼。模組內的控制器會將寫入該區域的內容與其儲存的值進行比對,只有匹配才會解鎖 EEPROM 寫入。沒有正確密碼時,每次寫入都會返回 WRITE FAIL

  • 輸入正確的密碼,然後寫入。
  • 若密碼未知:對已知廠商密碼進行字典搜尋(常見值見 EEPROM 重新編碼),或聯繫廠商。
  • 這些控制器對時鐘速度和數據塊之間的間隔很敏感——這也是需要緩慢編程的另一個原因。

4. 帶保存命令的臨時儲存

寫入的數據落入易失性記憶體。一切看起來都正常——直到模組斷電重啟,舊代碼又恢復了。廠商的固件需要一條明確的保存命令(專有位元組序列)才能將臨時鏡像提交到永久記憶體區。沒有任何標準定義這一過程;每個廠商的序列都不同,需要作為腳本記錄下來。

5. 組合保護

最新的模組會疊加多種機制:硬件 WP 加上密碼加上保存命令加上操作前提條件—— 例如模組必須先進入低功耗模式才接受寫入。這在採用較新 SFF-8472 版本、在 A2h 偏移量 0x80 以上暴露256 個以上頁面的模組,以及 CMIS 模組上很常見。編程需要廠商提供的算法,通常只提供給大宗採購客戶。

如何識別保護類型

  1. 先嘗試直接讀取:A2h 能否正常讀取?(類型 1 常在此處失敗。)
  2. 嘗試對一個無保護欄位進行單位元組寫入。立即成功 → 類型 1。返回 WRITE FAIL → 類型 3 (或 5)。寫入看似成功但斷電重啟後恢復 → 類型 4。
  3. 嘗試已知密碼。仍為只讀 → 類型 2(硬件)或類型 5(組合)。
  4. 檢查封裝形式和規範版本——CMIS 和較新版本的 SFF-8472 模組通常屬於類型 5。

CodingBox 中的支援

  • 密碼設定——表地址、密碼地址(0x7B)和密碼值在 受保護記憶體與密碼中設定;已知密碼會從資料庫中自動套用。
  • 腳本——CodingBox 的編程腳本包含廠商保存序列以及類型 4 和 5 的解鎖算法。
  • 針對標準速度下寫入失敗的模組,提供逐位元組寫入和慢速時鐘
  • 硬件 WP 由編程器板處理,而非軟件。
  • 寫入前,每次讀取的內容都會保存到代碼資料庫,因此失敗的嘗試始終可以恢復。

台架上的常見症狀——WRITE FAIL、寫入後恢復原狀、密碼被拒——以及各自的處理方法: EEPROM 讀寫錯誤

這些類型為何存在——獨立 EEPROM 與 MCU 模擬記憶體映射的區別、保存命令、固件鏡像與簽名的具體實現:控制器與固件


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