小華的部落格: 2008/5/4 - 2008/5/11

搜尋此網誌

網頁

星期四, 5月 08, 2008

DIY~~Dump BIOS code

今天幫同事寫了一個Dump BIOS code的程式在Vista下去把BIOS code dump 出來,雖然是一個很簡單的程式但是卻出現一些小問題啦!

目前我是透過VB6去繪製畫面,然後透過C撰寫的IO.DLL與IO.SYS來存取4G頂端記憶體位址線的內容,由於VB每次存取時都是4Bytes 為單位,然後我又會去更新畫面,因此Dump 2MB大小的BIOS要花掉好幾分鐘的時間 ...光是看到就傻眼了!

不過目前還沒去解決這個問題,因為懶的去改C的部份,不過也算是一種體驗啦!
因為沒實做過都不知道自己會遇到什麼問題,呵呵!!!


或許你會問我說BIOS廠商不是提供WinFlash可以去Dump了嗎? 幹麻還自己搞一個,因為多點選擇嘛! (DOS下的還沒寫,找個時間在寫一下 >.<) 而且我目前拿到的P廠商WinFlash還有問題,還沒辦法做這部份的動作,所以就自己DIY囉~~

可能你還會問我說Dump出來幹麻? 因為我要拿來比對BIOS 啦,由於有些設定BIOS是開機後才會回寫回去BIOS ROM,所以進入OS後把BIOS傾印出來後比對原來燒進去的BIOS,這樣子就可以知道在Runtime過程中BIOS回寫了哪些東西回去BIOS ROM(因為遇到DMI字串找不到的問題,所以比對一下目前BIOS是放在哪邊)。

星期三, 5月 07, 2008

PowerCfg 工具

這邊介紹一下有關Vista Power Management 的工具,這是內建在Vista裡面的工具(cmd中直接鍵入powercfg就可以用了),在微軟的網站也可以找到相關白皮書裡面有很清楚的描述與用法說明。

會使用到這工具是因為在看一個奇怪的問題,而這個問題描述如下:
1.設定S4 : 15分鐘後進入
2.設定Scheduled Task (隨便設定一個,然後等個幾秒後使用RTC wakeup)
3.手動進入S3 (開始->S3)
4.時間到達,系統使用RTC wakeup (此時螢幕不會點亮,因為是系統規定的)
5.此時不要產生任何event (不要碰系統)
6.等兩分鐘後,系統會自動進入S3 (Vista的設計,見Note#1)
7.等15分鐘後,系統會wakeup,然後進入S4 #Problem (見Note#2)

我的問題是在步驟7,因為同樣的步驟在XP不會再進入S4而Vista會,因此查詢相關SPEC的過程中發現了這個工具。

這個工具可以去查看我們在電源選項中的設定,包含你要幾分鐘後關閉LCD..等,你可能會問我說直接在電源選項畫面設定不就看的到了,幹麻還用這個工具看,原因是因為電源選項中的每個選項都有一個GUID,每個GUID都有其代表的意義,這個意義在微軟的白皮書中有定義,所以你要去對照著看,因此才會需要用這個工具。

使用方式在微軟白皮書上都有說明,這邊就描述我去Dump的方式:
powercfg -getactivescheme (查看目前選用的電源管理的GUID)
powercfg -q 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c > T.log (查詢內容)

上面一串GUID不一定會ㄧ樣,看是GUID中的Sub-Guid就會跟白皮書上面定義的一樣,因此把它Dump到一個檔案中後你就可以對照著看了(T.log)。

Note#1 Vista Energy Conservarion 這份文件內的描述有提到Vista為什麼等兩分鐘後自動進入S3: Improved idle detection that helps ensure that a PC awakened from the network or for scheduled activity returns to Sleep after 2 minutes of idleness.

Note#2 Power Management Policy(PMPolicy_Vista.docx)這份文件中有提到如果設定哪個欄位後,Vista會從S3 wakeup然後自動進入S4:
Hibernate Idle Timeout Setting (GUID: 9d7815a6-7ee4-497e-8888-515a05f02364): Duration of time after Sleep that the system automatically wakes and enters Hibernate.

Reference
www.microsoft.com/taiwan/whdc/system/pnppwr/powermgmt