stroll
驱动小牛
驱动小牛
  • 注册日期2001-10-26
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分161分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
阅读:1238回复:5

pci&boot rom?(20分)

楼主#
更多 发布于:2003-04-28 09:35
那位高人知道boot rom的启动原理.如何在上电后通过pci bus将boot rom中的数据加载到系统里?
czja
驱动牛犊
驱动牛犊
  • 注册日期2002-05-09
  • 最后登录2005-05-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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]
stroll
驱动小牛
驱动小牛
  • 注册日期2001-10-26
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分161分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-04-30 13:26
如果有32k的boot rom,前8k放程序,我只映射8k,其余的有8k中的程序读到ram中,这样可以吗?还有一个问题,如何通过io口读取boot rom中的数据.根据协议好像应该通过mem映射读取.不知道boot rom的数据是如何读取的,还望指教.谢谢!
czja
驱动牛犊
驱动牛犊
  • 注册日期2002-05-09
  • 最后登录2005-05-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-04-30 18:54
1.当然可以。
2.系统是通过mem映射读取boot rom数据的。用户也可以通过io口读取boot rom中的数据,不过不同的芯片寄存器偏移地址是不同的,一般用户可以通过以下三个寄存器读取boot rom中的数据,
bootrom地址寄存器、bootrom数据寄存器和bootrom控制寄存器。
stroll
驱动小牛
驱动小牛
  • 注册日期2001-10-26
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分161分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-05 10:22
谢谢大侠指点,但是我还有一点不明白,32k的rom,我只映射8k,使系统认为只有8k的rom,其余的24k,我想通过8k中的程序从io读取,我的问题是:系统在分配了一个8k地址后,那24k的地址如何确定。系统是否会认为只有8k而将对其余24k的操作当成非法操作。或者可以这样认为,我有一个32k或更大的rom,我只映射前8k,剩余部分由前8k中的程序从io口读出(我分配一个128byte的io空间),不知系统如何处理,谢谢!
czja
驱动牛犊
驱动牛犊
  • 注册日期2002-05-09
  • 最后登录2005-05-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-05 12:44
对其余24kROM的读写跟系统没有关系,它只与PCI芯片的三个寄存器(bootrom地址寄存器、bootrom数据寄存器和bootrom控制寄存器)有关。24k的地址是由bootrom地址寄存器确定的。
游客

返回顶部