AMD宣布B450 X470將支援Zen 3 - 3C
By Emma
at 2020-05-20T22:13
at 2020-05-20T22:13
Table of Contents
閒聊仔又來了
Q: 為什麼有的平台不支援SPI 32MB?
A: 因為原本的SPI ROM用的指令碼(03h)後面帶的位址只有3byte, 上限只有16MB,
後來32MB SPI ROM新增了指令碼(13h), 或是使用 4byte 模式, 才能支援更高的容量,
所以才引發平台相容性問題, 有興趣請看規格書:
https://www.winbond.com/resource-files/w25q128fv_revhh1_100913_website1.pdf
https://www.winbond.com/resource-files/w25q256fv_revg1_120214_qpi_website_rev_g.pdf
順便聊聊SPI ROM災難恢復的演進簡史
第一代的雙SPI簡要原理圖:
+---+ +---+ +------+
| P | | M |---| SPI1 |
| C |---| U | +------+
| H | | X |---| SPI2 |
+---+ +---+ +------+
這種結構最簡單, 甚至簡化到只靠Jumper就完成切換, 進階版本就是搭配各種微控制器,
甚至還加上計時器(指定時間內沒完成開機就自動重開機後切換到#2).
但是, 同一個時間只有一顆SPI在線上, 所以開機後只能一顆吃到4byte模式切換命令,
此時你的燒錄軟體試圖#1燒完要接著燒#2就完蛋了 (定址模式錯亂).
兩顆都要更新就變成要分兩次開機燒錄.
第二代的雙SPI簡要原理圖:
+---+ +---+ +------+
| P |---| M |---| SPI1 |
| C | | U | +------+
| H |---| X |---| SPI2 |
+---+ +---+ +------+
為了解決第一代缺點, 只好把兩顆SPI同時掛在線上, 透過刻意地分區規劃,
例如在64MB的檔案尾巴挖了32MB的洞, 並設定這個洞為無效區, 再把頭部32MB複製進去.
創造出兩顆SPI檔案內容完全一樣且能夠任意交換開機.
搭配各種創意的燒錄策略, 例如直接燒#1直接開機, 或是一律先燒#2(下次開機就交換).
但是阿, PCH一定會檢查兩顆SPI的可用性, 一旦任意一顆壞了(無回應), 整套系統就GG.
好處同時可以將兩顆刷成新版本.
之後江湖上就很少出雙SPI了, 但是災難恢復的需求持續存在
+---+ +---+ +-----+
| P | | M | | |
| C |---| C |---| SPI |
| H | | U | | |
+---+ +---+ +-----+
一樣吸收第二代的招數發揚光大, 在原先的檔案內挖了兩個洞, 分別叫暫存區&黃金區,
剩下的區域叫活動區, 燒錄軟體一開始只能燒到暫存區, 下次開機後MCU發現暫存區有東西
, 就會試圖檢查RSA金鑰, 如果合法就燒回主動區.
如果主動區未能在指定時間內開完機, 下次開機就從黃金區燒回主動區.
唯一不變的是SPI容量需求一直變大...
--
Q: 為什麼有的平台不支援SPI 32MB?
A: 因為原本的SPI ROM用的指令碼(03h)後面帶的位址只有3byte, 上限只有16MB,
後來32MB SPI ROM新增了指令碼(13h), 或是使用 4byte 模式, 才能支援更高的容量,
所以才引發平台相容性問題, 有興趣請看規格書:
https://www.winbond.com/resource-files/w25q128fv_revhh1_100913_website1.pdf
https://www.winbond.com/resource-files/w25q256fv_revg1_120214_qpi_website_rev_g.pdf
順便聊聊SPI ROM災難恢復的演進簡史
第一代的雙SPI簡要原理圖:
+---+ +---+ +------+
| P | | M |---| SPI1 |
| C |---| U | +------+
| H | | X |---| SPI2 |
+---+ +---+ +------+
這種結構最簡單, 甚至簡化到只靠Jumper就完成切換, 進階版本就是搭配各種微控制器,
甚至還加上計時器(指定時間內沒完成開機就自動重開機後切換到#2).
但是, 同一個時間只有一顆SPI在線上, 所以開機後只能一顆吃到4byte模式切換命令,
此時你的燒錄軟體試圖#1燒完要接著燒#2就完蛋了 (定址模式錯亂).
兩顆都要更新就變成要分兩次開機燒錄.
第二代的雙SPI簡要原理圖:
+---+ +---+ +------+
| P |---| M |---| SPI1 |
| C | | U | +------+
| H |---| X |---| SPI2 |
+---+ +---+ +------+
為了解決第一代缺點, 只好把兩顆SPI同時掛在線上, 透過刻意地分區規劃,
例如在64MB的檔案尾巴挖了32MB的洞, 並設定這個洞為無效區, 再把頭部32MB複製進去.
創造出兩顆SPI檔案內容完全一樣且能夠任意交換開機.
搭配各種創意的燒錄策略, 例如直接燒#1直接開機, 或是一律先燒#2(下次開機就交換).
但是阿, PCH一定會檢查兩顆SPI的可用性, 一旦任意一顆壞了(無回應), 整套系統就GG.
好處同時可以將兩顆刷成新版本.
之後江湖上就很少出雙SPI了, 但是災難恢復的需求持續存在
+---+ +---+ +-----+
| P | | M | | |
| C |---| C |---| SPI |
| H | | U | | |
+---+ +---+ +-----+
一樣吸收第二代的招數發揚光大, 在原先的檔案內挖了兩個洞, 分別叫暫存區&黃金區,
剩下的區域叫活動區, 燒錄軟體一開始只能燒到暫存區, 下次開機後MCU發現暫存區有東西
, 就會試圖檢查RSA金鑰, 如果合法就燒回主動區.
如果主動區未能在指定時間內開完機, 下次開機就從黃金區燒回主動區.
唯一不變的是SPI容量需求一直變大...
--
Tags:
3C
All Comments
By Adele
at 2020-05-22T12:46
at 2020-05-22T12:46
By Hardy
at 2020-05-23T04:41
at 2020-05-23T04:41
By Necoo
at 2020-05-23T10:10
at 2020-05-23T10:10
By Eden
at 2020-05-26T00:36
at 2020-05-26T00:36
By Jacky
at 2020-05-29T09:09
at 2020-05-29T09:09
By Edward Lewis
at 2020-05-30T10:07
at 2020-05-30T10:07
By Victoria
at 2020-06-01T06:50
at 2020-06-01T06:50
By Edward Lewis
at 2020-06-06T06:21
at 2020-06-06T06:21
By Emily
at 2020-06-07T23:14
at 2020-06-07T23:14
By Ingrid
at 2020-06-12T08:56
at 2020-06-12T08:56
By Emily
at 2020-06-12T11:56
at 2020-06-12T11:56
By Charlotte
at 2020-06-15T00:03
at 2020-06-15T00:03
By Charlie
at 2020-06-19T17:28
at 2020-06-19T17:28
By Regina
at 2020-06-20T22:17
at 2020-06-20T22:17
Related Posts
Intel 十代桌面解禁評測彙整
By Tracy
at 2020-05-20T22:01
at 2020-05-20T22:01
Intel 10th gen 發熱控制好於預期?
By Jacky
at 2020-05-20T21:42
at 2020-05-20T21:42
Z490I AORUS ULTRA 十代CPU測試超前佈署
By Kristin
at 2020-05-20T21:25
at 2020-05-20T21:25
最新的虎徹2黑化版沒有12v rgb嗎
By Susan
at 2020-05-20T21:21
at 2020-05-20T21:21
100K 實驗室使用主機
By Caitlin
at 2020-05-20T21:20
at 2020-05-20T21:20