很多朋友在問我, 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
19 則留言:
SE64.EXE -->for Windows 64 bit OS
Would you please advise where to get or download AcpiViewVista?
大大你好 關於ru的作者blog中提供的ru下載點好像不能下載 能否請大大提供?
这可是新手学习BIOS的好东西哦,收藏了。谢谢!
1.有關AcpiViewVista 我還再詢問原作者是否願意授權給我放在部落格給各為下載,還在等待回覆中!
2.有關RU.EXE 載點不能下載的問題請跟原作者聯繫! 我沒有他的授權所以無法提供給各位!
linux 下有沒有類似ru的工具
linux下當然也有,就叫lru
Google一下就知道了
向小華提個問題,使用winio的library,在windows下訪問實體記憶體,是否存在:
1. 無法訪問2G以上
2. 訪問memory TYPE1的時候會受到OS的保護機制的干擾,總是得到奇怪的返回值
如果您已經遇到過上述問題,有相應solution嗎?
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來實現的
既然有位匿名的朋友抛磚引玉,我也忍不住跳出來說兩句。一直以來driver裏面訪問記憶體都是通過HAL層,直接通過組合語言還是沒怎麼聽說過,忍不住想請問大大,難道可以在driverentry裏面直接es賦0,edi賦物理位址就能直接讀取物理memory?還望大大解惑?
哈! 頭腦在暈了誤導各位了!
你在驅動程式那邊可以發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
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的載點嗎?
我也需要SE的載點...
謝謝
張貼留言