跳到内容

Aros/开发者/文档/HIDD/PCI

来自 Wikibooks,开放书籍,开放世界
导航栏,适用于 Aros wikibook
Aros 用户
Aros 用户文档
Aros 用户常见问题解答
Aros 用户应用程序
Aros 用户 DOS Shell
Aros/用户/AmigaLegacy
Aros 开发文档
Aros 开发者文档
从 AmigaOS/SDL 移植软件
适用于 Zune 初学者
Zune .MUI 类
适用于 SDL 初学者
Aros 开发者构建系统
特定平台
Aros x86 完整系统 HCL
Aros x86 音频/视频支持
Aros x86 网络支持
Aros Intel AMD x86 安装
Aros 存储支持 IDE SATA 等
Aros Poseidon USB 支持
x86-64 支持
Motorola 68k Amiga 支持
Linux 和 FreeBSD 支持
Windows Mingw 和 MacOSX 支持
Android 支持
Arm Raspberry Pi 支持
PPC Power Architecture
杂项
Aros 公共许可证

我们处理 PCI 的官方 API 是通过一组 HIDD 类。Prometheus.library 只是这些 HIDD 之上的一个包装器。prometheus.library 不是一个更高级别的 API,它只提供 PCI 类可以提供的子集。PCI 类唯一缺少的是 AddIntServer() 和 RemIntServer() 方法。

您可以向 PCI 子系统询问可用设备,然后对每个设备使用 PCIDevice 对象的方法。PCIDevice 对象本身可能在内部绑定到系统中任何当前活动的 PCIDriver。是的,系统中可以同时使用多个 PCIDriver。

因此它对于外部代码来说是一个不透明的驱动程序组件。

另一方面,PCI HIDD 只有一个对外部代码有用的方法:EnumDevices。它按用途划分。代码应该使用 PCIDevice 对象。

向 PCI 子系统询问可用设备,然后对每个设备使用 PCIDevice 对象的方法。PCIDevice 对象本身可能在内部绑定到系统中任何当前活动的 PCIDriver。是的,系统中可以同时使用多个 PCIDriver。

内存相关的操作是否必须通过 PCIDriver 对象完成,例如 AllocPCIMem 方法?将这些方法添加到 PCIDevice 类中没有问题。由于 PCIDevice 对象确切地知道哪个驱动程序处理它,因此它可以轻松地将方法委托给相应的驱动程序。

阅读 Aros-Exec 线程

对我来说,prometheus.library 对于 PCI HIDD 的意义就像 (cyber)graphics.library 对于图形 HIDD 的意义一样。例如,据我所知,我们不鼓励应用程序直接调用图形 HIDD。

PCI.hidd 代表一个子系统,就像 graphics.library 代表一个系统一样。graphics.hidd 是 graphics.library 子系统中的一个驱动程序组件,就像 PCI-DRIVER.hidd 是 PCI.hidd 中的一个驱动程序组件一样。但是,在访问 PCI 子系统时必须使用 PCI-DRIVER HIDD,因此它对于外部代码来说不是一个不透明的驱动程序组件。另一方面,PCI HIDD 只有一个对外部代码有用的方法:EnumDevices。因此,在您的比较中没有看到真正的对称性。

在 AROS 的 PCI 子系统之前,研究过其他解决方案,但没有一个令人满意。特别是 openpci 使用复制粘贴的 linux 头文件。更不用说,在那些日子里,openpci 几乎没有被使用。

  • AmigaOS 3.x 使用 prometheus、openpci 等
  • Amithlon 使用不同的库来访问 pci 设备,与 openpci 非常相似,但仍然不同
  • MorphOS 使用 pcix.library 并为其提供 openpci 包装器
  • AmigaOS 4.x 使用扩展库的 PCI 接口
  • AROS 使用基于 oop 的 PCI 类

与列表中的其他平台相比,AROS 不是唯一一个“不同”于其他平台的平台。实际上,*没有*真正适用于所有 Amiga 平台的用于访问 PCI 设备的跨平台解决方案。许多 AmigaOS 驱动程序使用 prometheus,其中很少一部分使用 openpci。OS4 组件使用 expansion.library 的 PCI 接口,MOS 驱动程序使用 pcix.library(其中一些不是由 MOS 团队提供的驱动程序可能会使用 openpci)。

参考文献

[编辑 | 编辑源代码]
华夏公益教科书