1. 介绍

这个世界上有很多的程序员,但是他们中极少数人知道如何编写驱动。驱动是任何操作系统所需要的,用以和硬件进行通信。有经验的驱动程序员的缺失是一个很严重的问题,同时也是整理这份文档的一个原因。

本文档为这一主题提供支持,也是为那些有意于了解驱动的基本构成信息以及如何编写驱动的人所写。在这里将会讲述编写显卡驱动的基本方法,以及指导方向,我们将会使用 Be 操作系统作为开发环境。

由于多数的程序员不具备硬件相关知识,这里也会对硬件做一些讲解。理论与示例相结合,来深入讨论这些非常重要的课题。附录B 是本文档中常用术语的汇总,其中将会尽可能最好的讲解基本的硬件术语。

本文讲述驱动的各个部分,以及它们如何融入 BeOS。应用程序接口(API)和驱动接口的层次和关系也将进行讲解。为此, 驱动各个部分的 API “回调” 也将会解释。最后驱动接口的 “标记” 层也将进行详细的讲解,同时它对API的操作也有很重要的影响。

我们将尽可能的从驱动开发者的角度出发,所以我们将提供有关驱动回调的更多详细情况,而不会过多关注 API 的接口。有关 BeOS API 的详细信息可以参考 The BeBook。本文档包含重要的增补信息,因为对于显卡驱动, BeBook内容并不完整。有一些内容在 BeBook 中没有涉及,而其他内容则需要更多的讲解。.. admonition:

现代显卡或多或少都依赖于 VGA 标准,并且仍然内置 VGA 模式。由于 VGA 标准仍然有效, 本文对于老旧的 VGA 标准显卡的驱动编写来说极有参考价值。一个很好的参考是 ”Programmer’s Guide to the EGA and VGA Card“ (任何版本)。有关 PCI 和 AGP 总线的技术信息,以及 2D 加速显卡的示例可以参考其中的 “The Indispensable PC Hardware Book” 。

1.1. 问题描述

1.2. 文章宗旨

我所收集的资料非常专业,不为很多人(BeOS社区中的)所了解。因此本文的宗旨如下:

在 BeOS 社区中传播编写显卡驱动相关知识,促进可行的相关工作计划。

知识传递。

本文将在互联网上公开。

1.3. 关于作者

从中学至今,我都是一个真正的 “科技迷”。在我还是10岁时候,我在阁楼上找到了一个坏掉的晶体管收音机,然后一发不可收,我被电子技术深深吸引。

在我完成 MTS 和 HTS 电子相关学习后,我发现我的兴趣转移到了 “信息技术”,这是一个很好的事情,因为作为电子设计师,你可能更多的完成和微控制器与PC相关的工作,而在以前,我经常处理硬件逻辑设备。最后在我更多的参与电子工程和软件工程领域工作后,我希望了解更多有关电脑,以及 “信息” 技术来提高我的知识水平。

现在,我对 PC 的其他方面更感兴趣。这也意味着我希望处理有关 USB 或者 PCI 卡相关工作。但是它有以下两个问题:

  • 设备供应商的阻碍,基本不提供所生产的产品的信息。即使最基本的信息也很难找到。
  • 编写驱动是一个介于电子和 “信息技术” 的交叉领域,需要具备两个方面的知识。

由于交叉领域对我来说是一个挑战,我选择在 Hanzehogeschool Groningen 的软件工程(HIO) 进行学习,来提高我在软件方面的知识技能。

1.4. 关于 BeOS

1.5. 关于视频卡驱动