免責聲明:
- 此處描述的過程可能會損壞/損壞正在修改的設備。
- 您得承擔執行此處列出的任何步驟的所有風險和責任。
- 務必瞭解,這裡所列出的步驟可能準確,也可能不准確或適用於您的特定組件。
目的:
- SPI(串行外設接口)刷 ROM 晶片,例如 BIOS 和 Thunderbolt 固件芯片,可以使用外部設備(例如低成本的基於 USB 的 CH341a 編程器或 Raspberry Pi、Rock Pi 或其他設備)進行讀取、擦除和重新編程支持SPI接口。
- 最常見的基於 USB 的 CH341a 編程器為 Vcc(或主電源)引腳提供 5V 電壓。但是,BIOS 和 Thunderbolt Firmware 芯片(例如 Winbond W25Q80DV 或 Macronix MX25L8006E)需要3.3V的 Vcc。
- Arceli 低成本基於 USB 的 CH341a 編程器,該編程器本身支持 3.3V 的 Vcc。
專業提示:
- 避免使用 USB 集線器,將 CH341a 直接連接到機箱前部或後 IO 面板上的 USB 端口。斷開任何不必要的外部USB 設備,以使 USB 端口向 CH341a 提供穩定的電壓和全部電流。
第 1 步:在 MacOS 上安裝flashrom :
- 首先通過在終端中復制並粘貼以下命令來安裝Homebrew :
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
- 現在按如下方式安裝flashrom :
brew install flashrom
第 2 步:將 Arceli CH341a 編程器連接到 SOIC8 夾:
- 請參考下圖配置器件並將 Arceli CH341a 的 8 個引腳連接到 SOIC8 夾。
- 將兩個下跳線移至引腳 2 和 3 後,它們應該如下所示
將 CH341a 編程器的 8 根(或 7 根)線連接到 SOIC 帶狀電纜本身的相應引腳(左圖)或小電路板的背面(右圖)。SOIC8 帶狀電纜上的紅線是 Pin 1。
- 如果刷入板載 Thunderbolt 控制器(內置於 Designare Z390、Z490 Vision D 的主板中),則不要連接Vcc(引腳 8),而是連接所有其他引腳。關閉 Designare 或 Vision D 後,保持電源 (PSU) 打開(但必須關閉電腦)。這將為Vcc(或引腳 8)供電。
- 如果刷入板載 Thunderbolt 控制器(內置於 Designare Z390、Z490 Vision D 的主板中),則不要連接Vcc(引腳 8),而是連接所有其他引腳。關閉 Designare 或 Vision D 後,保持電源 (PSU) 打開(但必須關閉電腦)。這將為Vcc(或引腳 8)供電。
- 2020 年 10 月 18 日更新: 忽略上述內容並 (a) 將 PSU 開關翻轉至 OFF,(b) 將 Arcelli 上的 Vcc 連接到 SOIC 夾上的引腳 8。Arcelli 應該能夠直接為 Thunderbolt SPI ROM 芯片供電。
- 如果閃爍任何尚未連接到電源的設備,則必須連接Vcc(引腳 8)。
請注意,SOIC8 夾包含一根紅色電線。那根電線是引腳 1。然後引腳 2 與引腳 1 位於同一側並與引腳 1 相鄰。請參閱上面的引腳圖。
Arceli CH341a 編程器的文檔可在此處獲得。
第三步:將SOIC8 Clip連接至Flash ROM芯片(CH341a連接電腦USB口之前)
- 小心地將 SOIC8 夾子連接到 Winbond(或 Macronix)芯片。芯片上的引腳 1 標有一個小的圓形凹坑。如果對此不確定,請停下來詢問。
- 緩慢而輕柔地擠壓和鬆開彈簧夾。不要著急。確保夾子的方向使紅線連接到物理芯片上的小凹坑引腳(引腳 1)。
- 現在將 CH341a 連接到 USB 端口並檢查電源 LED 是否變為紅色(不是藍色)。
第 4 步:讀取 Flash 晶片。
- 首先我們讀取閃存芯片的內容並存儲原始ROM的備份。我們在終端中使用flashrom讀取內容 3 次並驗證所有三個文件是否相同。這讓我們確信芯片被正確讀取。
sudo flashrom -p ch341a_spi -r Give_the_Contents_a_Name.bin
代碼:
% sudo flashrom -p ch341a_spi -r firmware-1.bin
Password: <enter your password>
flashrom v1.2 on Darwin 19.3.0 (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Calibrating delay loop... OK.
libusb: info [darwin_claim_interface] no interface found; setting configuration: 1
Found Winbond flash chip "W25Q80.V" (1024 kB, SPI) on ch341a_spi.
Reading flash... done.
代碼:
% sudo flashrom -p ch341a_spi -r firmware-2.bin
flashrom v1.2 on Darwin 19.3.0 (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Calibrating delay loop... OK.
Found Winbond flash chip "W25Q80.V" (1024 kB, SPI) on ch341a_spi.
Reading flash... done.
代碼:
% sudo flashrom -p ch341a_spi -r firmware-3.bin
flashrom v1.2 on Darwin 19.3.0 (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Calibrating delay loop... OK.
Found Winbond flash chip "W25Q80.V" (1024 kB, SPI) on ch341a_spi.
Reading flash... done.
- 然後計算並比較所有 3 個文件的校驗和以確保它們匹配:
代碼:
% shasum firmware-1.bin
3c1e2555a8203a0dc20b7cfe2577636112a82367 firmware-1.bin
% shasum firmware-2.bin
3c1e2555a8203a0dc20b7cfe2577636112a82367 firmware-2.bin
% shasum firmware-3.bin
3c1e2555a8203a0dc20b7cfe2577636112a82367 firmware-3.bin
- 我們看到所有 3 個校驗和都匹配,因此我們可以確信數據被正確讀取。
步驟 5:將修改後的固件編程到閃存芯片中。
- 確保您已按照第 4 步操作並保留了原始固件的副本。
- 找到修改後的固件,燒入芯片如下:
代碼:
% sudo flashrom -p ch341a_spi -w Name_of_Modified_Firmware.bin
- 這將 (a) 擦除芯片,(b) 將新固件編程到晶片中,以及 (c) 驗證新內容。