阅读:1305回复:5
pci&boot rom?(20分)
那位高人知道boot rom的启动原理.如何在上电后通过pci bus将boot rom中的数据加载到系统里?
|
|
沙发#
发布于:2003-04-30 12:10
系统启动时BIOS根据PCI卡的配置寄存器中的30H(扩展ROM基地址寄存器)的值确定分配给PCI卡多少ROM空间,然后检查ROM前2个字节值是否为55H和AAH,如果是55H和AAH的话系统就认为此ROM是BOOT ROM并将控制权交给ROM中的程序,否则继续检查其它配置。
[编辑 - 4/30/03 by czja] [编辑 - 4/30/03 by czja] |
|
板凳#
发布于:2003-04-30 13:26
如果有32k的boot rom,前8k放程序,我只映射8k,其余的有8k中的程序读到ram中,这样可以吗?还有一个问题,如何通过io口读取boot rom中的数据.根据协议好像应该通过mem映射读取.不知道boot rom的数据是如何读取的,还望指教.谢谢!
|
|
地板#
发布于:2003-04-30 18:54
1.当然可以。
2.系统是通过mem映射读取boot rom数据的。用户也可以通过io口读取boot rom中的数据,不过不同的芯片寄存器偏移地址是不同的,一般用户可以通过以下三个寄存器读取boot rom中的数据, bootrom地址寄存器、bootrom数据寄存器和bootrom控制寄存器。 |
|
地下室#
发布于:2003-05-05 10:22
谢谢大侠指点,但是我还有一点不明白,32k的rom,我只映射8k,使系统认为只有8k的rom,其余的24k,我想通过8k中的程序从io读取,我的问题是:系统在分配了一个8k地址后,那24k的地址如何确定。系统是否会认为只有8k而将对其余24k的操作当成非法操作。或者可以这样认为,我有一个32k或更大的rom,我只映射前8k,剩余部分由前8k中的程序从io口读出(我分配一个128byte的io空间),不知系统如何处理,谢谢!
|
|
5楼#
发布于:2003-05-05 12:44
对其余24kROM的读写跟系统没有关系,它只与PCI芯片的三个寄存器(bootrom地址寄存器、bootrom数据寄存器和bootrom控制寄存器)有关。24k的地址是由bootrom地址寄存器确定的。
|
|