本章概述了WinDriver的一般信息、架構、支持的總線和操作系統,以及該工具包包含的內容。

ℹ️ 注意

本手冊概述了WinDriver對PCI/ISA/EISA/CompactPCI/PCI Express設備以及通用串行總線(USB)的支持。

1.1. 簡介

自1998年推向市場以來,WinDriver就一直提供一種開發解決方案,極大地簡化了創建高性能自定義設備驅動程序和硬件訪問應用程序的任務。WinDriver包含一個DriverWizard——一款圖形化診斷工具,它能自動檢測您的硬件,您可以藉助它為您的設備生成框架診斷代碼,併為您提供便捷的包裝函數,這些函數利用WinDriver的API與您的特定設備進行通信。此外,您可以查看WinDriver提供的各種示例,看看是否有某個示例可以作為您驅動程序應用的框架基礎。使用WinDriver開發的驅動程序和應用程序在所有受支持的操作系統上都具有源代碼兼容性。WinDriver允許您在熟悉的用户模式環境中創建驅動程序,可使用MS Visual Studio、CMake、GCC、Windows GCC或任何其他合適的編譯器或開發環境,以C、C#、Java和Python語言生成項目的驅動程序代碼。

WinDriver支持所有PCI/ISA/EISA/CompactPCI/PCI Express芯片組以及所有USB芯片組的開發,並在Windows、Linux和Mac OS系統上為特定芯片組(例如賽靈思)提供增強支持。

WinDriver使所有開發都能在用户模式下完成,它利用我們的低級內核驅動程序,從而免除了你對任何內核和/或特定操作系統驅動程序開發知識的需求,例如對Windows驅動程序工具包(WDK)的熟悉。

別被本手冊的篇幅所迷惑。WinDriver 讓設備驅動程序的開發變得輕而易舉,只需數小時而非數月就能完成,並且在開發過程中及開發完成後都能提供穩定性保障和技術支持。本手冊的一部分內容涉及 WinDriver 為高級用户提供的功能。不過,大多數開發人員會發現,閲讀這些章節並瀏覽“驅動向導”和函數參考章節,就足以成功編寫他們的驅動程序了。

第2章:瞭解設備驅動程序概述了設備驅動程序。

第3章:安裝WinDriver介紹了WinDriver的安裝和卸載步驟。

第4章:PCI Express概述第5章:USB概述——分別介紹了PCIe和USB的概述、架構及其他詳細信息。

第6章:使用DriverWizard提供了使用DriverWizard進行驅動程序開發的詳細指導。

第7章:開發驅動程序第8章:調試驅動程序涉及驅動程序的開發和調試。

第9章:對特定芯片組的增強支持重點介紹了對Altera mSGDMA、Avalon-MM設計;Xilinx BMD、XDMA、QDMA設計的特殊支持。

第10章:PCI高級功能介紹了特殊的PCI功能,如DMA傳輸、中斷處理等。

第11章:提升PCI性能討論瞭如何增強已編寫並調試好的驅動程序的性能。

第12章:瞭解內核插件第13章:創建內核插件驅動程序——內核插件章節,這是WinDriver的一項特殊功能,允許將驅動程序代碼的關鍵部分移至內核,以進一步提升其性能。

第14章:USB高級功能深入探討了USB數據傳輸相關事宜。

第15章:分發你的驅動程序第16章:動態加載你的驅動程序將指導你完成用WinDriver編寫的驅動程序的分發過程,以及創建可動態加載的驅動程序的方法,這能讓你的客户在安裝應用程序後立即啓動它,而無需重啓計算機。

第17章:驅動程序安裝——高級問題闡明瞭諸如INF文件創建、驅動程序數字簽名等重要問題。

數據結構和文件屬於WinDriver API的信息。

訪問 Jungo's網站,瞭解有關WinDriver以及Jungo提供的其他產品的最新消息。

1.2. 主要功能

WinDriver的功能包括:

  • 通過DriverWizard進行硬件診斷。
  • C、C#、Visual Basic.NET、PowerShell、Java和Python中驅動程序代碼的自動生成及詳細示例。
  • 增強了對特定芯片組的支持。
  • 二進制兼容應用程序。
  • 源代碼應用程序可在所有支持的操作系統上兼容。
  • 通用IDE支持。
  • 無需WDK、ETK、DDI或任何系統級編程知識即可創建驅動程序。
  • 內核模式性能。
  • 輸入/輸出、直接內存訪問、中斷處理以及對內存映射卡的訪問。
  • 支持多個CPU和PCI總線平台。
  • 支持任何USB設備,無論製造商是誰。
  • 支持64位PCI數據傳輸。
  • 動態驅動程序加載器。
  • 全面的文檔和幫助文件。
  • 符合微軟Windows認證計劃。
  • 技術支持。
  • 無運行時費用或特許權使用費。

1.3. 架構

PCI WinDriver架構

第一章 WINDOWS程序架構及開發_iteye_Server

USB WinDriver架構

第一章 WINDOWS程序架構及開發_iteye_驅動程序_02

對於硬件訪問,您的應用程序會調用一個WinDriver用户模式函數。該用户模式函數會調用WinDriver內核模塊,內核模塊通過操作系統的原生調用為您訪問硬件。

1.4. 支持的平台

WinDriver支持以下操作系統:

  • Windows 11、10、8/8.1、Windows 10 IoT、Server 2016、Server 2012 R2、Server 2012,此後統稱為“Windows”。
  • Linux內核2.6.x或更高版本,Linux ARM
  • MacOS10.10-12。

相同的源代碼將在所有受支持的平台上運行——只需為目標平台重新編譯即可。該源代碼在Windows 11/10/Server 2016/8.1/Server 2012 R2/8/Server 2012之間具有二進制兼容性。WinDriver可執行文件無需重新編譯即可在二進制兼容平台之間移植。

即使您的代碼僅適用於其中一個受支持的操作系統,使用WinDriver也能讓您在未來將驅動程序遷移到另一個操作系統時,無需修改代碼即可實現這一目標。

⚠ 注意

特定操作系統的支持僅針對獲得供應商官方支持的操作系統提供。要了解供應商支持哪些操作系統及其版本,請分別參考供應商的網站。

1.5. Linux ARM

適用於Linux ARM的WinDriver PCI/USB可自動執行並簡化PCIe/PCI-X/PCI-104/CompactPCI和USB的Linux ARM設備驅動程序開發。

WinDriver 是在以下平台和操作系統上構建並測試的。Jungo 可應要求為其他平台提供支持,請求請發送至 WinDr.nosp@m.iver.nosp@m.@jung.nosp@m.o.co.nosp@m.m。

  • ARM Cortex A7 – 博通:樹莓派2/3/4:運行帶有4.14.79-v7+版本內核的Raspbian Stretch系統。樹莓派4b:運行帶有4.19.75-v7l+版本內核的Raspbian系統。
  • ARM Cortex A9 – Solid Run:運行ARMbian的Ubuntu Xenial桌面系統的I.MX6 MicroSoM i2(Hummingboard2),內核版本4.11.6-cubox
  • ARM Cortex A9 – 邊界:運行Debian nitrogen內核版本4.9.88-6-boundary-14s的BL-SL-I.MX6(前身為Sabre LITE)
  • ARM Cortex A15 – 英偉達(NVidia):Jetson TK1運行Ubuntu 16.04,內核版本3.10.40-g8c4516e
  • ARM64 Cortex A53 – 博通:樹莓派3b+ – 運行64位Xubuntu 18.04,內核版本4.15.0-1010-raspi2或Ubuntu Server 18.04.2,內核版本4.15.0-1033-raspi2
  • ARM64 Cortex A57 – 英偉達:運行Ubuntu 18.04(內核版本4.9.38-rt25-tegra)的Drive PX2
  • ARM64 Cortex A57 – 英偉達:運行Ubuntu 16.04(內核版本4.4.38-tegra)的Jetson TX2
  • ARM64 v8.2 – 英偉達:運行Ubuntu 18.04內核版本4.9-tegra的Jetson NX Xavier / Jetson AGX Xavier

1.6. 操作系統支持概述

除非另有説明,本文檔中的所有版本信息均適用於PCI/ISA版WinDriver和USB版WinDriver。

從5.0.4版本開始支持USB 2.0。

從11.4.0版本開始支持USB 3.0。

從14.2.0版本開始支持USB 3.1。

操作系統

支持的WinDriver版本

Windows 10

物聯網核心版

Windows 10 IoT 核心版(x32/x64/ARM)

支持的版本範圍是12.7.0到14.7.0。

Windows Server 2022

Windows Server 2022 從15.1.0版本開始支持。

Windows Server 2019

Windows Server 2019 從 14.2.1 版本開始支持。

Windows Server 2016

Windows Server 2016 從 12.0.0 版本開始支持。

Windows 11

Windows 11 版本 26100(x64 和 ARM64)從 16.5.0 版本開始支持。

Windows 10

Windows 10 技術預覽版 10162 版本在 11.9.0 版本中受支持。

Windows 8.1

Windows 8.1 32位和64位支持的版本為11.4.0至16.0.0。

Windows Server 2012 R2

Windows Server 2012 32位和64位在11.4.0版本至16.0.0版本中受支持。

Windows 8

Windows 8 32位和64位支持的版本為11.0.0至14.3.0。

Windows Server 2012

Windows Server 2012 32位和64位在11.0.0版本至14.3.0版本中受支持。

Windows 7

Windows 7 Service Pack 1 支持的版本為 10.3.1 至 14.3.0。

Windows Server 2008 R2

Windows Server 2008 R2 Service Pack 1 支持的版本為 10.3.1 至 14.3.0。

Windows Vista

Windows Vista Service Pack 1 支持的版本為10.0.0至12.2.1。

Windows Server 2008

Windows Server 2008 x32和x64支持的版本為10.0.0至14.3.0。

Windows Server 2003

Windows Server 2003 x32 支持的版本為6.0.2至12.2.1。

Windows XP

Windows XP Service Pack 3的支持版本為10.0.0至12.2.1。

Windows CE

Windows CE 2.x–3.x 對PCI/ISA的支持版本為4.1.2至6.0.3。

MacOS(PCI)

MacOS 10.5 + 10.6在PCI方面支持的版本為10.2.0至10.4.0。

MacOS(PCIe + USB)

MacOS 11.0 和 MacOS 12.0(ARM64 M1 版本)從 14.8.0 版本開始受支持。

Linux

PCI/ISA從Linux 4.1.2版本開始支持。USB從Linux 6.0.0版本開始支持。

Solaris(PCI/ISA)

從4.1.4版本到9.0.1版本,Solaris支持PCI/ISA。

ℹ️ 注意

如果您有任何問題,或者想在上述未列出的特定操作系統上,或在某個特定版本仍受支持的操作系統上評估WinDriver,請發送電子郵件至WinDr.nosp@m.iver.nosp@m.@jung.nosp@m.o.co.nosp@m.m,我們的團隊將為您提供幫助。

1.7. 不同評估版本的限制

WinDriver的所有評估版本都具備完整功能。任何功能都沒有以任何方式受到限制或削弱。WinDriver的評估版本與註冊版本在以下方面有所不同:

每次激活WinDriver時,都會出現“未註冊”消息。
Windows評估版自安裝之日起30天后過期。使用DriverWizard時,每次與硬件交互都會彈出一個對話框,顯示評估版的剩餘使用時間。
在Linux和MacOS系統上,驅動程序將保持運行60分鐘,且每60分鐘結束後都需要重新啓動。
評估期間,可通過支持中心獲得免費的基本技術支持。

ℹ️ 注意

如果您有興趣購買WinDriver許可證,想了解其包含的內容和條件,或者有任何其他問題或反饋,請給我們發送電子郵件至sales.nosp@m.@jun.nosp@m.go.co.nosp@m.m,我們的團隊將迅速回復。請注意,向Jungo提供任何建議即表示您完全允許Jungo自由使用這些建議。

1.7.1. macOS上的限制

目前,適用於MacOS的WinDriver不支持以下功能:

  • 開箱即用的驅動程序重新分發/驅動程序重命名。
  • 內核插件。
  • 服務器API(進程間通信,共享內核緩衝區)。
  • 一些DMA緩衝區鎖定標誌(地址寬度規範、預分配、預留內存)。
  • Jungo也致力於在不久的將來支持所有這些功能。

1.8. WinDriver包含的內容

WinDriver工具包的主要文件包括:

  • windrvr.h:WinDriver基本API的聲明和定義。
  • wdu_lib.h:WinDriver USB(WDU)庫的聲明和定義,該庫提供便捷的USB API包裝器。
  • windrvr_int_thread.h:便於簡化中斷處理的便捷包裝函數聲明。
  • windrvr_events.h:用於處理即插即用和電源管理事件的API聲明。
  • utils.h:通用實用函數的聲明。
  • status_strings.h:用於將WinDriver狀態代碼轉換為描述性錯誤字符串的API聲明。
  • DriverWizard(WinDriver/wizard/wdwizard):一款圖形化應用程序,可診斷您的硬件並讓您輕鬆生成驅動程序代碼。
  • 調試監視器:一種調試工具,可在驅動程序運行時收集有關它的信息。該工具既可以作為全圖形化應用程序(WinDriver/util/wddebug_gui)使用,也可以作為控制枱模式應用程序(WinDriver/util/wddebug)使用。
  • WinDriver分發包(WinDriver/redist):您包含在向客户分發的驅動程序中的文件。
  • 本手冊:完整的WinDriver手冊(本文檔)有多種格式,可在WinDriver/docs目錄下找到。

WinDriver 還包含以下工具:

  • usb_diag.exe(WinDriver/util/usb_diag.exe):允許用户查看已連接USB設備的資源,並與設備進行通信以向設備傳輸數據或從設備接收數據、設置活動備用設置、重置管道等。在Windows系統上,該程序會識別所有已通過INF文件註冊為可與WinDriver配合使用的設備。在其他受支持的操作系統上,該程序會識別所有連接到目標平台的USB設備。
  • pci_dump.exe(WinDriver/util/pci_dump.exe):用於獲取已安裝PCI卡的PCI配置寄存器的轉儲信息。
  • pci_scan.exe(WinDriver/util/pci_scan.exe):用於獲取已安裝的PCI卡列表以及為每張卡分配的資源。

此外,還有各種代碼示例可供使用:

  • C語言示例:位於WinDriver/samples/c目錄下。
  • Python示例:位於WinDriver/samples/python目錄下。
  • Java示例:位於WinDriver/samples/java目錄下。
  • C#.NET示例:位於WinDriver/samples/csharp.net目錄下。
  • PowerShell示例:位於WinDriver/samples/powershell目錄下。
  • Visual Basic.NET示例(Windows):位於WinDriver/samples/vb.net目錄下。

除了上述通用示例外,WinDriver 還為主要的 PCI 芯片組提供了自定義包裝器 API 和示例代碼,如第 9 章:對特定芯片組的增強支持中所述。相關文件位於以下 WinDriver 安裝目錄中:

  • PLX 6466、9030、9050、9052、9054、9056、9080和9656——WinDriver/samples/c/plx
  • Altera mSGDMA 設計 — WinDriver/samples/c/altera/msgdma
  • Altera Avalon內存映射(Avalon-MM)設計 — WinDriver/samples/c/altera/avalonmm
  • 賽靈思總線主DMA(BMD)設計 — WinDriver/samples/c/xilinx/bmd_design
  • 賽靈思XDMA設計 — WinDriver/samples/c/xilinx/xdma
  • 賽靈思QDMA設計 — WinDriver/samples/c/xilinx/qdma
  • 對於賽靈思BMD、XDMA、QDMA以及阿爾特拉mSGDMA設計,還可以選擇生成利用相關增強支持API的定製驅動代碼。