编写设备驱动程序

S 总线

典型的 S 总线系统由主板(包含 CPU 和 S 总线接口逻辑)、主板本身上的大量 S 总线设备以及大量 S 总线扩展插槽组成。另外,还可以通过相应的总线网桥将 S 总线连接到其他类型的总线。

S 总线按地理位置进行寻址。每个 S 总线插槽位于系统中固定的物理地址上。S 总线卡具有不同的地址,具体取决于其插入的插槽。将 S 总线设备移动到新插槽会导致系统将此设备视为新设备。

S 总线使用轮询中断。S 总线设备中断时,系统仅知道若干设备中的哪些设备可能发出该中断。系统中断处理程序必须询问每台设备的驱动程序此设备是否负责中断。

S 总线物理地址空间

下表显示了 Sun UltraSPARC 2 计算机的物理地址空间布局。UltraSPARC 2 模型上的物理地址包含 41 位。该 41 位的物理地址空间会进一步分为多个通过 PA(40:33) 标识的 33 位地址空间。

表 A–1 Ultra 2 中的设备物理空间

PA(40:33) 

33 位空间 

使用情况 

0x0 

0x000000000 - 0x07FFFFFFF

2 GB 主内存 

0x80 – 0xDF 

Reserved on Ultra 2

在 Ultra 2 上保留 

0xE0 

Processor 0

处理器 0 

0xE1 

Processor 1

处理器 1 

0xE2 – 0xFD 

Reserved on Ultra 2

在 Ultra 2 上保留 

0xFE 

0x000000000 - 0x1FFFFFFFF

从属 UPA (FFB) 

0xFF 

0x000000000 - 0x0FFFFFFFF

系统 I/O 空间 

 

0x100000000 - 0x10FFFFFFF

S 总线插槽 0 

 

0x110000000 - 0x11FFFFFFF

S 总线插槽 1 

 

0x120000000 - 0x12FFFFFFF

S 总线插槽 2 

 

0x130000000 - 0x13FFFFFFF

S 总线插槽 3 

 

0x1D0000000 - 0x1DFFFFFFF

S 总线插槽 D 

 

0x1E0000000 - 0x1EFFFFFFF

S 总线插槽 E 

 

0x1F0000000 - 0x1FFFFFFFF

S 总线插槽 F 

物理 S 总线地址

S 总线具有 32 个地址位,如 SBus Specification(S 总线规范)中所述。下表介绍 Ultra 2 如何使用地址位。

表 A–2 Ultra 2 S 总线地址位

位 

说明 

0 - 27 

这些位是 S 总线卡用于寻址该卡的内容的 S 总线地址行。 

28 - 31 

供 CPU 用于选择其中一个 S 总线插槽。这些位会生成 SlaveSelect 行。 

此寻址方案将生成表 A–1 中显示的 Ultra 2 地址。其他实现可能会使用不同数量的地址位。

Ultra 2 具有七个 S 总线插槽,其中四个是物理插槽。插槽 0 到 3 可供 S 总线卡使用。插槽 4-12 为保留插槽。插槽的使用情况如下:

S 总线硬件配置文件

通常,S 总线设备不需要硬件配置文件。但是在某些情况下,S 总线设备的驱动程序需要使用硬件配置文件来增加 S 总线卡所提供的信息。有关更多详细信息,请参见 driver.conf(4)sbus(4) 手册页。