【我所認知的BIOS】—>ADU.exe
【我所認知的BIOS】—>ADU.exe
By LightSeed
2009-5-12
1、概要
在學習的過程中,肯定會要用不少的工具,作為底層的engineer那麼用的工具大多是DOS下。在DOS下所用的工具對於一般的人來說(相對於當今流行的圖形介面的操作系統)總是感覺比较陌生,也批著一層神奇的面紗。那麼今天我就以我最经常使用的ADU.EXE開刀給大家介紹一下它裏面所涉及的東東。主要是我全然模仿ADU也寫了一個工具,所以在此也介紹一下,好做個總結。
2、ADU—help
這個工具的全稱是 Award Doctor Utility簡稱ADU,是一個.exe的可執行文件。該工具的help內容就顯示在第一頁,如圖一:

圖一 help介面(也是第一個介面)
Help中都是介紹關於高速鍵是哪些的。我就不一項一項去解釋了,相信假设對這個工具有興趣的愛好者這點英語應該能ok的。
3、ADU—PCI 設備列表 and 配置空間访問
Press Enter后,直接列出PCI device的list見圖二:

圖二 PCI device的list
這個介面比较清楚地描写叙述了機器上的全部PCI device的關鍵信息。
关于PCI的configuration space直接读出来显示如圖三。

圖三 PCI configuration space 的截圖
正如圖所看到的,中間的數據是256個byte的配置空間,右邊的信息是對配置空間的相應bit的解析,這樣方便engineer查看。
4、ADU—memory访問
MEM其實是memory的相關操作。主要分為real mode和flat mode兩種。關於他們的介紹我會在後續的文章中介紹。介面如圖四:

圖四 real mode下讀取的memory數據
這個圖中信息比较豐富,start address 是以segment:offset的形式輸入的。Expansion Rom表示有一個option rom,它在的segment的高字節。比方說,圖中的option rom所在的地址就是在ram中的C000H:0000H處。Normal Mode表示如今訪问的模式是real mode。
至於FILE就是指打開指定文件而已。不過是以二進位的形式顯示出來。
5、ADU—IO功能
IO裏面主要功能如圖五

圖五 IO菜單
CMOS是CMOS的數據顯示如圖六
ISA是對一些特殊port的數據讀取,他們的操作方式是index和data的操作方式,所以仅仅要是用這種方式访問的,都能够從這裡輸入,輸出。
後面的幾個菜單都是大同小異。

圖六 CMOS port的介面
6、ADU--SMBUS
圖七是SMBUS讀取的介面,關於SMBUS的詳細介紹我會在後續的文章中給出。這裡仅仅是講講ADU這個工具的用途而已。


圖七 SMBUS讀取的介面
7、ADU--IDE
ADU還能够讀取IDE device的identify information,并作出相應的信息解析。圖八是它的IDE介面之中的一个。關於IDE的詳細介紹後續文章會繼續。

圖八 IDE信息介面之中的一个
至此關於ADU.EXE的介紹就算是OK了。
8、對ADU的擴展(增加CPU ID和CPU MSR的讀取)
我當時在寫這個工具的時候還增加了讀取CPU ID和CPU MSR的功能。截圖見圖九

圖九 增加的菜單

圖十 CPU ID的介面
在CPUID的讀取介面中,下麵有列出幾行信息,這個首先就有掃描CPU ID的輸入的最大值。並且都列了出來,方便engineer在用的時候做對照。而方框中的則是,當EAX輸入相應值回車后EAX~EDX返回值。

圖十一 CPU MSR的介面
每個介面的最後一行都是對其的說明,要查詢的時候直接輸入就可以。
以上就是我對ADU這個工具的理解。文章分成兩個部份,第一部份講award提供的工具所包括的功能簡述,第二部份是自己增加的元素。不過整個工具的實現部份,全然是照ADU的功能仿照設計的。由於之前沒有assembly的基礎,寫的程序效率不高,結構也不太好,所以有非常多值得提高的地方,待有空的時候我回頭從新寫一次。
【我所認知的BIOS】—>ADU.exe的更多相关文章
- MTRR内存类型范围寄存器
1.MTRR的概念 内存类型范围寄存器(MTRRs,翻译过来真别扭,后面都以MTRR直接来说了)提供了一种机制,这种机制其实就是确定在系统内存中物理一段内存的类型.这个类型其实是正对CPU来说的,见图 ...
- 鸟哥之安裝 CentOS7.x
http://linux.vbird.org/linux_basic/0157installcentos7.php since 2002/01/01 新手建議 開始閱讀之前 網站導覽 Linux 基礎 ...
- linux 文件系统
/ 根目录 /bin 存放着启动时所需要的普通程序.很多程序在启动以后也很有用,它们放在这个目录下是因为它们经常要被其他程序调用 /boot 很多Linux系统把内核映像和其他一些和启动有关的文件都放 ...
- linux 文件权限、类型、命名规则
文件权限 -rwxr-x--t 文件类型 用户权限 组权限 其他用户权限 umask是一个掩码,设置文件的默认权限,会屏蔽掉不想授予该安全级别的权限,从对象的全权权限中减掉:对文件全权权 ...
- Python 基礎 - 數據類型
標準數據類型 Python3 中有六個標準的數據類型 1 Number(數字) 2 String(字符串) 3 List (列表) 4 Tuple (元組) 5 Sets (集合) 6 Diction ...
- Browser 與 Server 持續同步的作法介紹 (Polling, Comet, Long Polling, WebSocket)长连接
對 Comet 的懵懂 記得兩年多前,第一次看到 Gmail 中的 GTalk 覺得很好奇:「咦?線上聊天且是 Google 的熱門系統,只用傳統的 AJAX 應該會操爆伺服器吧?」很幸運的,當時前公 ...
- 什麼是 N-key 與按鍵衝突?原理說明、改善技術、選購注意完全解析
不管是文書處理或遊戲中,我們都經常會使用到組合鍵,也就是多顆按鍵一起按下,執行某些特定的功能.有時候你可能會發現,明明只按下2顆鍵,再按下第3顆鍵時訊號卻沒有輸出.要是打報告到一半遇到這種狀況還好,如 ...
- C++ 檔案、資料夾、路徑處理函式庫:boost::filesystem
原帖:https://tokyo.zxproxy.com/browse.php?u=uG7kXsFlW1ZmaxKEvCzu8HrCJ0bXIAddA1s5dtIUZ%2FYzM1u9JI7jjKLT ...
- ASP.NET MVC 使用TryUpdateModel 更新的技巧
有使用 ASP.NET MVC 的朋友應該會對於 TryUpdateModel 有一定的認知,他不但可以利用 Metadata 來做欄位的驗證確保資料的正確性,也可以指定更新的條件以及不更新的條件來達 ...
随机推荐
- 新浪IP归属地API
之前用过腾讯的AIP,但是官方暂停这个服务了,新浪的API时间很久了,稳定性也很好,但愿能一劳永逸. ''' '''
- 第52周二Restful
今天去spring官网发现一个关键词:Restful,以前只在与一个系统对接时用到过这种形式的接口,但印象不深,百度搜索后才感觉自己太out了,这个概念2000年提出,2009年时国内就有很多人推荐使 ...
- #include <stdint.h>
stdint.h是c99中引进的一个标准C库的头文件. #include<stdio.h> #include<stdint.h> main() { /* 数据类型可以跨平台移植 ...
- Android中API建议的方式实现SQLite数据库的增、删、改、查的操作
package com.examp.use_SQLite.dao; import java.util.ArrayList; import java.util.List; import android. ...
- 开源消息总线ActiveMQ
一.消息中间件MOM(Message-Oriented Middleware) 消息中间件是解决异步分布式系统中通讯和排队问题的中间件技术.它利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数 ...
- C# webservice开发
一.Webservice简介Web Service也叫XML Web Service. Web Service是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量 ...
- 第9课_1_cluster安装
1. 配置网络 vi ifcfg-eth0 ifup ifcfg-eth0 [root@localhost init.d]# ./network restart Shutting down inter ...
- java.lang.NoClassDefFoundError: Could not initialize class net.sf.json.util.JSONUtils
页面报错: root: java.lang.NoClassDefFoundError: Could not initialize class net.sf.json.util.JSONUtils 出错 ...
- iOS的Ping++支付接入步骤(详细)
Ping++ SDK 代码下载地址: https://github.com/CoderLeezhen/PingppDemo 参考链接: https://www.pingxx.com/guidance/ ...
- iOS退出键盘的两种方式
1,可以让叫出键盘的那个控件,退出第一响应者; 例如:textField叫出的键盘,那么就可以调用textField.resignFirstResponder,达到谁叫出的键盘谁退回去 2,可以让叫出 ...