首页 理论教育 操作系统实现之路:PCI总线驱动程序

操作系统实现之路:PCI总线驱动程序

时间:2023-10-21 理论教育 版权反馈
【摘要】:在当前版本Hello China的实现中,实现了PCI总线和ISA总线两种常见个人计算机总线的驱动程序,也就是说,目前版本的Hello China内嵌支持PCI和ISA总线。按照目前的设计,系统总线驱动程序的结构没有纳入普通的设备驱动程序体系结构中,即总线驱动程序遵循单独的编写规范。比如,对于PCI总线驱动程序,该函数的原型如下。当前版本的实现中,PCI总线驱动程序完成下列工作。如果存在,对PCI总线进行枚举,包括枚举所有的PCI设备及下级总线。

操作系统实现之路:PCI总线驱动程序

在当前版本Hello China的实现中,实现了PCI总线和ISA总线两种常见个人计算机总线的驱动程序,也就是说,目前版本的Hello China内嵌支持PCI和ISA总线。所谓内嵌支持,指的是在操作系统核心中,已经集成了这类总线的驱动程序,不需要额外的总线驱动程序。因此,如果要进一步支持其他总线类型,比如USB(在当前的Hello China版本上),就需要专门编写一个USB总线驱动程序,与操作系统一起加载。在后续版本中,Hello China会进一步支持更广泛的总线类型,比如USB等。

按照目前的设计,系统总线驱动程序的结构没有纳入普通的设备驱动程序体系结构中,即总线驱动程序遵循单独的编写规范。为了便于实现,总线驱动程序只需输出一个函数XXXBusDriver即可。比如,对于PCI总线驱动程序,该函数的原型如下。

其中,DeviceManager对象是该函数的参数(DeviceManager是一个全局对象)。

这个函数在DeviceManager初始化的时候被调用,如果初始化成功,则返回TRUE,否则返回FALSE,如果返回FALSE,有可能导致操作系统引导失败。

当前版本的实现中,PCI总线驱动程序完成下列工作。(www.xing528.com)

(1)探测PCI总线是否存在,如果不存在,返回FALSE。

(2)如果存在,对PCI总线进行枚举,包括枚举所有的PCI设备及下级总线。

(3)如果定义了CONFIG_PCI,则对PCI设备进行配置(分配内存映射区域或IO端口范围),否则仅完成设备信息收集工作(这时候设备的配置依靠BIOS完成)。

下面对上述过程进行详细说明。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈