作者R119 (= =)
看板ASM
标题Re: [问题] 请问有关於开机 bios 的问题
时间Sun Mar 7 11:44:11 2010
※ 引述《WolfLord (呆呆小狼)》之铭言:
: ※ 引述《R119 (= =)》之铭言:
: : 我看不懂 BIOS ROM 是 8bit/16bit 是什麽意思 @@?
: : 一般而言 当开机时 CPU 应是处於 Real Mode 的情况下
: FLASH 的IC,尤其是可以直接RUN的大多数是8Bit的
: : 在 Real Mode 时 CPU 是以16bit 为单位
: : 而 BIOS ROM 听过有三种 SPI LPC FWH
: : 目前我遇到现在主机板大部分都是用 SPI flash , LPC 跟 FWH 没用过
: : CPU 基本上读取 BIOS 都是透过 北桥 -> 南桥 -> SPI ROM
: 这是因为你把自动LOAD动作视为理所当然,事实上CPU要执行,资料就必须
: 排好放在记忆体内。x86家族的CPU有一个优良传统,在REAL MODE时会依循
: 8086/88的执行模式。因此外部周边可以使用8BIT的MEMORY作为BOOT。
: 在没有单晶系统(南北桥)的时代,机器就是这样启动的。事实上一直到
: 有了南北桥晶片之後,一些高速机板仍有采用8/16BIT的FLASH,原因就是
: 这样的MEMORY可以直接 RUN。在更低阶低成本的系统中,这样的结构反而
: 才是正规作法。
小弟孤陋寡闻 不清楚其他系统是怎样啦
就一般主机板而言啦
CPU 一开机初始的指令就是去抓 0xFFFFFFF0 这个位址的的指令
但是 0xFFFFFFF0 并不一定要真的在 记忆体空间(RAM)上
只要让 CPU "认为" 那个记忆体位址有资料就可以了
我之前就有提到 南桥会将 Flash ROM Mapping 到最高位址
Mapping 并不等於 Copy
有兴趣的话 可以试者去看你现在电脑的记忆体
不论你有没有 4G 的记忆体 在 0xFFFFFFF0 的地方
应该都有 0xEA 的值 也就是 jmp 的 opcode
也是BIOS 第一条被执行的指令
接者去看 0x000FFFF0 的地方
往前比对就会发现 两边的 Binary Code 几乎一模一样
就是 BIOS 将自身的 Code 从 flash copy 到 memoey 的结果
: : 主要是透过 memory mapping 的方式读取 我没遇过 CPU 直接联到 Flash ROM 的
: : 在主机板的实作上(Legacy) 主要分成两个部分 Boot Block 跟 POST
: : 在 Boot Block 阶段是不需要 RAM 的
: : 会先做最前面的 CPU/南北桥/Super IO/Clock Gen初始化
: : 在进入 POST 前 BIOS 才会将 BIOS copy 到 RAM 中去执行
: 我想您倒因为果了,就是CPU太快,汇流排复杂。所以整合时序控制後作
: 成北桥晶片,然後把低速IO的逻辑整合後作成南桥晶片。这样才方便简
: 单的挂上周边IC。然後为了节省成本,厂商想使用低脚数的记忆体,所
: 以才把spi/i2c的FLASH自动LOADER装进南桥(反正USER也不知道 RAM被
: 谁偷走了)。
这边我不确定你指的记忆体是指一般我们插的 RAM 还是指什麽
因为在 BIOS 的过程中 一开始是有一段程式是不插 RAM 也能执行的
只要把记忆体拔掉插上 80 port debug 卡 就可以看到 BIOS 会丢 POST Code 出来
如果要将 Flash ROM mapping 到最高 memory space 视做偷 RAM 的话
也不是不行啦 只要你的 memory 插到 4G 就可以
这也是在 32bit 的系统中 无法使用完整的 4G memory 原因之一
你可以看一下南桥Spec
里面会提到 flash ROM 可以对应到记忆体位址的范围
: : 另外写入的方式是透过南桥写入Flash ROM, 根据Flash ROM 的不同会有不同的指令
: : 所以并不是每个厂商的 flash ROM 都可以写入, 要看BIOS 有没有支援
: 这一段就不多说了,跟上一段是一样的....
: 所谓的南北桥是整合晶片,九世把一些原本哩哩袧袧的东西整合起来
: 方便制造与降低成本。但是电脑的原理并没有因此而改变。
电脑的原理是没有改变没有错
但是随者时代的进步 总是会有其他技术来帮助或提升电脑的性能
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.118.208