小華的部落格: BIOS 輔助工具

搜尋此網誌

星期三, 9月 10, 2008

BIOS 輔助工具

很多朋友在問我, BIOS工程師一般都會拿哪些工具去輔助?!

這邊我就列出幾個比較看到的工具給大家參考一下:

DOS
RU.EXE - AMI 公司的一個工具,可以在dos下查看硬體資訊, 從原作者網站得到的資訊如下:

1. PCI configuration space
2. PCI Express
3. Super I/O chipsets
4. System chipsets
5. 16bit port read/write up to 32bit data
6. IO space
7. IDE data returned by Identify Command
8. Up to 4GB memory read/write (In EMM386/Windows 9x max=1MB)
9. CPU MSRs
10. SMBIOS data
11. SMBUS data

Debug.com - DOS自帶的工具,可以簡易的輔助你反組譯程式碼
Debug32.exe - Quantasm Corp. 出版的工具,同Debug.com但是可以查看 32 bit Register.

Windows
SE.EXE - 同RU.EXE功能,Windows版本!
RW-Everything - 同SE.EXE 視窗版,之前PCIE BaseAddr會讀取錯誤現在不知道改好了沒?!
AcpiView - Microsoft for Windows 2000/XP ,可查看ACPI Table
AcpiViewVista - 網友nickel 寫的,同AcpiView 可在Vista下查看ACPI Table
ACPIScope - 同ACPI view功能,可查看ACPI Table
DMIScope - 可查看DMI Table
PCIScope - 可查看PCI/PCIE Info
Key101.exe - 我T學長的以前同事key寫的(目前人還在我們公司某NB單位),功能同SE.EXE 但針對P公司BIOS撰寫!所以可讀取一些BIOS資訊!
USBView.exe - 可列舉USB 設備在哪些Controller上.

以上工具的介紹可在下面網站下載或是得到相關資訊,至於相關版權問題請自行與作者洽詢!

Reference
http://ruexe.blogspot.com/
http://rweverything.phpnet.us/
http://www.tssc.de/index.htm
http://www.programmer-club.com

18 則留言:

匿名 提到...

SE64.EXE -->for Windows 64 bit OS

DC 提到...

Would you please advise where to get or download AcpiViewVista?

說謊豆沙包 提到...

大大你好 關於ru的作者blog中提供的ru下載點好像不能下載 能否請大大提供?

xiaomao101 提到...

这可是新手学习BIOS的好东西哦,收藏了。谢谢!

Harrison Hsieh 提到...

1.有關AcpiViewVista 我還再詢問原作者是否願意授權給我放在部落格給各為下載,還在等待回覆中!

2.有關RU.EXE 載點不能下載的問題請跟原作者聯繫! 我沒有他的授權所以無法提供給各位!

匿名 提到...

linux 下有沒有類似ru的工具

匿名 提到...

linux下當然也有,就叫lru
Google一下就知道了
向小華提個問題,使用winio的library,在windows下訪問實體記憶體,是否存在:
1. 無法訪問2G以上
2. 訪問memory TYPE1的時候會受到OS的保護機制的干擾,總是得到奇怪的返回值
如果您已經遇到過上述問題,有相應solution嗎?

Harrison Hsieh 提到...

WinIO的問題你可能要自己測試一下! 因為我都是自己寫Driver然後存取實體記憶體!因此沒遇過你的問題!

順帶一提! M$ 的Driver 層可以直接使用Assembly 取存取4G 的記憶體! 但是M$是建議透過HAL層的方式去做! 而 WinIO是使用哪種做法我可能有空在幫你看看他的Source code ,目前沒空幫你看! 不好意思喔 @@..

匿名 提到...

你提到在driver層可以直接使用assembly訪問4G phymemory,那麼請教一下,在driverentry裏面,段selector都指向全部4G空間嗎(我的意思是說,driver層不是page mode而是segment mode嗎),還是說你是自己在GDT掛hook來實現的

magic008 提到...

既然有位匿名的朋友抛磚引玉,我也忍不住跳出來說兩句。一直以來driver裏面訪問記憶體都是通過HAL層,直接通過組合語言還是沒怎麼聽說過,忍不住想請問大大,難道可以在driverentry裏面直接es賦0,edi賦物理位址就能直接讀取物理memory?還望大大解惑?

Harrison Hsieh 提到...

哈! 頭腦在暈了誤導各位了!

你在驅動程式那邊可以發smi啦,然後叫BIOS讀回來,因為我自己在BIOS端加code(我是bios工程師 =.=Y), 所以都是Inline assembly方式去發SW SMI來得到資料,這是方法之一, 不過你要改BIOS code所以不適用於一般做法! 真是很不好意思誤導你們了!

如果正統做法就如同你們所知道的,必須透過M$來得到實體記憶體位址,而我以前的做法如下:

phyAddress.QuadPart = ((DwordRegsSys*)iBuffer)->EDX;

pRemapped=MmMapIoSpace(phyAddress, 0x00000100, MmWriteCombined );
((WordRegsSys*)oBuffer)->AX=*(WORD*)pRemapped;

MmUnmapIoSpace(pRemapped,0x00000100);

希望我的解釋能對各位有幫助啦!

匿名 提到...

linux下當然也有,就叫lru
是linux內建?
可以給網頁  或 載點
謝謝

匿名 提到...

Hi harrsion.上次我有看到你发给我的MSN留言,你可以把acpiview vista放到部落给他人下载。但是那个版本应该是不能execute method的。 - nickel_shao@hotmail.com

Harrison Hsieh 提到...

Dear Nickel,

感謝你的授權,我會把他放在BLOG給大家使用! 謝謝你喔~

Harrison

匿名 提到...

PL.EXE - DOS 下的BIOS相關的dump tool
PCI, SMBus, SMBIOS, ACPI, HD-Audio, MPTable, DISK, Int13h
http://www.ubios.blogspot.com/

Download link
http://www.badongo.com/file/20169681

逸塵 提到...

可是我google很多下lru,都找不到耶,且lru也是一種演算法,實在是很難找到資料~ 能否給個link?謝謝

匿名 提到...

在linux下有一個程式可偵測super io暫存器位址的設定狀態fromBIOS
您可使用指令
apt-get install superiotool(ubuntu)
yum install superiotool(fedora)
superiotool -d (dump出register address的值)
參考文獻來自
http://www.coreboot.org/Superiotool
大家相互學習^^


匿名 提到...

請問有SE64的載點嗎?