Re: [問題] 請問有關於開機 bios 的問題

看板ASM (組合語言)作者 (= =)時間15年前 (2010/03/07 06:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/5 (看更多)
※ 引述《WolfLord (呆呆小狼)》之銘言: : ※ 引述《operationcow (香蕉公車)》之銘言: : : 教科書上都寫 bios 是存放在 flash RAM 中 : 如果這本書真的寫"flash RAM" 請把他丟近垃圾焚化爐 : 如果是老師指定的書,請退選該科。然後到教評會檢舉 : 老師偽專業。 : : 也說 BIOS 是電源開啟後就開始運作 : : 我的問題如下: : : 1. : : 電腦一開機的時候 : : 會由電路把 flash RAM 裡面的 bios 放進記憶體後才開始執行 : : 還是 CPU 直接讀取 flash RAM 裡面的 bios 來執行?? : : 因為在看 efi 的 spec 看到如下這段 : : Current option ROM technology requires images to be shadowed : : in system memory address range 0xC0000 to 0xEFFFF on a 2048 : : byte boundary. This dependency not only limits the number of : : Option ROMs, it results in unused memory fragments up to 2 KB. : : 因為他提到的是 shadow system memory(表示 bios 有被載入到主記憶體 : : )而不是 shadow system memory address space(可能是因為 memory : : mapped IO 而屏敝掉) : 一般BIOS ROM(FLASH)都是8BIT的居多,而且,就算裝備16BIT的ROM一樣不 : 符現在CPU大多32,64BIT的現狀。當開機時,大部分的主機板都是用8BIT 的 : 模式再ROM上執行BIOS。然後依照設定與偵測, 發現你沒有禁止把BIOS搬到 : RAM的話,他就會很塊樂的把BIOS COPY一份倒RAM去跑(64/32BIT存取模式) : 這樣機器會跑比較快(快上4-8倍)。另外有一種主機板使用的是I2C的FLASH : ROM晶片,這種晶片是用序列的方式存取的,無法讓CPU直接再上面跑。這種 : 就不管你允不允許,一定會把BIOS抄到RAM上去跑。另外,EFI BOOT的話,他 : 會需要從各種媒體取得外掛(EXTEND)所以也一定會很高興的把RAM吃掉。 我看不懂 BIOS ROM 是 8bit/16bit 是什麼意思 @@? 一般而言 當開機時 CPU 應是處於 Real Mode 的情況下 在 Real Mode 時 CPU 是以16bit 為單位 而 BIOS ROM 聽過有三種 SPI LPC FWH 目前我遇到現在主機板大部分都是用 SPI flash , LPC 跟 FWH 沒用過 CPU 基本上讀取 BIOS 都是透過 北橋 -> 南橋 -> SPI ROM 主要是透過 memory mapping 的方式讀取 我沒遇過 CPU 直接聯到 Flash ROM 的 在主機板的實作上(Legacy) 主要分成兩個部分 Boot Block 跟 POST 在 Boot Block 階段是不需要 RAM 的 會先做最前面的 CPU/南北橋/Super IO/Clock Gen初始化 在進入 POST 前 BIOS 才會將 BIOS copy 到 RAM 中去執行 而在 EFI 中 一開始對 cpu 南北橋先做基本的初始化後(盡可能的不做不必要的初始) 會先作 Cache as RAM 的動作, 儘早讓 EFI 的 C Code 可以使用 再將 Code 複製到 Memory 去執行 : : 2. : : 另外我不太能理解為什麼由 0xC0000 到 0xEFFFF 是 2 KB : : 0xF0000 - 0xC0000 = 0x20000 = 3 * (2^4)^4 =\= 2048 byte @@ : 他的意思是把這192K用每一一區塊2K的方式分割來貯放延伸的BIOS外掛,這 : 個構造牽涉到早期PC的ON CARD ROM的規劃。早期的PC介面卡大多不用驅動程 : 式就能用了。因為卡上有一顆區動的ROM,這個ROM的啟動區塊就是每2K一個 : 單位,BIOS會從C0000掃描到EFFFF。然後發現有ROM就把他併到BIOS中當作 : 自己的一部分。現在很多卡片都喜歡裝熟(BIOS STAGE偽裝成BIOS已認識的 : 卡)然後開機後再靠OS掛驅動程式,所以很多教書匠並不瞭解這一段歷史背 : 景與負擔。 在這一階段 BIOS 所有的Code都是在 Memory 執行 BIOS 會先去 scan PCI Device 將 pci device 上的 ROM copy 到 C000:0 以後的位址 而複製的位址就是以 2KB 為單位 複製完畢後 會執行該 ROM 讓 device 自行初始化 至於裝熟我想你應該是說 bios 會根據device 的type 作處理 ex: ISA PnP 之類的吧 @@? : : 3. : : 最後一個問題是 : : 現今的主機板都有提供 bios 可更新的服務 : : 請問寫到存放 bios 的 flash RAM 的原理是使用 in, out 這種 port 的方 : : 式還是使用 memory mapped IO?? : : 感謝大家 <(_ _)> : INP OUTP : 因為是在板子上做了簡易燒錄器,並不是把FLASH當RAM用(會壞掉) 通常在開機後 BIOS 會將開機過程中偵測到的資訊寫回 Flash ROM 這裡的資訊指的就是 SMBIOS 資料 而儲存的位址是由 BIOS 所定義的(NVRAM) 並不是只有更新 BIOS 才會有資料寫入 Flash ROM 想驗證的話 刷新的BIOS後 重開機再用工具讀出 Flash ROM 比較兩者的 Binary File 就看的出來了 一般而言如果是 Legacy BIOS 的話 是透過 Software SMI 進行 以避免使用者觸發其他中斷 導致 BIOS 燒錄失敗 另外寫入的方式是透過南橋寫入Flash ROM, 根據Flash ROM 的不同會有不同的指令 所以並不是每個廠商的 flash ROM 都可以寫入, 要看BIOS 有沒有支援 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.118.208
文章代碼(AID): #1Baj7tD7 (ASM)
文章代碼(AID): #1Baj7tD7 (ASM)