kl800.com省心范文网

我所知道的BIOS


[我所知道的 BIOS]->[前言]
2007/9/24 下午 03:52:10

本 身從事 BIOS 相關工作已經六年了;今年由於生涯規劃,決定暫時(?)離開 BIOS 而轉做其他工作;即使如此,對於 BIOS 仍是有著極大的興趣以及期待. 從小就 是喜歡做整理以及分享的人,所以最近有個衝動是:何不將自己所知道的整理一 下,並將之 POST 出來,讓更多對 BIOS 有興趣的人可以有點深入的瞭解 BIOS? 也 讓版上的諸多前輩可以提出指教及批評,進而糾正我的一些觀念 ? 基於這樣的 想法,我選擇了這裡來作為我這個念頭付諸實現的地方,請大家多多挹注,多多指 教,多多批評 ! 歡迎任何的建議 ^_^ 首先要說明的是,我覺得 BIOS 在台灣可以分成三類的人:(自己的分法,僅供參考) 1. 撰寫 BIOS kernel 的人 2. 撰寫 chipset code 的人 3. 撰寫 OEM code 的人 我是屬於第二類的人,所以我的觀點(view point)也是從 chipset 出發 ! 對於第 一及第三類,我的接觸不多 ! 要先這樣說明的原因是:有些問題我無法回答或 comment,因此,就有賴版上諸位 的幫忙了(if available) 還有,我本身是撰寫某一家 BIOS(A, P, or M)的,所以會幾乎以該家的所教給我 的 flow/information 來敘述事情;當然,我會盡量抽離這種成分來敘述,讓大家 瞭解 "事情的本質即可 "...若有偏頗之處仍須請大家包涵... 最後,我所撰寫的幾乎是親身經歷的 information,因此,不會有天馬行空的想像 (不過,做 BIOS 仍是需要想像力的...^_^...) 若有錯誤,那應該是我的經驗不足, 或是我的經驗有誤,還是要請大家指正囉 ! 就這樣... liaoo

[我所知道的 BIOS]->[系統架構]
2007/9/26 下午 07:18:38

任 何 firmware 都有 相 對 應 的硬 體 ; 也唯 有 深 入 瞭解 硬 體 ,才 能 寫 出 好的 firmware ! (當然,對 programming language 很熟,有技巧的的人可以寫出好的 firmware,但是,另一個層面是:對硬體很瞭解,所以所寫的 firmware 與 H/W 搭 配良好,這也是另一種值得追求的地步) BIOS 就是 "主機板的 F/W". 所以,它的對象就是主機板上的所有 devices. (為了後續的解說,我只列出一些,其他的坊間書上都可找到) - [CPU] => central process unit. 依架構不同有分 Intel or AMD cpu. 其工作之一是: fetch code->decode it->fetch operands->calculate->store result. - [North bridge] => 即俗稱的北橋. 常見的 Intel 945/P/G,965 等是其北橋晶片代號. 它可以 約略區分成四個 blocks(H/W view) 1. Host interface: 即 與 CPU interface 的部分. 2. DRAM interface: 即與 DRAM interface 的部分 3. Display interface: 即與 AGP/PCIe VGA interface 的部分 4. Link interface: 即與 South bridge(南橋) interface 的部分 簡 單說,North bridge 的功能是: Host block 承接 CPU 所 issue 的 cycle, 辨認(identify),並且將之 forward 至 "正確的接收者" ( Ex. DRAM block, display block, or Link block ) 所以,它像交通警察一樣,接收中央的命令,將來自四面八方的車流引導至正確的 地方,讓整個城市的各部分各角落可以相互交流無虞. -[South bridge] => 及俗稱的南橋. 常見的 Intel ICH7/8 為其南橋晶片代號. 它"可能"包含以 下的 blocks: 1. Link interface: 即呼應北橋的部分. 2. PCI block: 處理 PCI request 部分(即 implement PCI spec H/W part) 3. ACPI block: implement ACPI H/W part 4. USB 5. Audio 6. SATA(AHCI) 7. ...

所以, 南橋裡面包含許多我們常見的名詞, USB/1394/SATA/HDA/TPM/PCIE...等 -[BIOS ROM] => 儲存 BIOS image 的 device. 常見的有 ISA ROM/LPC ROM/SPI ROM. 編譯出 來的 BIOS binary file 透過燒錄器或是 flash tool 燒錄到此 ROM 中. 內容是 0101...的 binary code 所以,總結來 說: BIOS code 被 CPU fetch, 經過 decode 後, 會轉發給 NB.NB 接到後也會自行 decode 此 request;若是 與 DRAM 有關的,則 forward to DRAM block;若與 display 有關,則 forward to display block;若是與 PCI 有關的, 則將之轉發給 SB(透過兩者中間的 Link),請 SB 再找適合的人 Ex. USB, SATA, or 1394 controller ! ( 別忘了 PCI H/W 是在 SB 裡...) 以上依序所講到的 CPU->NB->SB->ROM,將在後面的敘述中用來說明一些觀念及 flow. Summary: 1. BIOS 可以說是 chipset's driver !!! 2. CPU 所 issue 的 cycle 會先抵達 NB,由 NB 判定是給誰的;若不是 for DRAM or display,則會再轉發給 SB,由它判定是要給誰的

[我所知道的 BIOS]->[Jumpless]
2007/9/27 下午 02:22:34

上一篇所提到的是:BIOS entry point. 它是第一個被 CPU 所抓取並執行指令之 處.每家 BIOS 都有其相應的 file,要牢記. 在 本文中,要提及: Jumpless ! 在此要先說明 Jumpless 的意義.它代表:"用 s/w 方式來 config clockgen generator,使之產生正確的 頻率 s 來供應系統運 作". 重要性在於:假如某個 frequency 錯了,則將導致 system abnormal or malfunction... <有哪些 frequencies 由 clockgen 提供?> - CPU clock (在此指的是 : host clock, Ex. FSB800 CPU 需被 supply 200MHz clock) - DRAM clock( depends on chipset design; Ex. DDR 533 要被 supply 266MHz clock) - AGP clock: 標準 is 66.6MHz (= 1/2 PCI clock) - PCI clock: 33.3MHz - SATA clock: 100MHz(see SATA spec,似乎還要更精確...) - Link clock: 即假如 NB/SB 中間有 link,亦由 clockgen 提供 - USB 1.1 clock: 12MHz - SIO clock...etc <Clock Generator 的架構> => ClockGen 基 本 組 成 為 PLL(Phase Looked Loop) + Div. PLL 的 輸 入 為 14.318MHz, 利用 迴授方式產生出 frequency F;之後 經過 Div 除頻,便得到 desired frequency,見下列圖示: 14.318MHz -> PLL -> F -> Div -> f Ex. F = 400MHz, 為 PLL 振出來的;若 Div = 4,則 f = 100MHz ClockGen 的 spec 中,會列出許多 registers,好比是 Function 的 "contact window",透過這些 registers 可以設定此 clockgen ! <How to access ClockGen> =& gt;現今存取 clockgen 的方式,都是透過 SMBUS 來達成. SMBUS 有分 1.1 and 2.0,不過大同小異. SMBUS 是 2-wire protocol;由 SMBUS master(即內建在南 橋 內 部 的 SMBUS controller ) 來 下 command 給 SMBUS device(Ex. Clockgen);Command 中常用的有 Block Read/Write & Byte Read/Write

不同家 chipset 的 SMBUS controller implement 方式不同,自然下 command 的 方式亦不同;主要的步驟是: - pre-init( clear status or ...) - put slave address(要 access 的對象) - decide Read or Write - put command(Protocol type, Ex. Block or Byte access) - put offset(要存取 自 clockgen 中的哪一個 Byte 開始...) - put data if (Write device) - start transaction !!! (... processing ...) - get "Complete" status to check if transaction is done successfully (...wait for system reset...) * 當 start transaction 後, SMBUS controller 便會將 programmer 所 prepare 的資訊將之轉成 SMBUS command 打給 device;完成後應該在 controller 端有 status register 可以檢查,看看是否 transaction ok or failed,或是有其他 error conditions. 透 過 這 樣 的 方 法 ,programmer 便 可 以 config clockgen 使 之 產 生 正 確 的 frequencies. <2 Programming ways for clockgen> => 現今的 ClockGen 有提供兩種方式 for S/W config. 一為 table mode,一為 linear mode. Table mode 指的是: ClockGen spec 中會有一個 table,裡面說 明: 要產生 ? frequency 要填 ? 值.因此,這種方式只需 program 1 byte to Clockgen 就行了. 若是 linear mode,則是坊間所說的無段變頻,即可以微調 frequency. Ex. table mode 只提供 100/133/166/200MHz,但 linear mode 則可 以提供類似 102.6/136.3/168.7..等的頻率. 此時,要 program 的 byte 數就很 多了.....除此之外, linear mode 也可以 config 所謂的 spread spectrum(%), 板廠測 EMI 時會用到 <Notes> 1. For NB platform power-on CPU frequency 由 2 pins 來決定;DT platform 會由 Jumper 決定.不管如何,之後做 Jumpless 都可以 override 掉原 clock settings 2. 有些 clockgen 所提供的 SS 都是 center spread. 若需要 Down spread 則 可以由 center spread 搭配 改變後的 frequency(類似直流準位)來達成 <Summary> 給我正確的頻率,其餘免談 ...^_^... 作者 : harrison(harrison) [ 貼文 225 | 人氣 43332 | 評價 310 | 送出評價 3 次 ] [ 回應本文 ] [ 發表新文 ] [ 給予評價 ] [ 給予評價 ] [ 回上頁 ]

[ 回討論區列表 ] [ 回知識入口 ]
2007/9/27 下午 03:03:52

前輩我有幾個問題要發問! 1. 你這邊說的 Table 方式頻率是指供應給 CPU 頻率嗎? Intel 網站的 CPU 說 明,他說是固定的不可調的? 所以這不是 HW 固定住(Latch)設定值了嗎? 2. 可以解釋一下 Down Spread/Center Spread /...所代表的意思嗎? 還有用 途? 3. 我目前也在嘗試 Program ClcokGen(新手上路),很多專有名詞還沒搞懂, 另外目前 ClockGen 不是可以輸出不同頻率嗎? 為什麼 Table 方式只需要 Program 1 byte 就好 ???還是說各家廠商設定方式不同,有些廠商只要利用 1 Byte 就已經選擇好所有的頻率了(33MHZ/48MHz/DOT96MHZ/LCD27MHZ...)? 作者 : terenas(風) [ 貼文 366 | 人氣 7440 | 評價 400 | 送出評價 0 次 ] [ 回應本文 ]
2007/9/27 下午 03:17:06

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

你心留下知識是件很好的事, 但對於一位新人來講 各個名詞的定義及解釋, 也是相當必要的. 但這可能得花上你不少的功夫, 甚至可以出本書.

作者 : liaoo(liaoo) [ 貼文 484 | 人氣 27127 | 評價 1070 | 送出評價 15 次 ] [ 回應本文 ]
2007/9/27 下午 05:11:14

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

>前輩我有幾個問題要發問! >1. 你這邊說的 Table 方式頻率是指供應給 CPU 頻率嗎? Intel 網站的 CPU 說 明,他說是固定的不可調的? 所以這不是 HW 固定住(Latch)設定值了嗎? > >2. 可以解釋一下 Down Spread/Center Spread /...所代表的意思嗎? 還有 用途? > >3. 我目前也在嘗試 Program ClcokGen(新手上路),很多專有名詞還沒搞懂, 另外目前 ClockGen 不是可以輸出不同頻率嗎? 為什麼 Table 方式只需要

Program 1 byte 就好 ???還是說各家廠商設定方式不同,有些廠商只要利用 1 Byte 就已經選擇好所有的頻率了(33MHZ/48MHz/DOT96MHZ/LCD27MHZ...)? [For #1] => 我所謂的 "Table"方式指的是: 為了方便設定,clockgen designer 會專門 提供一個 byte register(8-bit);此 byte 的某些 bit fields(Ex. bit[4:0]) 可以讓 programmer 填一組值,例如 01001b. 此值 write 至 clockgen 成功 後, CPU/DRAM/AGP/PCI/...etc 都會是固定的頻率. Ex. 100/133/66/33/...etc. 所以才說只填 1 byte only ! 此值一旦填至 clockgen, clockgen 便依據該 byte(可參考 spec 前幾頁,會 有一張表說明: bit[4:0] <-> frequency combinations)來產生出 frequencies. 不 管用哪一種方式(table or linear mode),都會 supply CPU frequency !!! 不過,此時的 CPU frequency is CPU 的外頻 ( CPU 總頻率(core) = (外 頻)*(倍頻 <-multiplier) ) Ex. 外頻 200MHz(Merom CPU, FSB 800),倍頻 = 12 -> core freq = 2.4GHz 還有,BIOS 可以調整 外頻 & 倍頻 ! 沒問題 ! 不過,若遇到鎖頻的 CPU(Ex. 量產版的 CPU),倍頻可能無法調整.但外頻還是可以靠 config clockgen 來達 到 !!! For #2 => 假設要達到 100MHz 且 SS = 0.5% center spread.則: (...想像以前學的直流與交流的訊號...) 100MHz 相當於 直流的部分,其值不隨時間而變; 0.5% center spread 好比弦 波訊號(振幅是 100M * 0.005 * (1/2);所以,兩者的合成便是: 以 100MHz 為 中心,其值隨時間而變,振幅 is 100M * 0.005 * (1/2) 的訊號 !!! 我 '猜' 要這樣測試的原因是:所產生的 clock 一定不會是 perfect 的 100MHz,有可能因為元件或是外部干擾而被 "改變".為了模擬這樣的情況,我 們會將 clock 的 spread spectrum enable,產生 "隨時間而改變"的頻率,來 測試系統的穩定度...等 Down spread 0.5% 指的是:距離 水平 100MHz, 最低的值是 100M-100M*0.005,最高值則是 100M 本身( 等同於: 水平值 99.5 + center spread 0.5%, right ? ) For #3 => 前面提過,只設 1 byte 就可以產生所有頻率是因為: clockgen 公司已經 把設定各頻率的功能"濃縮"在一個 byte 裡面 ; programmer 只要 config

this byte 就可以了... * 關於 EMI 測試部分,有錯請指正. ( ...我有用到 "猜" 字眼...^_^ ) 作者 : harrison(harrison) [ 貼文 225 | 人氣 43332 | 評價 310 | 送出評價 3 次 ] [ 回應本文 ]
2007/9/27 下午 05:28:59

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

感謝前輩回答,看樣子這部份是有關 EMI 測試的知識,我會去補強這部份的 知識不足,感謝前輩指點。 作者 : seanchang(H) [ 貼文 1191 | 人氣 773 | 評價 3140 | 送出評價 43 次 ] [ 回應本文 ]
2007/9/28 上午 09:28:37

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

更正一下 >- DRAM clock( depends on chipset design; Ex. DDR 533 要被 supply 266MHz clock) DRAM clock 現在都是由 NB 產生 . 外部的最多是 buffer 而已. 並非 clock generator. 原因是為了保持較良好的 host clock & DRAM clock 的同步. >- USB 1.1 clock: 12MHz USB 的 clock 是 48MHz ><Clock Generator 的架構> >=> ClockGen 基本組成為 PLL(Phase Looked Loop) + Div. PLL 的輸入為 14.318MHz, 利用 迴授方式產生出 frequency F;之後 經過 Div 除頻,便得 到 desired frequency,見下列圖示: > >14.318MHz -> PLL -> F -> Div -> f > >Ex. F = 400MHz, 為 PLL 振出來的;若 Div = 4,則 f = 100MHz > 其實 PLL 不是單純一個的 div. 鎖相迴路的參數是兩的 divider 組成 M(VCO divider)/N(REF divider)

作者 : seanchang(H) [ 貼文 1191 | 人氣 773 | 評價 3140 | 送出評價 43 次 ] [ 回應本文 ]
2007/9/28 上午 09:35:18

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

>1. For NB platform power-on CPU frequency 由 2 pins 來決定;DT platform 會由 Jumper 決定.不管如何,之後做 Jumpless 都可以 override 掉原 clock settings > 不是只有 NB 如此.不管 DT 或 server. CPU FSB 也是 pin(由於 FSB 頻率比 NB 多.所以是 3 pins )來決定的.不是 jumper. 即使要做超頻設計會對這三 pin 做手腳, 也不會使用 jumper 作者 : seanchang(H) [ 貼文 1191 | 人氣 773 | 評價 3140 | 送出評價 43 次 ] [ 回應本文 ] [ 發表新文 ] [ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

2007/9/28 上午 09:57:47

>感謝前輩回答,看樣子這部份是有關 EMI 測試的知識,我會去補強這部份 的知識不足,感謝前輩指點。 由於 對 clock 信號來說. 鋒(peak)值是能量最強的地方. 所以 peak 的能量 就會不斷累積, 發射出來. 因此在頻譜上就會出現能量很強的頻率. EMI 工程師的工作就是要想辦法屏閉這些電磁波的干擾. 為什麼需要 spread spectrum? 由於 PLL 十分精準. 也就是說 100MHz 的 clock, 其 peak & peak 之間的距離一致(波長固定). 所以能量十分驚人. 使用展頻可以使 peak 的距離改變(由於頻率 不斷的在一個範圍內改變, 這個可以用示波器累積 clock 信號來看) 所以 累積的能量會比較低. 這樣 EMI 可以比較好處理. 至於為什麼會有要求 BIOS 一開始就把展頻開著, 以確保板子的穩定? 很簡 單.不開展頻 clock 很穩定.自然比較不會有問題. 展頻一開. 由於頻率是 浮動的. 很多設計欠佳的板子就會不穩定. 及早發現才能及早修改. 作者 : liaoo(liaoo) [ 貼文 484 | 人氣 27127 | 評價 1070 | 送出評價 15 次 ] [ 回應本文 ]
2007/9/28 上午 11:16:31

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

謝謝指正 ^_^

>更正一下 >DRAM clock 現在都是由 NB 產生 . 外部的最多是 buffer 而已. 並非 clock generator. 原因>是為了保持較良好的 host clock & DRAM clock 的同步. 的確是如此.我舉的例子是以前的 chipset design. 現在我做過的 chipset 其 DRAM clock 的確由北橋來推. 北橋中有一會 register 定義: CPU-DRAM ratio. Ex. CPU clock = 100MHz. Ratio = 3:5,則可得 DRAM clock = 166MHz

>USB 的 clock 是 48MHz 我 們 chipset 的 design 是: 由 clockgen 提供 12MHz clock(或由 external crystal 提供),被 PLL 吃進去後,會產生 48MHz 給 USB 1.1(你說的 應該是這部分). 至於 USB 2.0,則是 supplied other freuencies ! >其實 PLL 不是單純一個的 div. 鎖相迴路的參數是兩的 divider 組成 M(VCO divider)/N(REF divider) > 的確. 觀念上來說是 PLL 所振出的頻率經 div 後可得到 desired frequency. 但在 clockgen 中: 1. 有 2 bytes(即所謂的 M,N)來決定 VCO 2. 有幾個 bits 來決定 div;一些主要的 frequency 都有相對應的 div 3. VCO / div = frequency

還有,想請問: Q1. 下面所說的 3 pins 是 ? >不是只有 NB 如此.不管 DT 或 server. CPU FSB 也是 pin(由於 FSB 頻率比 NB 多.所以是 3 >pins )來決定的.不是 jumper. 即使要做超頻設計會對這三 pin 做手腳, 也不會使用 jumper (我猜是因為現在的 cpu FSB clock 的選擇已經超過四種,所以需要 3 pins...?) Q2. 超頻透過 3 pins 的方法是 ?

作者 : harrison(harrison)

[ 貼文 225 | 人氣 43332 | 評價 310 | 送出評價 3 次 ] [ 回應本文 ]
2007/9/28 上午 11:38:20

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

嗯嗯,這 3 pins 我也有問題,因為 CPU 內部有一個 MSR 暫存器好像會依照這 3 pins 設定,而北橋的 FSB 也是靠這 3 pins,所以 ClockGen 這 3 pins 我有 點搞不太清楚 ?? 作者 : liaoo(liaoo) [ 貼文 484 | 人氣 27127 | 評價 1070 | 送出評價 15 次 ] [ 回應本文 ]
2007/9/28 下午 03:36:48

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

查了一下,我覺得是這樣: CPU MSR 裡有一個 MSR 可顯示 CPU FSB clock "status" 這是規範出它的最 大 limit 值, 不一定是現在在跑的值 ! Ex. FSB800(200MHz) CPU 也可以跑在 FSB533(133) ! 至 於 3 bits 的問題, Ex. Merom CPU is FSB800 CPU,因此 MSR 中的 bit[2:0] ( 3 bits ) = 010b.說明這顆 CPU host is 200MHz. Clockgen 也要給 CPU 200MHz. 這三個 bits 應該是指這個. 以前因為 Host clock 可能只有<=4 種組合,用 2 bits 代表即可. 但現在的 CPU FSB 可到 1066MHz(或甚至更高),已超過4種的組合,所以需要 3 bits 來 代表.

* FSB800 指的是 bandwidth ( 800 = 200 * 4 ) ; 200MHz 指的是 clock speed; 兩者在 Intel CPU 代表同一件事. Ex. FSB1066 => host clock = 266MHz

至於超頻用這三 bits,比較不能瞭解.因為 CPU core frequency = 外頻 * 倍 頻.所以調整 clock 只能從這兩者著手. config clockgen 只能改變外頻的部 分. 倍頻的部分要靠 config CPU MSR 來達成. 還有,光調整外頻(透過 clockgen)也並非無止境的調高,還要考慮 CPU 的耐操 程度及與周邊 devices 溝通的問題. 不過,所謂的超頻不一定得由 config clockgen 來做到 !就看各板廠的作法了... 作者 : harrison(harrison)

[ 貼文 225 | 人氣 43332 | 評價 310 | 送出評價 3 次 ] [ 回應本文 ]
2007/9/28 下午 05:31:11

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

這 Clockgen 的這三根 3 pin 我看電路圖分別連接到 CPU(266/200)跟 NB(FSB 1066/800/...),因為我最近在試著調整 ClockGen 的 Byte 設定,其中有一個 Byte 我選擇了 200MHz 的輸出(但是 CPU 必須工作在 266), 此時系統會當機當 在 ClockGen 設定的地方, 但是當我改變成 266MHz 的時候系統就正常開機 了, 所以應該不能用 ClockGen 去超頻吧,因為 CPU 自己一定要工作在 266Mhz(Intel 鎖住了),且這 3 pins 決定了 FSB 頻率,也就是說當我選擇 266Mhz 時 FSB 就一定是 1066Mhz(266*4),沒辦法單純改變 CPU or FSB 的頻 率。 原先我一直以為可以利用 ClockGen 超頻,看樣子是不行的 >.<

作者 : liaoo(liaoo) [ 貼文 484 | 人氣 27127 | 評價 1070 | 送出評價 15 次 ] [ 回應本文 ]
2007/9/28 下午 07:24:51

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

Harrison, 請問: 你說 "CPU(266/200)跟 NB(FSB 1066/800/...)" <- 這指的是 ? 又 "沒辦法單純改變 CPU or FSB 的頻率" 中 CPU or FSB 指的是 ? 你是使用 Intel chipset or ? Clockgen 是用哪一顆 ? 作者 : harrison(harrison) [ 貼文 225 | 人氣 43332 | 評價 310 | 送出評價 3 次 ] [ 回應本文 ]
2007/9/28 下午 07:51:24

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

Intel CPU...跟 Monxxna 平台的北橋(Cantixx) CPU 是 Penryn 工作在 266Mhz Clockgen 是 IxS 395

CPU PLL 可以用 FSC/FSB/FSA=000 決定,查看 Table 也就是 CPU =266Mhz 而 NB 的 FSB Capability 不是決定於 BSEL[2:0]嗎? 也就是 266*4 約 1066MHZ ? 不是嗎 ? 剛接觸這部份,如有誤請指正! ^^ 作者 : liaoo(liaoo) [ 貼文 484 | 人氣 27127 | 評價 1070 | 送出評價 15 次 ] [ 回應本文 ]
2007/9/28 下午 09:28:04

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

原來你所測試的 platform 中,NB and clockgen 都與我碰過的不同...CPU 也 沒聽過... >CPU PLL 可以用 FSC/FSB/FSA=000 決定,查看 Table 也就是 CPU =266Mhz 上述應該指的是: clockgen 要產生 CPU clock = 266MHz ,需要 FSC/B/A = 000b >而 NB 的 FSB Capability 不是決定於 BSEL[2:0]嗎? 也就是 266*4 約 1066MHZ ? 上述指的應是: CPU 方面有 bus select (3 pins) 可以控制 CPU 外頻 為 100/133/166/200/266...等 結合上述兩點,FSC/B/A decides CPU frequency via BSEL[2:0] !!! 所以,Power-on 的行為是: BSEL[2:0]有其 default value. 但隨後 clockgen 亦可以透過 FSC/B/A 來 override 掉 BSEL[2:0]''s original value,達到 改變的目的 (不知這樣 correct or not ? )

還有,依據經驗,我的認知是: 1. FSB800 CPU(host clock 200MHz) 也可以跑在 host clock = 133 or 166. 意即比 200 低的都可以(至少 133/166 ok) ! 為了 clarify 是否 issue 與 host 有關,都會降 host clock 來確定. 這是做過實驗的 *不過, FSB1066 CPU 沒有親自試過跑 200MHz. 2. if FSB800 CPU, then 的確可以透過 M/N programming 來達到 clock 微 調的目的. Ex. 想調出 205MHz host clock ! 這是可行的 !

作者 : harrison(harrison) [ 貼文 225 | 人氣 43332 | 評價 310 | 送出評價 3 次 ] [ 回應本文 ]
2007/9/29 上午 10:41:07

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

>結合上述兩點,FSC/B/A decides CPU frequency via BSEL[2:0] !!! >所以,Power-on 的行為是: BSEL[2:0]有其 default value. 但隨後 clockgen 亦可以透過 >FSC/B/A 來 override 掉 BSEL[2:0]''s original value,達到改變的目的 >(不知這樣 correct or not ? ) 我去問了我的 EE 朋友,在討論後的"可能結果"如下: CPU 本身有預設值的 BSEL[2:0]值, 這個值是與 Clockgen 所產生的 BCLK 是對 應的, 本身 Spec 會有一個 Table 定義這個值, CPU 然後 CPU 透過 BSEL[2:0](輸 出 pin) 連接到 Clockgen 與 NB(這兩個都是輸入 pin),所以當 Power on 的時 候,Clcokgen 會依照 CPU 預設的 BSEL[2:0]去產生 BCLK 給 CPU,而 FSB 頻率 也是經由 CPU 接到 NB 的 BSEL[2:0] 來同步(一般都是 1/4 CLK 提取一次資料, 所以假設 BCLK=200MHZ ,而 Clockgen 輸出到 NB 的 Host Clk=200MHz,一般 都會同步,所以 FSB=Host clk*4 = 800MHZ) ※ Clockgen 分別透過 BCLK 與 HostClk pins 輸出頻率給 CPU 與 NB 然 後 CPU 開始執行 BIOS Code,當執行到 Program Clockgen 時,BIOS 可以 透過 Clockgen 內的暫存器的某個 Byte 內的 FSC/FSB/FSA 這 3 個 bit 來改變 BCLK 輸出頻率(應該可看作 override BSEL[2:0]設定), CPU 接收到新的 BCLK 當 頻率後可能的反應有: 1. CPU 本身不支援這個 BCLK 所以系統當機或是 Shutdown 2. CPU 可工作在這個 BCLK 頻率,依照這個頻率對照 Table,然後改變 BSEL[2:0]的設定 另外 CPU 是否能工作在 266Mhz or 200Mhz or both,這部份依照每顆 CPU 不 同而有所不同,有些 CPU 只能工作在 266Mhz,所以當 BLCK=200Mhz 時,CPU 就不會工作。 假設 CPU 可工作在 266Mhz 與 200Mhz,則當 BCLK 從 200MHZ-->266Mhz 時,CPU 一樣可以工作。 還有 CPU 內部的調整 ratio 的 MSR 暫存器可分成測試版的 CPU 跟出貨版 CPU 的不同: a)測試版 CPU 的 Ratio 可調,如何調要看 Spec

b)出貨版 CPU 不可調,也就是鎖倍頻

>還有,依據經驗,我的認知是: >1. FSB800 CPU(host clock 200MHz) 也可以跑在 host clock = 133 or 166. >意即比 200 低的都可以(至少 133/166 ok) ! 為了 clarify 是否 issue 與 host 有關,都會降 >host clock 來確定. 這是做過實驗的 另 外北橋 NB 為了符合不同 CPU 的規格,所以可支援不同的 FSB,例如可支援 FSB 400/800/1066Mhz,但是 CPU 是否能支援 host clock=100 or 200 or 266 則是要看 CPU 規格而定(一般 Host Clk 都是從 ClcokGen 輸出,當調整 FSC/FSB/FSA 時,BCLK 與 Host clk 都會輸出一樣的頻率,所以我還不知道如 何調整 Clockgen 可以達到單獨調整不同的 Host clk 頻率輸出,或是從北橋 暫存器調整???)。 我以前一直以為 Clockgen 輸出給 CPU 的頻率就是 Host clk,可是查了一下 電路發現 CPU 本身接腳就有 BCLK,而 NB 也有 Host clk,所以看樣子是兩碼 子事! 以上純屬個人與朋友討論的結論,如有誤請指正!!! 作者 : harrison(harrison) [ 貼文 225 | 人氣 43332 | 評價 310 | 送出評價 3 次 ] [ 回應本文 ]
2007/9/29 上午 10:50:53

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

忘記說: CPU 工作頻率=外頻 (BCLK)* 倍頻(MSR 調整) FSB = CPU Spec 說由 BSEL[2:0] "同步決定",但是看 Clockgen 電路有分 成 BCLK 與 HostClk(兩者應該輸出同樣頻率) 所以應該是北橋拿 HostClk 當參考 ,每 1/4 Clk 提取一次 Data,所以應該是 HostClk * 4 以前好像 FSB 頻率=外頻,所以有人把外頻當 FSB 頻率,後來的 FSB 頻率 =HostClk*4 所以不能拿 FSB * 倍頻 來當成是 CPU 工作頻率,而是要看 BCLK 來決定。 如有誤請指正! 作者 : harrison(harrison) [ 貼文 225 | 人氣 43332 | 評價 310 | 送出評價 3 次 ]

[ 回應本文 ]
2007/9/29 下午 01:39:07

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

我 記得後來出的 CPU 還有的虛擬內頻的功能,也就是當外頻=200MHZ,倍頻 =6 ,CPU 原來的工作頻率=1200MHZ,可是 CPU 內部可以使用虛擬內頻來達到 省電的目的,也就是把外頻/2 來當作是內頻使用,例如 200MHz /2=100Mhz , 此時的 CPU 可以降到 100*6=600MHz ,這個東西我印象中好像叫做 SuperLFM 技術,需要北橋也一起支援。

作者 : liaoo(liaoo) [ 貼文 484 | 人氣 27127 | 評價 1070 | 送出評價 15 次 ] [ 回應本文 ]
2007/9/29 下午 07:51:38

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

以硬體角度(clockgen 與 NB,CPU 之間的連接)來看真的比較清楚 ! 自己也翻 了 CPU spec 與 board AP circuit,發現到與 harrison 的結果相同. 我再稍 微整理如下: --------------------------------------------------------------1. Clockgen 會送兩組 differential-pair clocks 給 CPU & NB. 目前這兩 組 clocks 是相同的頻率. 2. CPU 有兩 pins 稱 BCLK[1:0]. Input. NB HostClk[1:0]. Input * bit[1:0] 是代表: differential-pair clock 都會有 2 clocks,分別是 true clock and complementary clock 3. 開機時的 behavior 是: 1) CPU 內部自己會產生一組 default BSEL[2:0] 給 Clockgen 的 FSC/B/A (依據經驗,這組 default 值 可以由 CPU MSR 得到 ; 也等於這顆 CPU 所能 支援的最大外頻,BCLK) 2) Clockgen 據此 FSC/B/A 會產生對應的頻率,送給 CPU 的 pins BCLK[1:0] Ex. 266MHz 3) 之後,若有需要, BIOS 可以透過 config FSC/B/A 或是 M/N programming(透過 clockgen 內部的暫存器)來 "override"掉原來的 clock setting 以達到改變 BCLK 的目的. ------------------------------------------------------------------

作者 : liaoo(liaoo) [ 貼文 484 | 人氣 27127 | 評價 1070 | 送出評價 15 次 ] [ 回應本文 ]
2007/9/29 下午 07:58:28

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

>忘記說: > CPU 工作頻率=外頻 (BCLK)* 倍頻(MSR 調整) > FSB = CPU Spec 說由 BSEL[2:0] '同步決定',但是看 Clockgen 電路有分 成 > BCLK 與 HostClk(兩者應該輸出同樣頻率) 所以應該是北橋拿 HostClk 當參 考 > ,每 1/4 Clk 提取一次 Data,所以應該是 HostClk * 4 > >以前好像 FSB 頻率=外頻,所以有人把外頻當 FSB 頻率,後來的 FSB 頻率 =HostClk*4 >所以不能拿 FSB * 倍頻 來當成是 CPU 工作頻率,而是要看 BCLK 來決定。 > >如有誤請指正! 加註: 1. FSB1066 指的是: bandwidth ! 不是頻率. 一般不會說 FSB266,而會說 host clock = 266MHz ! 2. *4 應該是因為 ( clock 的上下緣都可以觸發 ) + ( differential-pair) 的關係 如有誤請指正 ^_^

作者 : seanchang(H) [ 貼文 1191 | 人氣 773 | 評價 3140 | 送出評價 43 次 ] [ 回應本文 ]
2007/9/29 下午 10:18:59

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

我先解釋一下這三 pin,就我印象中除了之前 NV chip + K7 和 SiS 的 chipset 以外. CPU 的 FS0, FS1, FS2 會接到 clockgen (FSA,B,C)和 NB (BSEL0,1,2)的對應 pin. CPU 是負責產生準位, clockgen & NB 會在自己的 powerok ready 的時候把

資料 latch 進去. clockgen 除了利用這三 pin 來產生對應頻率的 CPU clock 外, 另外也會根據 這個頻率來產生合適的 PCI-E, PCI clock..., 而北橋則是利用來產生正確的 DRAM clock(host/dram ratio),對 intel 來說也有 PCI-E 的同步關係. 至於超頻跟 這三 pin 的關係, 我稍微解說一下.一般而言要超頻的話, MB 必 須把到 NB & clockgen 的路徑斷開, 由另外設計的線路來取代 CPU 的 FS0,1,2. 也就是說 NB & clockgen 一開機必須收到一個由這個控制線路決定的 FSB. 這 樣才能作所謂的 133-> 200 or 200 -> 266 的大幅度超頻.因為此時 NB 和 clockgen 才會正確的分配. 別忘了 NB, SB, PCI-E, PCI, DRAM 是沒有 CPU 這麼強的超頻力. 直接利用軟體改變 clockgen 會造成很多不該變化的頻率跟 著變.

Note:此超頻線路, default 是一個所有 CPU 都能開的安全值, 一但 BIOS 完成 設定, 就會 latch 住資料 此外還必須配合 watchdog 來處理過度超頻不能開機的問題. linear mode 只 用來處理小超頻的部份

作者 : liaoo(liaoo) [ 貼文 484 | 人氣 27127 | 評價 1070 | 送出評價 15 次 ] [ 回應本文 ]
2007/9/30 上午 09:13:02

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

再補充我的經驗: 以 前遇到的 clockgen 是 CPU & DRAM clocks 由同一個 PLL 決定,其餘 clocks 由另一個 PLL 決定. 當時有寫一個 OS 下的小程式,可以微調 CPU 頻率 (以 1MHz 為單位). 不過,微調 CPU 的同時也會微調到 DRAM clock(<-同一個 PLL),只是微調值不同(depends on divider). 現在遇到的 clockgen + chipset design 是: CPU 由一 PLL 供給,而 DRAM clock 由北橋推.同樣的,微調 CPU clock 一樣牽動 DRAM clock. 至於其它 frequencies 是否會跟著變, depends on Clockgen design;現在的 clockgen 幾乎都有 2 以上的 PLLs;所以類似 PCI/AGP/SATA clocks 都會有專 門的 PLL 控制. 而 CPU 則由另一個 PLL 控制. 有興趣及時間的人可以試試看 M/N programming(小微調). 看著 (Ex. FSB800 CPU)由 200MHz 操到 210MHz,也是一種快樂 ^_^

作者 : harrison(harrison) [ 貼文 225 | 人氣 43332 | 評價 310 | 送出評價 3 次 ] [ 回應本文 ]
2007/10/1 上午 09:09:15

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

>Note:此超頻線路, default 是一個所有 CPU 都能開的安全值, 一但 BIOS 完 成設定, 就會>latch 住資料 >此外還必須配合 watchdog 來處理過度超頻不能開機的問題. linear mode 只用來處理小超>頻的部份 感謝前輩的經驗分享,學到好多東西 ^^b 這邊剛好有提到 watchdog...想請問一下前輩這個東西在 PC 系統上是何時開 始使用? 用途為何或是應用為何? 以前學校沒看到過這個東西,不過我在嵌 入式系統常看到一些應用,另外在南橋 Spec 有看到過,而 BIOS 端需要如何 去應用以及設定它? 另外使用 watchdog 來處理過度超頻不能開機是怎樣的一個方式? 頻率不 對,CPU 已經無法 work,連 BIOS code 都不能執行了? 所以他是靠 HW 去處理 嗎? 作者 : liaoo(liaoo) [ 貼文 484 | 人氣 27127 | 評價 1070 | 送出評價 15 次 ] [ 回應本文 ]
2007/10/1 上午 11:28:48

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

我曾用過關於 watchdog timer 的經驗是 => 在 config clockgen 完後, 需 要 system 發 PCI reset ! 此時會需要 watchdog timer... 因 為, write clockgen 完後,有可能系統當掉 !!! (<-frequency settings 被改變了...)因此,我知道的作法是: 在 write clockgen 之前,先 enable watchdog timer ! (當然,一定會指明要"多少時間後"才發 PCI reset ! ) 一 enable 完,便匆匆去 write clockgen(當然,這段時間要夠長,以免 write clockgen 沒完成,PCI reset 就出來了 >_< ). 一旦 write clockgen 完畢,code 會寫 "jmp $"...然後等 watchdog timer 時 間到,然後 PCI reset 出來 reset system... 你所說當機時的 watchdog timer,我沒做過 ! 不過,watchdog timer 不一定 是要在 SB 內啊!(或是即使做在 SB 內,也是"獨立的"...)做成外部的電路就 不怕 chipset hang 時 timer 會失效了...^_^

一般我知道的 watchdog timer control 大概有: - enable/disable ( => 開始記時...) - time to bomb (=>多少時間後爆炸 ?) - event routing ( => 時間到要幹嘛 ?)

作者 : seanchang(H) [ 貼文 1191 | 人氣 773 | 評價 3140 | 送出評價 43 次 ] [ 回應本文 ]
2007/10/4 下午 04:08:58

[ 發表新文 ]

[ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

>這邊剛好有提到 watchdog...想請問一下前輩這個東西在 PC 系統上是何時開 始使用? 用途為何或是應用為何? 以前學校沒看到過這個東西,不過我在嵌 入式系統常看到一些應用,另外在南橋 Spec 有看到過,而 BIOS 端需要如何 去應用以及設定它? > >另外使用 watchdog 來處理過度超頻不能開機是怎樣的一個方式? 頻率不 對,CPU 已經無法 work,連 BIOS code 都不能執行了? 所以他是靠 HW 去處理 嗎? 是!watchdog 是個硬體機制. watchdog 在嵌入式應用中主要就是用來做系統自動回復用的.通常用在機器 處理很 critical 的任務, 不能當機超過一定時間的事務. 一般的用法是, 系統的軟體要固定時間去重設 timer. 例如: watchdog timer 設定 10 秒以後 會重置系統, 那麼系統軟體可以每 5 秒有一個 task 去重設 timer. 萬一系統 當機了. 由於軟體無法重設 timer. timer 數完了以後就會發出 reset , 讓 系統重新恢復狀態. 在 MB 中 superI/O 有 watchdog, clockgen 也有支援 watchdog. 以超頻來說, 往往設定完 clock generator 的瞬間, 系統可能會 當機. 這時有兩種狀況. 1. 因為 clock 變化造成, 這種狀況只要一個 PCI reset. 系統就可以繼續執行. 這時 BIOS 可以借用 watchdog 來發 PCI reset. 只要在定 clock 之前先設好 watchdog timer, 然後在一段時間後關掉 watchdog timer. 這樣就可以解決這個問題. 一種是 clock 增加太多造成 chip 死當. 這種就需要依靠 clock gen 裡面的 watch dog 來讓 clock 回復 成 default value(Note:要視 clock gen 的設計, 有些只是發 reset 而已). 另外一種我知道的應用是雙 BIOS 的主板. 利用 watchdog 來切換 BIOS. 作者 : seanchang(H) [ 貼文 1191 | 人氣 773 | 評價 3140 | 送出評價 43 次 ] [ 回應本文 ] [ 發表新文 ] [ 給予評價 ] [ 給予評價 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

2007/10/4 下午 04:09:14

>這邊剛好有提到 watchdog...想請問一下前輩這個東西在 PC 系統上是何時 開始使用? 用途為何或是應用為何? 以前學校沒看到過這個東西,不過我在 嵌入式系統常看到一些應用,另外在南橋 Spec 有看到過,而 BIOS 端需要如 何去應用以及設定它? > >另外使用 watchdog 來處理過度超頻不能開機是怎樣的一個方式? 頻率不 對,CPU 已經無法 work,連 BIOS code 都不能執行了? 所以他是靠 HW 去處 理嗎? 是!watchdog 是個硬體機制. watchdog 在嵌入式應用中主要就是用來做系統自動回復用的.通常用在機 器處理很 critical 的任務, 不能當機超過一定時間的事務. 一般的用法 是, 系統的軟體要固定時間去重設 timer. 例如: watchdog timer 設定 10 秒以後會重置系統, 那麼系統軟體可以每 5 秒有一個 task 去重設 timer. 萬一系統當機了. 由於軟體無法重設 timer. timer 數完了以後就會發出 reset , 讓系統重新恢復狀態. 在 MB 中 superI/O 有 watchdog, clockgen 也有支援 watchdog. 以超頻來說, 往往設定完 clock generator 的瞬間, 系 統可能會當機. 這時有兩種狀況. 1. 因為 clock 變化造成, 這種狀況只要 一個 PCI reset. 系統就可以繼續執行. 這時 BIOS 可以借用 watchdog 來發 PCI reset. 只要在定 clock 之前先設好 watchdog timer, 然後在一段時間 後關掉 watchdog timer. 這樣就可以解決這個問題. 一種是 clock 增加太 多造成 chip 死當. 這種就需要依靠 clock gen 裡面的 watch dog 來讓 clock 回復成 default value(Note:要視 clock gen 的設計, 有些只是發 reset 而已). 另外一種我知道的應用是雙 BIOS 的主板. 利用 watchdog 來切換 BIOS.

[我所知道的 BIOS]->[PowerOn Sequence & BIOS Entr
2007/9/27 上午 09:31:35

在 此將以 DeskTop platform 來說明(Notebook platform 的 power-on sequence 牽涉到 EC,可參考討論區中 "power on sequence" 文章);還有,所敘為 rough flow,詳細的時序圖依據 design 會有些許不同. <Power-On sequence> AUX power ok Main power ok PCI reset SB state-machine runs... NB state-machine runs... CPU power-Good ok CPU reset 1st code-read by CPU ( <- BIOS entry point,即 CPU 會抓取 FFFFFFF0h 處

的 BIOS code 來執行) * 當然 CPU 一次抓取的 BIOS data 不僅僅是幾個 Byte ! 而是一堆的 data(Ex. 64 bytes);之後會從中 extract 出 FFFFFFF0h 處的 data,然後來執行. 自 此,CPU 便循著 CPU->NB->SB->ROM 的 path,循序地至 BIOS ROM 中抓 code, 執行 fetch->decode->calculate->store...自此開始便是 BIOS POST stage starts...

<有可能遇到的問題是> debug code = "00" or "FF" (意即 BIOS 常用的 Port80 card 所顯示出的 "code" ) !!! * 此時,強烈建議:請在 BIOS entry point 處 丟 Port 80(value 可自行定義), 因為,即使 BIOS 有跑到,但因為距離 1st 丟 Port80 的 code 仍有一小段程式碼; 若系統 hang 在此其間,Port80 仍是沒有 code,因此,在 BIOS 一開始進來便先 out Port80 將有助於判定: system hang before BIOS entry point or NOT !!! ) # Assume system hang 'before' BIOS entry point, 可能的原因有: - incorrect power sequence: 此 sequence 有 spec,規範訊號間的相對關係與 assert/deassert 的時間,violate spec 有可能導致 system hang;此時需要 H/W or board designer 來量測 - incorrect power-on frequency:有發生過因為 Power-On CPU frequency 錯 誤而不開機者.請用 scope 量測 - incorrect chipset behavior: 意即上述的 power-on sequence 中有關於 NB/SB 的 state-machine 部分,有可能這部分的行為不正常,因此需要 H/W designer 來 clarify * 曾聽說,某家 chipset 需要 BIOS image 中 include 幾個 bytes 來 config NB/SB 的 registers; 這 些 settings 也 會 影 響 power-on 時 chipset 的 behavior;因此,這幾個 byte 若是錯的,也有可能 system hang #Assume system hang 'after' BIOS entry point => 這就是 BIOS engineer 的時間了,就 debug 吧...(儘管,有些 issue 是 board or H/W 造成的...) * 此時的 debug 方式,若有 輔助工具的(Ex. P debug card) 就用,沒有的就用 Port80 card 囉 ! <Summary>: 沒進入到 BIOS entry point 前....不要找我....真的沒辦法 >_< * 關於 BIOS entry point,請參考 討論區中 "追蹤 BIOS code 的進入點" 文 章 !!!

關於 BIOS entry point,有兩個東西提供給大家參考: 1. 假設 BIOS image is 512KByte. 利用 ultraedit 並切換至 Hex format 來 open this BIOS image. 找到 offset 7FFF0 處,將原先的 machine code 改成 <mov al, 66h;out 80h, al>的 machine code;存檔,然後將該 image 燒錄到原先的 ROM 上. 開機後就可以發現:Port80 is "66". (當然之後無法開機...因為已經破壞 了 BIOS content...你改的正是 1st CPU 會抓取並執行指令的地方 !!!) 2. [Q] 承上,一樣是 512KB ROM, 此時,若將一個 down-size 256KB BIOS image 燒錄到 ROM 上,再開機...會發生什麼事呢 ? 原因是...^_^...

補充一下好了. 為什麼 CPU 發的第一個位置不會只有 FFFFFFF0h? 而是多抓很多個? 範例中 為什麼是 64 bytes? 原 因在於 cache 的支援. cache 不是細分為單一 byte 的, 而是以 block(many bytes)為單位. 這個 block 的大小的名詞就是 cache line size. 也就是要填入 cache 一次要寫入的 bytes 量. 例 如 cache line size 為 16 bytes. 那麼一次就要讀 16 bytes 到 cache 去. CPU 一但發生 cache miss(第一次開機一定是 cache miss)的狀況時.就會通過 host bus 對外取 得資料. 這時就會產生 burst read cycle 來達成 fill cache line 的需求. 所以由 CPU 的 cache line size 的大小就可以知道 CPU 一次會抓多少的 bytes. P4 以後 CPU 的 cache line size 為 64 bytes, 所以 CPU 就會產生一個 burst length 為 8 的 memory read cycle. 所以 CPU 發出的位置就 需往下減.然後在讀取的資料中可以包含到 FFFFFFF0h 以後的資料.

[我所知道的 BIOS]->[Chipset Config]
2007/9/28 上午 10:35:05

一 旦正確的頻率供給給 system 後, BIOS 便依據既定的 POST table(類似行程表) 來做事. 首先,與 chipset 最為相關的便是 [chipset config stage]. 意即,在 此階段 BIOS 必須對 chipset registers 填入正確的值,俾使其正常運作. 一般 而言,要 config 下列的 devices: - NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...) - SB(即 PCI-ISA bridge) - ACPI registers - USB registers - SATA registers - PATA registers ... * 在此所謂的 registers 指的是: PCI config registers(除了 ACPI registers 以外). PCI spec 所定義的 PCI config registers 00~3Fh 為 PCI header part, 這個範圍的 registers 並不是此階段的主要工作(當然還是會 touch,只是不多), 而是稍後 BIOS PCI kernel 的事情.此階段將 focus on :offset 40h 以後的 registers, 因 為 , 這 些 是 device specific 的 部 分 , 是 chipset 自 己 加 function/feature 之處 !!! * ACPI registers 通常透過 IO 來存取 Ex. // assume ACPI Base is 800h,要 access ACPI Reg55h mov dx, 855h in al, dx ; <- al = ACPI Reg55h's value * 上述所列的 devices 多為 PCI device,也都有唯一的 PFA(PCI Function Address, 即 bus#,device#,func#), 也 因 此 , 只 要 對 device 下 PCI configuration read/write 便可以 config device registers. Ex. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3) => 簡單的 assembly can be: mov eax, 80002750h mov dx, 0cf8h out dx, eax

mov dx, 0cfeh in al, dx or al, 00001000b out dx, al 事實上每家 BIOS 都 maintain many "tables" 來說明: 哪一個 device 中的哪 些 registers 要填?值.相關的 access routine 都已經寫好. Programmer 只需 更改表裡面的值即可 ^_^ *當有人要求改 register setting 時,我們必須知道三件事: 1. why (為什麼要改?) 2. what(改成何值?) 3. when(什麼點改?) *對於 BIOS kernel 與 OEM coding 的人言,這部分會是較少碰觸的,因為,這些 code 會由 chipset porting 的人負責撰寫及維護.

[我所知道的 BIOS]->[DRAM Sizing] (1)
2007/10/8 下午 04:37:54

現在要提到的是 BIOS POST 中一個重要的 task : DRAM sizing ! 它主要的工作是:讓我們所插的記憶體可以正常且穩定的運作 ! [Q] 為什麼穩定的記憶體這麼重要 ? => 因為,有太多東西需要存放其上了,例如: BIOS code(之後在 shadow 部分會 提到), 開機之後所需要的 device drivers and OS,etc...假如記憶體不穩,在 存取 memory 時無法得到需要的資料,或是根本連 read or write 都不行,那麼便 會發現: 不是 system hang(maybe randomly) during POST ,或是進 OS 後 blue screen... 所以,"BIOS DRAM sizing 不好" 是系統不穩的原因之一. (地基都不穩了,怎能 奢求其上的房子可以堅固 ^_^ ) 在介紹 DRAM sizing 之前,先稍微簡單說明 DRAM 的相關知識. (若有不足或錯誤之處,請不吝指正...) 1. DRAM chip 可看做是 square array;基本的單位 is cell. 每一個 cell 是 由數個電晶體組成(depends on cell width;記得是: 1 bit 由一個電晶體組成, 可以記錄 0 and 1 的資訊; 1 cell 可能含 n bits;讀取 DRAM cell 屬於破壞性 的讀取,因此讀取的同時常伴隨著 "refresh" <- 與 SRAM 不同) 2. 要存取 DRAM chip 中的資料,必須提供 row and column address;這兩個 address 是有先後順序的;意即: row address 先送,然後再送 column address to chip. (呼應前面所言: square array,類似 x,y 定址) 最後 指到的 data 將被放到 data bus 上,CPU 會讀走 *若有空可以上網查: 為什麼 DRAM chip 所需的 pins 是減半(half)的 ^_^ 3. DRAM controller 現在一般都做在 chipset 中,Ex. NB 內(AMD K8 CPU 則是 將 memory controller 做在 CPU 內 ,for better performance);其工作便是 interfacing DRAM chip;充作其他 devices(Ex. CPU,DMA controller...etc) 與 DRAM chip 之間的橋樑 ! Ex. In BIOS ,寫下列的 code 欲 "read", "記憶體", "位置 8 處"的資料: xor ax, ax

mov es, ax mov edi, 00000008h mov al, BYTE PTR es:[edi] [00000008h] 是 programmer 所"知"的 linear address,但 DRAM chip 只認得 MA0~MAx,BA0~BA1..etc 訊號,如何溝通 ? => 靠 DRAM controller 來轉換 !!! 4. DRAM access time => 從 DRAM chip 接到 address signals 直到 valid data 出現在 data bus 上的時間(assume "read" memory),稱之;也是 DRAM chip 的特 性之一. 5. 現 今 常 見 的 DRAM is DDR/DDR2 SDRAM. 所 謂 的 "S"DRAM 指 的 是 Synchronous DRAM,即 DRAM operation 都是參考一個 clock 執行的;即與它同 步(synchronous). DDR 指得是 Double Data Rate,亦即在 clock 的 rising and falling edge 都可以傳資料. 而 DDR2 指的是: DDR 的 "第二代" ! (別想成 DDR2 = DDR x 2 !!! 雖然剛好有些數值是兩倍的關係...) Ex. DDR2 533(or called PC2 4200) => 1. "2" means DDR2 2. 533 is transfer rate( 每一秒可做 533 筆資料 transfer ) 3. 4200 means: 533 筆資料/s * 每筆 8 bytes( => 64 bit width) ~= 4200MB/s

下一章將介紹 DRAM sizing 的 flow/information !

[我所知道的 BIOS]->[DRAM Sizing](2)
2007/10/9 上午 09:34:23

DRAM Sizing 的程序與 chipset design 息息相關,不同家 chipset 其 DRAM sizing sequence 亦不同.在此只列出 rough sequence 以供參考. (真正的 detailed sequence 仍須以各家的 code 為準) [假設]: A. memory controller integrated into NB => NB PCI config space 有一部份與 DRAM 相關 B. This chipset support 4 DRAM sockets(max.) => 存在 4 registers,分別代表此 4-socket DRAMs' information => 存在 4 bits ,分別控制 4-socket's CS(chip select;enable DRAM 用的) [程序] 1. Configure registers by DRAM frequency: => 許多 DRAM 相關的 registers(Ex. tRFC,tRP,tRCD,tWTR,CAS,...etc)都必須 根據 DRAM operating frequency 來設定. (DRAM frequency 可由 CPU freq and CPU/DRAM ratio 求得) 2. Execute Initial sequence for DDR(or DDR2) => DRAM spec 都有列 initial sequence;既定的流程. 3. Set MAX-supported Size of this chipset for 4 sockets ! => 因為"不知道"插進來的 DRAM 到底多大,所以假設: 每一個 socket 上都有插 DRAM,且 size 是->此 chipset 所 support 的最大 size(Ex. 2G) 4. Do the followings for Socket 0/1/2/3 sequentially (<-此時,一次 "只 enable 1 socket"來做事) 1) check DRAM exist or NOT => 藉 由 簡 單 的 write-then-read pattern 來 判 定 socket 上 是 否 有 installed DRAM 2) decide DRAM "TYPE" if DRAM exist => 假如 DRAM 有在 socket 上,則進一步去取得其 "TYPE" information 以 DDR2 SDRAM 為例,此步驟即:求取該記憶體的 (Bank,Row,Column,Side) information Ex. 2x12x9's DRAM 且 double side ,則記憶體大小為 128MB

* 找 DRAM information 有分 MA table & by SPD. 3) write this information to corresponding register 5. Configure registers by DRAM loading => 步 驟 4 做完後 ,所有 installed DRAM 已經找到 . 此時 ,需要對一些與 "loading" 相關的 DRAM registers 做調整(因為: 不同數目的 DRAM 需要有不同 的 driving strength !) 6. Remaining tasks: => disable one-page mode enable dynamic reset enable refresh cycle ( <- DRAM is ok to use ^_^ ) [注意事項] 1. 至此 Top memory( "可使用的記憶體上限" 已經...決定了 ^_^) 2. 在此 stage,並沒有對 DRAM 做嚴密的測試. 測試階段在後面的 tasks 3. 一般若 register config 錯誤,或是 DRAM frequency 不對(起因於 clockgen config 錯誤),都會 hang 在這個 stage ! 若系統僥倖 passed this stage 並進 到 DOS,則可以再用 memory test utility 來 verify DRAM is stable or NOT !!!
[補充] 在此 stage(Sizing)完成之前, DRAM is not ready to use. 故撰寫此 code 時得全靠 CPU GPR(general purpose register)來傳遞參數 or return address ! 因此,得時時注意是否 register content 被改變 ( 因為 GPRs 不多...) 但是,若是 activate CAR(Cache as Ram),則在此 stage 就可以使用 push/pop,所撰寫的 code 將 較為模組化及彈性,也不必擔心 register content 會被破壞了... Ex. AMD Kx sizing code 便是很早便使用 cache 來當作 RAM,因此可以寫出 module code for sizing !!!

[我所知道的 BIOS]->[Shadowing]
2007/10/9 下午 11:32:19

[Why shadow BIOS ?] 在 此之前所提的 BIOS tasks,都是循著 CPU->NB->SB->SIO->ROM 的路徑來達成 的;意即: CPU 是去 BIOS ROM 裡面抓 code 來執行 ! 明顯的一件事是: ROM access time > DRAM access time ! 且 RAM access width is 32bits,而 ROM access width 通 常 為 16 bits. 因 此 , 便 有 了 所 謂 " BIOS Shadowing" 的 觀 念 產 生 ! <"performance consideration" !!! [What is shadowing] 意即: 將部分 BIOS CODE(in ROM)拷貝至 DRAM 中 ! (此後, CPU 將從 DRAM 中抓 code 來執行...)這樣的動作便稱做 "Shadowing" ! 而該處的 DRAM 即稱為 shadow memory. Shadowing 在 BIOS 中是極為複雜的 kernel code part ! 想深入瞭解的人最好 有 source code 可 trace. [When to shadow BIOS] => 當然是等記憶體穩定了,可以使用後,才做 ^_^ *因此,假如 DRAM sizing 有問題, BIOS shadowing 必定有問題 !!!

以下是之前在其他文章中發表關於 shadow 的文章,再次節錄以供參考 ! [System Behavior before & after shadow] 說 的更白話一點就是 : 當 Power On 後, 跑完 system power-on sequence 後, CPU 會被 reset ( reset 指的是 CPU 的 內容會回到 "初始值" ); 而 CPU 內部 的 EIP (32-bit )的初值是 FFFFFFF0h, 所以, CPU 的 第一個 code read 就是 到 FFFFFFF0h fetch code... 這個 memory cycle 從 CPU 發出, 先會經過 North bridge ; 此時, north bridge 會說 "這不是我的"...然後,往 south bridge 丟 ; south bridge 會說, "這是我的",收下後丟給 ROM ! 所以, FFFFFFF0h 會被 ROM 接走 !!! ( 所以 前人才說 "硬體初始值要把 0xFFFFFFF0 和 0x000FFFF0 要 mapping 到同一個地 方", 這個地方就是.....ROM !!! ) 之後, CPU 所發的 cycle 都會照上述的方式一路抵達 ROM...由 CPU 循著 fetch, decode, execute, store 的順序作事情...

但 到某一個階段前, BIOS 的 code 會指示 " 要將 BIOS data 從 ROM 搬到 DRAM" ! 而在此階段之後, BIOS 會設定 north bridge 暫存器, 告訴 north bridge "之後 CPU 所發的 cycle 不可以不收而傳到 south bridge".... 自此之後, CPU 所發的 cycle 全部轉到 DRAM 中,由 CPU 循著 fetch, decode, execute, store 的順序作事情... <Summary> 總而言之, BIOS 一開始是 CPU 讀取 ROM content 來執行,之後是 CPU 讀取 DRAM content 執行 ^_^
[補充][以提問的方式^_^] [Q]: shadow memory 到底是那一塊 ? [A]: 以現在的電腦系統而言, shadow memory 是在 UMA(upper memory area;傳統記憶體 640K 以上至 1M 之間) "裡面"(part of it) ;在此 UMA 內可以分為 6 segments(64kB/each), total 384KB. 其中 C0000h~DFFFFh: for VGA BIOS and other devices' Option ROMs E0000h~FFFFFh: BIOS ROM code 這兩個 blocks 本質是 memory;之後會被載以 ROM content;因此,便稱為 shadow memory(好 像: ROM 在上面, memory 在下面,是 ROM 的 "shadow"...) [Q]: shadow memory 的內容 完全 "=" ROM content ? [A]: of course NOT ! 除了 UMA 不大以外,BIOS ROM 因為必須 support more and more functions/features,size 已經越長越大;除此之外,BIOS ROM 中也有部分 module 是經過壓縮 的.(UMA 不夠放...) 當 BIOS shadow 時,只會 copy necessary code(Ex. run-time 要用的...etc)至 shadow memory ! 另外,已經執行過後的 code 也不會被載入. 因此,不是 1-1 的 copy... [Q]: what Shadow enabled/disable mean in chipset ? [A]: 前面提過, CPU 要 fetch 的 code 由 shadow memory 提供 or ROM 提供,其根本關鍵在於 chipset's behavior ! 意即,NB 必須做此決定 ! 所以,這機制一般是由 NB 來實現的. NB 內有所謂的 shadow registers. 當 shadow register enable 時, memory cycle 由 shadow memory 來回應;若 shadow disable,則由 ROM 回應. 意即: 000E0000h~000FFFFFh 由 shadow memory replies if (shadow enabled) 000E0000h~000FFFFFh 由 ROM chip replies if (shadow disabled) 若 FFFE000h~FFFFFFFFh 呢 ? 必定由 ROM chip 來回應(不然一開機怎麼辦?). 與 shadow

disable/enable 無關 !!! *若使用 ru.exe 並檢視 memory space,可發現上述的情況. [Q]: shadow 有何好處 ? [A]: 因為 slower ROM v.s faster RAM,所以放在 RAM 可以增加 system performance. *各位可以發現,同樣的 code 放在 rom & dram 中執行速度將大不相同 ! [Q]: shadow memory 的 issue ? [A]: 被 shadowed 的 memory area 都會被設成 write-protected ! 因此,這塊 area 是不能 write 的.所以,若有程式會 "write"這塊,則會有問題 !!! 其實, BIOS shadow 這段 code 大家不太會碰觸到...瞭解基本 information 即可. 有錯誤請指正 !!!

[我所知道的 BIOS]->[PCI SCAN]
2007/10/10 下午 11:49:56

這次要提的是: PCI ! [About PCI device] 1. 每一個 PCI device 都有其 unique PFA(PCI Function Address). PFA 由 bus number,device number & function number 所組成. Ex. USB device PFA is (0,6,0) <- USB is a PCI device and its bus/dev/function is 0/6/0

2. 有了 PFA,就可以存取其 PCI configuration registers. Ex. => mov mov out write USB PCI register 43h bit1 = 1 eax, 80003040h dx, 0cf8h dx, eax

mov dx, 0cffh in al, dx or al, 00000010b out dx, al * IO port 0cf8/0cfc 為 PCI config address port & data port, 意即 :將 address(80003040h)送到 config port(0cf8h),然後從 data port(0cfch + 3) 來存取 data(al) * 注意: 32-bit address(80003040h) 中 bit[1:0] = 00b(固定的),所以雖然存 取的是 43h,但還是寫成 40h ! 而要存取到 43h,則從 0cfch+3 來達成 (因為: 0cfch<-> 40h,0cfdh<->41h,0cfeh<->42h, 0cffh<->43h) 3. 基本的 PCI device 的 config registers 可分成 2 parts: A. header region(offset 00h~3Fh) B. device specific region(40h~FFh) 在 BIOS's PCI_SCAN stage 中,會 touch 到 part A. Ex. command byte, BARs,

Interrupt line, latency timer,...etc. 而 Part B 是製作 or design 這個 device 的廠商所附加的 function/feature. 4. 每個 PCI device 都可以 request 之前所提的 4 resources: A. memory resource:透過 Base Address Register(BAR) B. IO resource:透過 Base Address Register(BAR) C. Interrupt: 透過 interrupt pin D. DMA: 這需要 device 本身即具有 bus master function(status byte 會 indicate)

[Why need PCI SCAN] 現在的 computer system 泰半由許多 PCI devices 所組成,因此,BIOS POST 中另 一個重要的 task is : PCI_SCAN !!! 它 代表的是: BIOS 會掃瞄 whole system,找出所有的 PCI devices; initial them and build a linked list of PCI devices.在此 list 中的每一個 node 都代表一個 PCI device,且含有其 characteristics ! Ex. Vendor ID,Device ID, PFA,Option ROM exist or NOT,...etc. 一旦建好此表,以後的 tasks 隨時都可以參考 !!! 所以, after PCI_SCAN,有兩件事完成了: 1. PCI device initialization;device config registers(Part A) are correctly set ... 2. One data structure is built to describe the PCI devices in whole system(建在 memory 中) 這也是屬於 kernel code part ^_^ ( system 一般很少 hang at this stage...)

<Summary> 符合 PCI spec 的 device 即稱為........PCI device ^_^

[我所知道的 BIOS]->[VGA init]
2007/10/15 下午 05:37:49

一般而言,BIOS 會在 POST 時 locate 3 devices: - Input device(Ex. Keyboard) - Output device(Ex. Display device) - IPL(Initial Program Load, Ex. HDD) 這次要提到的是 Display device,即 VGA ! 在 PCI_SCAN 之後,BIOS 會在記憶體中建立一個 data structure,代表整個系統的 PCI architecture. Ex. Ponter-> NB->P2P->SB->IDE->AUDIO->LAN->USB 2.0->USB 1.1->...->VGA->...->End 在 VGA_init 的階段,BIOS 會去 go-through this list,一個個的問:"有沒有人 需要 shadow Option ROM 的 ?" ------------------------------*1 在此,先 break,並說明一些觀念: 1. Option ROM 是 for H/W 的 firmware;像 BIOS 一樣是 for MB.有可能直接在 硬體上 ,or 包在 BIOS image 中 2. 有 Option ROM 的 H/W 可能有: VGA card,Lan card, RAID card,...etc 3. VGA's Option ROM 也就是 VBIOS ! 專門處理 screen I/O operation(主要 是 int10h) 4. VGA "shadow" 即代表: 將 VBIOS copy 到 shadow RAM, Ex. C0000h~C7FFFh 處(32K) 5. VGA init 這個階段只 consider "VGA device" ! for 其他 device,之後再 考慮其 shadow 的事宜 ------------------------------(承接前面的 flow):此時,VGA device 會舉手說:"我要" !此時,BIOS 會去尋找 VGA device's Option ROM(即 VBIOS)在哪裡;此時,VBIOS 有可能在 card 上 or " 當初" 被包在 BIOS image 中(*2) 一但找到,則會先 作一些 checks:Ex. - Option ROM signature is 0xAA55 ? - 比較 Option ROM 內的 Vendor ID/Device ID = H/W's IDs ? - class code and sub-class code correct ? - length = 0 ?

...etc... 若都符合,則視它為 VGA Option ROM(VBIOS) ! 之後,利用 memory2memory copy 將之 copy 到 shadow memory,從 C0000h 處開始存放... 複 製完後,再 check "checksum"是否正確;if yes then jump to "entry of initialization code", 控 制 權 自 此 轉 移 至 VGA Option ROM, 由 它 去 做 initialize VGA 的工作 ! ( 若是 CRT 螢幕,user 會聽到ㄉ一ㄤ的一聲 ! 即代表 initialize VGA 成功 !!! ) <- 此為 VGA_init 的工作 !!! *2 說"當初"的原因是: VGA BIOS 若包在 BIOS image 中,在 BIOS shadow 時,也 會被一併 copy 到記憶體的某處放著;當然,會記住存放處 ! [Note] 一般遇到 VGA init fail 的 issue 時,可以先 check:是否 VGA BIOS 已 被 copy 至 C0000h 處;若有,則 check 是否已經 jump to VBIOS or NOT;若否, 則可以往前 check 是否前面所列的一些 "關卡"沒過 (Ex. ID 不 match, or checksum 不相等...etc ) <Summary> VGA 若 ok,電腦就是彩色的 ^_^

[我所知道的 BIOS]->[Remaining POST Tasks]
2007/10/16 下午 03:53:18

除了之前所提的 tasks 外,還有下列 main tasks 是 BIOS POST 會執行的: [USB init] => initialize USB 的部份.這方面的 code 幾乎是 kernel code,再加上少許的 chipset code(因為,chipset's USB controller 是哪一種需要 customize, Ex. OHCI or UHCI...etc). 主要在 implement USB spec 的部份(USB 1.1/2.0 and USB legacy). (天書也... 沒看過...) [KB init] => init KBC 的部份 [HDD init] => 這是 locate IPL(Initial Program Load)的 code.因為最終系統需要 load OS,而 OS 是存在 storage device 中,因此需要讓 storage....動起來 ! 主要的工作有: - 設定 chipset 端的 storage controller(PATA or SATA)'s settings - identify HDD - config HDD by set-feature(<-設定 device 端的 settings) 這樣一來,controller 端與 device 端有了 "相同的認知" 後,就可以 access HDD 了 ! [ACPI] => 主要是將所有的 ACPI tables 建至 memory 中;讓 ACPI OS 可以 parse & config. [Boot-to-OS] => 最後 BIOS's 工作是: invoke int19h(for Boot-strap) !此中斷服務程式會 嘗試去找 boot device,並從中(storage)將 boot-loader 載入至 memory 中;然 後跳到 boot loader 處,開始執行載入 OS 的工作 !

* 一但進入 OS 後,與 BIOS 會有關的....幾乎只剩 ACPI 了 !

<Summary> BIOS 不是雞肋 ^_^


我们知道BIOS密码分为两种.doc

我们知道BIOS密码分为两种 - 我们知道 BIOS 密码分为两种, 用户密码和系统密码,前者是在设置 BIOS 时才用 到,而后者则是在自检之前就会要求输入。下面说一下...

BIOS_图文.doc

不过进入 BIOS 的方法不只有一种,开机时除了按进入 BIOS 而我上面所说的另外一种方式属于间接方法,在开机界面 F12 调出启动项菜单很多人都知道,但是却很多人都不...

很多用户不知道BIOS时什么意思.doc

很多用户不知道BIOS时什么意思 - 很多用户不知道 BIOS 时什么意思, 打开时里面全是英语对于英语不懂得人往往 不知道怎么操作,今天我就把 BIOS 翻译了一遍。 工具...

bios模式下怎么看硬盘.pdf

bios模式下怎么硬盘 - bios模 式下怎么硬盘 BIOS模式下硬盘方法如下: 开机,立即不停敲击Del键(不同电脑主板进入BIOS的方式不同,可能为F2、F12 等);进....

我所知道的修改cmos密码四种方法.doc

我所知道的修改cmos密码四种方法 - BLOS 密码我所知道的四种破解方法 -

怎么查看电脑bios启动类型.doc

怎么查看电脑bios启动类型 - 怎么查看电脑 bios 启动类型 在我们所使用的电脑中有两种启动方式:uefi 和 bios。但是现在还是有很多用户不了 解自己的电脑是什么启动...

认识BIOS.doc

认识BIOS - 认识 BIOS: BIOS 英文 Basic Input/output System 的缩写,意思是“基本输入/输出系统”。以前,我们只是从书本上了解到它是操作系统 和硬件之间...

bios查看及修改常用软件.doc

AWD BIOS(软件来源:BIOS 之家)一.MODBIN32.EXE 已知功能 1.查看主板 CMOS 默认设置 2.修改主板 CMOS 设置静默选项。 待了解:我司板载 AWD BIOS 是否均能够...

BIOS轻松了解.doc

我所知道的EC 66页 免费 BIOS EC 电源管理之间的关... 19页 1

我所知道的EC_图文.doc

完整的流程如图4所示: 当 usb keyboard 有数据输入,BIOS 将数据转化并通过 D2 command 将数据送给 EC, EC 通过 IRQ1通知 Host,Host 再下来读取 我所知道的 ...

BIOS开机检测法.txt

BIOS开机检测法 - BIOS开机检测法.txt懂得放手的人找到轻松,懂得遗忘

BIOS介绍.doc

BIOS介绍 - ◇◇树下 V460 分享④:V460 BIOS 介绍◇◇ 此帖对联想 IdeaPad的评论 这个不知道是第几个介绍 BIOS 的帖子了, 其实每一个品牌的每一个 型号机器...

简单输入两条命令查看BIOS中SLIC信息.doc

(如果不行,UAC 的线拉底一些。因为平常我用的管理员权限都比较大,对一般管理员 权限有多大,知之甚少) 输入: WMIC BIOS 最下边一行就可以看到 OEM 厂商的字样...

AMI系列BIOS从备份、寻找、查看到修改、刷新全教程_图文.doc

名 请帮我看看这个是不是主板 BIOS 芯片,是什么类型的 视频达人必备 SNB ...啊哈啊哈! TOP EEROM 只该作者 2 楼 椅子 发表于 2010-06-03 14:42:...

我所知道的EC_图文.pdf

我所知道的EC - 我所知道的 EC===> ower Sequence

AMI Bios 设置超详细图解.pdf

了解计算机的一 些技术,计算机的Bios设置对于很多初用电脑人的来说很是深奥,.

bios看序列号.doc

bios看序列号_信息与通信_工程科技_专业资料。电脑鉴别 DELL 电脑开机的

BIOS开机检测法.txt

BIOS开机检测法 - 电脑硬件故障的几种简单检查方法 一、首先确定你的电源已经

联想电脑怎么看BIOS设置.doc

联想电脑怎么看BIOS设置 1、开机时,不停的按 F2,就可以进入 BIOS

BIOS完全手册.doc

BIOS完全手册_IT/计算机_专业资料。BIOS完全手册,你能从里面学到所有的BIOS设置,并对自己的电脑进行设置。 BIOS 完全手册 BIOS 一向被普通朋友视之为...