扩展ROM(OPROM)
来源:互联网 发布:阿里云试用 编辑:程序博客网 时间:2024/04/30 08:19
扩展Rom基址寄存器
如果功能卡中需要嵌入扩展Rom(Oprom),该PCI寄存器必须实现。许多PCI功能都嵌入了设备ROM,它包含了该功能的设备驱动程序。扩展Rom的起始存储器地址及其大小均在扩展Rom基址寄存器中定义,而扩展Rom基址寄存器位于配置头区域的双字12中。如图1-1所示,系统一加电,就必须立即自动配置系统,以便每个功能的IO和存储器解码器能识别出相互排斥的地址范围。因此,配置软件必须能检测到一个扩展Rom需要多大的存储空间。除此之外,为了在不冲突的地址范围中确立其ROM的位置,系统必须能够编程控制Rom的地址解码器。
图 1-1 扩展Rom基址寄存器
当启动配置程序检测到某功能已经实现了扩展Rom基址寄存器时(通常向它写全“1”并回读),必须立即检查ROM的前两个位置,核对其扩展Rom的签名,确定其是否真的安装了ROM(也就是说,ROM插座可能是空的)。如果安装了,配置程序必须映射(Shadow)Rom,并执行其初始化代码。
扩展Rom基址寄存器的格式如图1-1所示:
l 比特0为1,表示启用该功能的ROM地址解码器(假设命令寄存器中的存储空间比特也设定为1)。
l 比特[10:1]保留。
l 比特[31:11]用于指定ROM的起始地址(这个地址是根据ROM的大小来分割的)。
例如,假设程序员写0xFFFFFFFE到扩展Rom基址寄存器(即清除0比特-扩展ROM允许,防止在分配起始存储地之前启用ROM地址解码器),随后读取该寄存器,结果值若为0xFFFE0000,则说明了以下问题:
l 比特0的值为0,这说明ROM地址解码器当前已禁用。
l 比特[10:1]保留。
l 在基址寄存器字段(即比特[31:11])中,比特17是程序员可将其设为1的最低有效比特。该比特的二进制权值为128K,这说明ROM解码器需要将128K的存储空间分配给ROM。然后程序员写一个32比特的起始地址到该寄存器,将ROM起始地址指定到一个大小为128KB的地址边界上。
命令寄存器中的存储空间比特要优先于扩展ROM允许比特。仅当存储器空间比特(在它的命令寄存器中)和扩展ROM允许比特(在它的扩展ROM基址寄存器中)同时设定为1时,该功能的扩展ROM才应对存储器访问做出响应。
- 扩展ROM(OPROM)
- PCI 扩展 ROM
- PCI 扩展 ROM
- PCI总线学习(七)---> PCI扩展rom
- PCI网卡上扩展ROM编程 5.PCI扩展ROM
- PCI网卡上扩展ROM编程 6.水到渠成:写一个扩展ROM程序
- 只读存储器(ROM)
- Rom
- ROM
- ROM
- 51单片机资源扩展:从片内ROM跳转到片外ROM
- PCI网卡上扩展ROM编程 1.前言
- PCI网卡上扩展ROM编程 2.PCI配置空间
- PCI网卡上扩展ROM编程 3.基址寄存器
- PCI网卡上扩展ROM编程 7.参考文献
- PCI网卡上扩展ROM编程 8.附件
- PCI网卡上扩展ROM编程 3.基址寄存器
- ROM (read only memory)
- C#设计模式-Builder生成器模式
- 基本上潜心工作了一天
- DataBinder.Eval 显示YYYY-MM-DD的日期型格式
- 15个顶级技术博客网址共享
- kerberos 1.13 by Рустем Фасихов
- 扩展ROM(OPROM)
- 【转】MultiByteToWideChar和WideCharToMultiByte用法详解
- Win32 API 常用函数之三——注册表操作(上)
- Sql Server实用操作-存储过程编写经验和优化措施
- I386的体系结构(上)
- 男孩亲女孩
- js 高级应用
- 李开复:算法的力量
- JavaScript[对象.属性]集锦