生活随笔
收集整理的這篇文章主要介紹了
Modern Standby 调试的准备
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
《人月神話》是一本軟件工程的著名書籍。其中“人月”的是一種表示勞動時間的計量單位。比如,一個軟件需要3個人5個月來完成,這個軟件的工作量就可以描述為 3*5=15人月。當然,因為軟件設計是復雜的思維勞動,用上面的衡量辦法很可能出現下面這樣的推理:一頭豬五個月下五個仔,換算下來一個豬仔相當于一個豬月,那么如果需要十個豬仔只需要十頭豬一個月即可…….
其中的一章名稱是“沒有銀彈”?!般y彈”這個詞來源于歐洲中世紀的傳說。說的是狼人這樣的怪物,一般的子彈是打不死它的。必須使用銀子做的子彈才能殺死它。(說道這里我忽然發覺這個詞聽起來充滿了貴族氣息,比如月光下帥氣的男主角從容的掏出手槍,裝上散發出銀色光芒的子彈然后射死怪物;相比之下國產的盜墓小說提到的對付“大粽子”的墨線糯米還有黑驢蹄子則充滿了鄉土氣息……)后來“銀彈”這個詞就被用來形容,那些特別有效果、一用就很靈的方法。這章節 “沒有銀彈”的意思是,軟件工程是一個超級復雜系統,沒有任何特效的方法,可以一直提高效率。在Debug Modern Standby 的時候同樣 “沒有銀彈” 。需要有足夠的心理預期,因為整個過程可能會拉的很長有很多試驗需要進行,必須保持足夠的耐心。最常見的問題是在Debug 過程中因為靈光一閃而進行跳躍試驗,漏掉一些因素最終導致數據和結論相互矛盾。因此,建議在上手的時候保持足夠的耐心和勇氣,盡量不厭其煩的將試驗和條件逐一記錄下來。
在動手之前,請保證如下事宜:
有一臺能夠進行參考的系統,最好是Intel RVP。在出現進入 MS死機或者重啟時,可以非常有效的比對出當前是HW還是FW 問題。如果出現HW工程師開始研究FW設定,然后FW工程師反復研究電路圖,通常意味著問題已經進入了死胡同;在干凈的系統上進行試驗。這里的干凈系統指的是只包括Windows和BKC驅動的系統。比如,XX電腦管家可能會導致系統無法進入MS,愛奇藝的存在也會影響進入 MS;使用已經驗證過的,確定支持 MS 的外圍設備,特別是硬盤。作為工程師我們只能解決自己設計上的問題,無法解決部件的問題。特別是硬盤這種外觀型號能夠完全一致但是內部 FW版本不同的部件。另外,用具體試驗來作為認定一些部件有問題是非常有說服力同時容易讓人接受的。比如,硬盤是進入 MS 的關鍵部件,Intel SoC 無法兼容UMIS的 NVME 和FORESEE的SSD會讓系統Block在 PC2;進行測試時請拔掉USB設備,包括鍵盤鼠標和 Hub,理論上這些都不會影響MS,唯一的問題是你不知道你手上的是不是不影響MS的;顯示器可能會影響進入 MS。我聽說過這樣的事情,但是并沒有親見,如果有條件建議多用幾個顯示器試驗;檢查所有的 GPIO 設定。最好讓 HW 提供GPIO 設定的表格,雖然他們通常并不情愿,但是這個確實應該他們做,只有他們才能深刻的理解每一根GPIO的功能。設定之后在 Windows下用 GPIO 工具導出最終結果然后檢查是否和HW設定匹配。我不認為有“高級錯誤” 和“低級錯誤”的差別。但是你可以想象當你和老板解釋為什么某個問題花費了3周才能解決時,“GPIO設定錯誤”和“Intel 給出來的 PMC 有Bug,結果他們用了二十多天在我們不停的催促下才給出了更新的版本”哪種解釋更容易讓他接受;如果設計有 ThunderBolt/TCSS ,務必請 HW保證設計同 RVP 相同,理論上用任何GPIO都是可行的,但是因為涉及到諸多的 FW 你無法保證其中能夠配合你的設計。之前我碰到過一個 Camera 模塊一直無法點亮,HW 測量表明對應的 MIPI Clock 頻率不正確,在我研究三天無果焦頭爛額甚至找不到能夠配置頻率的寄存器后,驅動工程師承認他在驅動中Hard Code成固定的頻率;盡量關閉BIOS中的安全相關的設定,比如:Secure Boot。因為這些項目可能會影響測試軟件以及測試結果。當然如果試驗發現確實會這樣,后面找 Intel 來解決就好了(這也意味著其他家會有同樣的問題,不用擔心);不要連接互聯網。這句話的意思是:從安裝系統開始,可以連接局域網,但是必須保證沒有連接到互聯網上。 Windows 后臺有升級操作,但是你不知道的動作和進度。我碰到過多次工作正常的系統在連接一次互聯網之后就變得不穩定,明確的結果能夠給我們明確的方向,不穩定的結果非常有可能誤導我們。建議在開始之前關閉 RTD3 功能,這個功能對省電有幫助,但是 MS 沒有幫助。在項目開始的時候,Codebase 中的 RTD3 設定的 GPIO 和你項目硬件設定不符有可能導致奇怪的問題;可以多用用全盤鏡像的工具,比如:Macrium Reflect 【參考1】,這樣可以及時發現因為驅動更新導致的問題;
當上述工作完成后,就可以開始進行 Debug 了, 具體的方法就是運行 Power House Mountain 然后查看結果,使用 Power Button 讓系統進入MS,推薦十五分鐘以上,然后使用 ?wpr -stop MSA.etl 生成記錄文件“msa.etl”。具體有如下操作:
如果Sleep MS 的時候有異常重啟,可以通過BIOS設定 CPU C-Status Limitation的方式來判斷是否和MS相關。比如,Limit 到 C8 之后不會發生重啟,就能確定問題是SLPS0 信號發出時導致的問題;通常這種問題是和硬件設計相關還需要請 HW 幫忙測試找到原因;如果PHM提示某個設備有問題沒有 Power Gated, 最簡單的方法是關閉之然后繼續試驗。特別注意的是:Audio設備不要輕易關閉,一些能夠正常工作的系統關閉 Audio 之后反倒變得無法進入CS,據說這個問題是同 GFX Driver 有關;如果發現某個外部 PCIE 設備有問題,需要確認對應的 Clock Request Pin 是否正確。在 PHM 的 Log中有這個的讀取結果,結合電路圖進行確認。當然,這里我非常建議用示波器之類的確認這個Pin是否工作正常。如果PHM 提示 CSME 工作異常,首先需要確認 BIOS中的ME 版本和系統驅動是否匹配,其次還要檢查沒有使用的SMB Pin之類是否正確關閉;
從上面的描述也可以看到,幾乎所有的方面都會對 MS 產生影響,這也是為什么“在Debug Modern Standby 的時候同樣 ‘沒有銀彈’ ?!?的原因。如果考試之前老師表示這本書全部都是重點,那么也就相當于沒有重點........
Good Luck, BIOS Engineer!
總結
以上是生活随笔為你收集整理的Modern Standby 调试的准备的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。