阅读:2338回复:3
请教Option ROM size问题
请教各位大虾关于optionrom的问题:
我的单板要同时支持 Fibre channel 、SCSI、Eth和VGA ,各自对应的ROM大小是:128K、64K、64K、64K,而BIOS所能支持的最大OptionRom大小是128K左右(?)。 请问有没哪位高人可以解决这个问题? |
|
沙发#
发布于:2004-05-31 12:58
所谓Option ROM的大小限制,主要是由于BIOS为了向下跟8088保持兼容,只在1M以下的UMA内存区遍历ROM标识“55AA”,因此需要各OptionROM能够拷贝到该内存区进行初始化,这就对可拷贝的ROM数量和容量产生了一定的限制,但这个限制并不是ROM size的简单叠加,因为现代OptionROM的设计都会考虑遵从DDIM模型,在ROM初始化完成后通过裁减长度字段来丢弃不再需要的初始化代码,只保留必要的Runtime部分在ROM里,因此通过调整各OptionROM的安装顺序还是可以容纳尽量多的ROM模块在UMA里的。另外,好像一些BIOS厂家为了彻底解决这个问题,已经可以支持非UMA区的ROM初始化了,不知道是不是真的。
|
|
板凳#
发布于:2004-05-31 19:57
首先谢谢changjt。
如果只考虑Runtime部分,一般没有问题,应该可以放下。 但初始化代码也要在C0000~DFFFFH内运行就可能有麻烦了,我这里的FC ROM就有128K,C8000之前要放了VGA ROM,剩下的96K就不够用了。 供应商提供的这128K FCROM 应该是支持多平台的,对于X86的平台,应该只需要部分代码即可,不用将128K全部搬进内存。 但我不知道BIOS能否自动识别,只提取属于X86平台的代码。 |
|
地板#
发布于:2004-06-01 08:29
按照pci扩展rom的规范来说,BIOS是会从多平台ROM中选取符合的代码类型映象拷贝到UMA区进行初始化的,拷贝的代码仅限64KB以内。这一点Phoenix的bios做的比较好,你可以用二进制编辑器打开你的FC ROM,检查一下对应X86映象的代码长度是多少,一般不可能超过64K的。若是要用AMI的BIOS,你最好让FC ROM厂家把X86的映象放在第一个64KB的ROM区内,因为它会根据ISA ROM格式把第一个映象拷贝进UMA里。
另外,有些BIOS的E000段的一部分也是可以空出来存放OptionROM的 |
|