Re: [問題] 請問有關於開機 bios 的問題
※ 引述《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
04/09 13:56, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 5 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章