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

看板ASM作者 (ggg)時間14年前 (2010/03/08 19:05), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/5 (看更多)
※ 引述《operationcow (香蕉公車)》之銘言: : 教科書上都寫 bios 是存放在 flash ROM 中 : 也說 BIOS 是電源開啟後就開始運作 : 我的問題如下: : 1. : 電腦一開機的時候 : 會由電路把 flash ROM 裡面的 bios 放進記憶體後才開始執行 : 還是 CPU 直接讀取 flash ROM 裡面的 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 而屏敝掉) 說個古老的故事: Shadow ROM 是 Intel 8080 MDS800 時代所用的技術, ROM 的 address space 跟 DRAM 佔開機 reset 後的前面(0000開始)同一位址, power on reset 之後, processor 對 memory 讀的是 ROM , 寫的卻是 RAM, 測試記憶體時先讀後寫, 做過整個 block 之後, 再經一個 I/O 指令設 定, 就把讀的記憶體, 從 ROM 切換為 DRAM , 就變成可以修改內容的 shadow ROM. 原始的 IBM PC 並沒有使用這個技術, 但台灣相容的 IBM PC 使用這個 Shadow ROM , 她有個好處就是可以開機後透過磁碟更換 BIOS ROM, 還 可以透過 INT 3 進行 debug , 以 single step 測試/追蹤 BIOS 程式. 但最主要是 PC 286/AT 之後, DRAM 變大跟開機的 8086 real mode 要 用的 1MB 最高位址的 ROM address space 重疊, 做成 shadow ROM 之 後, 執行 BIOS 程式比用 ROM 可以快很多, 可不必插進很多 wait cycle. 同時記憶體不會有段不能更改的位址連續空間. : 2. : 另外我不太能理解為什麼由 0xC0000 到 0xEFFFF 是 2 KB : 0xF0000 - 0xC0000 = 0x20000 = 3 * (2^4)^4 =\= 2048 byte @@ 進入 protection mode 之後, 置於 8086 mode 1MB space 最後面的 BIOS ROM(含介面卡上的 ROM)記憶體位址會被硬體移到最後的 16 MB 底部. : 3. : 最後一個問題是 : 現今的主機板都有提供 bios 可更新的服務 : 請問寫到存放 bios 的 flash ROM 的原理是使用 in, out 這種 port 的方 : 式還是使用 memory mapped IO?? : 感謝大家 <(_ _)> 開機的 ROM 本來就跟 DRAM 都佔用同樣的 memory address spce. 以前的 8bit EEPROM 常用兩顆併排, 透過 byte swap 電路可以同時讀取任何位置 連續 2 bytes. 燒入 EEPROM 是靠某支腳使用高電壓, 所以會用 I/O 指令 設定供應的電壓後及切換 shadow ROM 為 ROM 之後, 就透過 memory address read/write 進行清除與燒錄. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.4.12

04/09 13:56, , 1F
what a legacy...
04/09 13:56, 1F
文章代碼(AID): #1BbDdWGI (ASM)
討論串 (同標題文章)
文章代碼(AID): #1BbDdWGI (ASM)