注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

路雷米的博客

人生最难的就是在热爱和生计之间做选择, 愿每个人这一生 既对得起梦想又担得责任

 
 
 

日志

 
 

PCI ---- Expansion ROM register  

2015-09-23 10:56:05|  分类: PCI-PCIE |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

扩展Rom基址寄存器

如果功能卡中需要嵌入扩展Rom(Oprom),该PCI寄存器必须实现。许多PCI功能都嵌入了设备ROM,它包含了该功能的设备驱动程序。扩展Rom的起始存储器地址及其大小均在扩展Rom基址寄存器中定义,而扩展Rom基址寄存器位于配置头区域的双字12中。如图1-1所示,系统一加电,就必须立即自动配置系统,以便每个功能的IO和存储器解码器能识别出相互排斥的地址范围。因此,配置软件必须能检测到一个扩展Rom需要多大的存储空间。除此之外,为了在不冲突的地址范围中确立其ROM的位置,系统必须能够编程控制Rom的地址解码器

PCI ---- Expansion ROM register - 路雷米 - 路雷米的博客

 

2015年09月23日 - 路雷米 - 路雷米的博客

 

图 1-1 扩展Rom基址寄存器

当启动配置程序检测到某功能已经实现了扩展Rom基址寄存器时(通常向它写全“1”并回读),必须立即检查ROM的前两个位置,核对其扩展Rom的签名,确定其是否真的安装了ROM(也就是说,ROM插座可能是空的)。如果安装了,配置程序必须映射(Shadow)Rom,并执行其初始化代码。

扩展Rom基址寄存器的格式如图1-1所示:

bit[0]为1,表示启用该功能的ROM地址解码器(假设命令寄存器中的存储空间比特也设定为1)。
bit[10:1]保留。
bit[31:11]用于指定ROM的起始地址(这个地址是根据ROM的大小来分割的)。

例如,假设程序员写0xFFFFFFFE到扩展Rom基址寄存器(即清除0比特-扩展ROM允许,防止在分配起始存储地之前启用ROM地址解码器),随后读取该寄存器,结果值若为0xFFFE0000,则说明了以下问题:

bit[0]的值为0,这说明ROM地址解码器当前已禁用。
bit[10:1]保留。

在基址寄存器字段(即bit[31:11])中,比特17是程序员可将其设为1的最低有效比特。该比特的二进制权值为128K,这说明ROM解码器需要将128K的存储空间分配给ROM。然后程序员写一个32比特的起始地址到该寄存器,将ROM起始地址指定到一个大小为128KB的地址边界上。

命令寄存器中的存储空间比特要优先于扩展ROM允许比特。仅当存储器空间比特(在它的命令寄存器中)和扩展ROM允许比特(在它的扩展ROM基址寄存器中)同时设定为1时,该功能的扩展ROM才应对存储器访问做出响应。

  评论这张
 
阅读(283)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018