2 安装主机驱动程序
2.1 安装步骤
为 Xillybus 或 XillyUSB 安装 Windows 驱动程序并无特殊之处。下面描述的过程是从磁盘上指定位置安装设备驱动程序的常 用方法。
当 Windows 在启动过程中首次检测到 PCIe 接口的 Xillybus IP 核时,很可能会出现一个类似下图所示的警告气泡:
此通知表示已发现新硬件,但未安装相应的驱动程序。这种情况是正常的,表明 Windows 检测到了它尚未识别的内容。当 XillyUSB 设备首次连接到计算机时,也会出现同样的结果。
针对这种情况,首先启动“设备管理器”(Device Manager)。最简单的方法是单击“Windows 开始”按钮,然后键入“设备管理 器”,如下图所示。之后单击顶部的菜单项。
打开的“设备管理器”大致如下图所示(重点部分已高亮):
此截图针对 PCIe 场景。对于 XillyUSB,新项目会出现在“通用串行总线控制器”(Universal Serial Bus controllers)组 中。
如果在“设备管理器”中没有出现新条目,可能的原因有以下几种:
-
FPGA 加载了错误的比特流,或者根本没有加载任何比特流。
-
如果 FPGA 板通过 PC 供电,则 PC 计算机开机时比特流会加载到 FPGA 中。在这种使用场景下,存在 BIOS 在启动时未检 测到 PCIe 接口的可能性,因为 FPGA 加载比特流速度过慢: 比特流必须在 BIOS 初始化计算机时就已经位于 FPGA 内 部。
执行 Windows 重新启动(不关闭计算机)是解决此问题的安全方法。但执行“操作”>“扫描检测硬件改动”也可能有效。
-
板卡配置不正确(跳线、DIP 开关等)、引脚分配错误、参考时钟频率错误等。
请注意,此类问题是由于 FPGA 上的 PCIe 块未被检测到。此类问题与 Xillybus 无关,Xillybus 使用 PCIe 块(由 AMD 或 Altera 提供)来与 PCIe 总线接口。
-
Xillybus / XillyUSB 驱动程序已安装。在此情况下,“设备管理器”应看起来像安装步骤末尾的示例那样。
右键单击“PCI 设备”项,选择“更新驱动程序软件...”。将打开以下窗口:
选择“浏览我的计算机以查找驱动程序软件”。这是下一个窗口:
使用“浏览...”按钮,导航到驱动程序存储的位置(解压缩后)。
下一步是确认安装:
单击“安装”。安装驱动程序的进程在 Windows 7 上需要 10-20 秒。较新版本的 Windows 通常所需时间更短。
以下窗口宣布安装成功:
“设备管理器”现在将显示新安装的设备:
此时,驱动程序已安装并自动加载到系统中。每当系统启动时,如果 PCIe 总线上存在 Xillybus IP 核,该驱动程序都会被加 载。XillyUSB 的驱动程序则在相关设备连接到主机时加载。
建议按下一节所述,设置事件查看器(Event Viewer)以显示 Xillybus 的日志消息。
以上截图针对 PCIe 场景的 Xillybus。然而,该过程对于 XillyUSB 是相同的,仅存在细微差异。特别是,“设备管理器”中的 新组称为“XillyUSB”,而非“Xillybus”。
2.2 设备文件
应用程序通过标准的文件 I/O API 与 Xillybus IP 核通信。但使用的不是常规文件,而是设备文件(device file)。
因此,Xillybus 驱动程序的目的就是在操作系统内创建这些设备文件,作为与 FPGA 通信的机制。在 Microsoft 的术语中, 这些设备文件被称为“Windows 对象”(Windows objects)。
直接从简单的计算机程序访问 Windows 对象似乎是一种不可靠的方法。然而,熟悉 Microsoft Windows 内部机制的人知道, 软件的硬件接口通常正是这样实现的。这些设备文件直接暴露给应用程序软件的情况并不常见。更常见的是,硬件制造商提供一个 DLL,允 许程序通过 API 访问硬件。而在幕后,该 DLL 使用设备文件来实现所需的功能。
由于 Xillybus 的接口非常简单,因此不需要这样的 DLL。因此,用户应用程序软件直接访问设备文件。但不幸的 是,Windows 没有提供简单的获取 Xillybus 设备文件列表的方法,因为访问 Windows 对象被认为是一种高级技术。因此,有必要下载一个实 用程序来从操作系统获取此信息。但如下文所述,也可以从其他来源获取设备文件列表。
WinObj 实用程序(可从 Microsoft 网站下载)允许在 Windows 对象树中导航。Xillybus / XillyUSB 设备文件可以在名为 GLOBAL?? 的“子目录”中找到为符号链接(symbolic link)。其他著名的 Windows 对象(例如 C: 和 COM1:)也位于同一位置。
还有一个名为 accesschk 的命令行工具,可从 Microsoft 网站下载。获取 Xillybus / XillyUSB 设备文件名称的命令是:
> accesschk -o \\GLOBAL\?\?
注意,此操作会列出许多其他全局设备文件。
尽管可以使用这两个工具获取设备文件列表,但并没有必要这么做: 设备文件的名称是已知的。
使用 PCIe 接口时,Xillybus 设备文件的前缀形式为 \\.\xillybus_。对于 XillyUSB,前缀为 \\.\xillyusb_nn_。
以下是 demo bundle 的 PCIe 变体生成的设备文件列表:
-
\\.\xillybus_read_8
-
\\.\xillybus_write_8
-
\\.\xillybus_read_32
-
\\.\xillybus_write_32
-
\\.\xillybus_mem_8
对于连接到主机的单个 XillyUSB 设备,其设备文件如下:
-
\\.\xillyusb_00_read_8
-
\\.\xillyusb_00_write_8
-
\\.\xillyusb_00_read_32
-
\\.\xillyusb_00_write_32
-
\\.\xillyusb_00_mem_8
对于在 IP Core Factory 生成的定制 IP 核: 设备文件列表可在所下载 zip 文件包含的 README 文件中找 到。
注意,在许多编程语言(例如 C/C++)中,文件名中的反斜杠前面需要转义字符。因此,设备文件的名称可能需要写成例如 \\\\.\\xillybus_read_8。
2.3 获取诊断信息
Xillybus / XillyUSB 的驱动程序将其诊断消息发送到操作系统的主事件日志。这些消息包括驱动程序初始化失败时的错误信息(例如 DMA 缓冲区内存不足),以及其他有助于解决问题的消息。
下面介绍如何在事件查看器(Event Viewer)中创建自定义视图,以显示与 Xillybus 或 XillyUSB 相关的消息。
首先,打开事件查看器。最简单的方法是单击“Windows 开始”按钮,然后键入“事件查看器”,如下图所示。单击顶部的菜单 项:
事件查看器将被打开。右键单击“自定义视图”,从菜单中选择“创建自定义视图...”。
将打开一个标题为“创建自定义视图”的窗口。该窗口用于定义筛选条件,以选择要显示的消息。选择“按源”。在下拉菜单中选 择 Xillybus。其他选项保持默认。
若要获取 XillyUSB 的消息,则在该菜单中选择 XillyUSB。
如果下拉菜单中没有 Xillybus / XillyUSB 条目,请检查驱动程序是否正确安装。
单击“确定”后,将打开另一个窗口,用于为自定义视图分配名称和描述。这属于个人偏好:
单击“确定”后,事件查看器将如下图所示:
上图中显示了一条消息,通知 Xillybus 已正常启动,并创建了 5 个设备文件。这正是在驱动程序成功安装后、FPGA 加载了 demo bundle 时所期望看到的结果。
这些消息不会在计算机重启后被删除。因此,该自定义视图显示的是自驱动程序安装以来的历史记录(除非有意删除历史记 录)。
来自 PCIe 驱动程序的完整消息列表及其说明可在以下网址找到:
https://xillybus.com/doc/list-of-kernel-messages
不过,通过 Google 搜索消息文本可能更容易找到特定消息。
还可以将消息导出到文件。在寻求支持时,发送包含驱动程序消息的文件是一个好主意,这些消息通常包含有价值的信 息。
要创建此类文件,请选择“操作”菜单项,然后选择“将所有事件保存为自定义视图...”:
将打开一个文件选择窗口。为了请求帮助,请选择 CSV 作为输出格式。
