zoukankan      html  css  js  c++  java
  • 如何使用PLX提供的官方驱动和SDK发布自己的产品?

    在我的第一篇博文Plx9030通讯卡驱动开发提到,PLX官网提供了丰富的9000系列(9030,9052,9054)芯片的驱动文件(sys)和SDK开发包。我们在发布自己的产品时,简单的话,可以直接用官方sys文件,用SDK做二次接口封装。然而,在利用官方sys文件时,需要注意几个事情,这是PLX公司建议的。

    设置硬件ID

    为了避免设备冲突,发布自己产品建议设置硬件ID. 硬件ID用来区别与其他系统内的设备,告知软件哪一个是与之匹配的。根据PCI2.0规范,PCI配置空间(256B)的前64个字节含义是标准的,包含verdor id、device id、subsys id、reversion id等。系统上电后,进入POST(power on self test)程序,系统要检测所有的硬件资源,这时由PCI总线驱动(bus driver)询问PCI设备其硬件ID,PnP管理在设备树种建立该PCI设备的设备节点,并且初始化物理设备对象PDO。

     9030默认verdor ID=0x10B5,device id=0x9030.发布自己的产品时,需要恰当的设置device ID。可以在网址查询vender ID 及 device id的使用情况,如果不考虑商业纠纷,就设置一个别人没用过的吧,嘿嘿。

    修改inf文件

    需要修改inf文件,那打开inf文件,怎么修改呢?在我心中曾经这是一个神秘的文件,一直看不太明白。参看前一篇博文,我豁然开朗。inf文件主要干了三件事:(1)指示该inf文件为哪些设备可用;(2)复制设备驱动安装相关的文件到制定的目录下;(3)增加注册表响应项。先看看inf文件吧,解开她的神秘面纱。

    [Version]节通常放在inf开始位置。

    Signature指示哪些OS平台可以解析该文件,$Chicago$说明所有的windows系统,$windows NT$说明2000及其以后OS。

    Provider说明inf的作者,一般写公司的名字。

    Class、ClassGUID说明设备所属类型及GUID号,查看DevGUID.h看。

    DriverVer说明驱动程序的版本号及其日期。

    [String]节类似于C语言的Macro定义,定义了一些字符串,在inf的其他位置替换。

    [SourceDisksNames]定义安装位置。

    [SourceDisksFiles]说明所有在设备安装阶段拷贝到系统中的文件列表。

    [DestinationsDirs]说明了文件拷贝到系统目录的位置。

    [Manufacturer]是树形结构,描述了该inf为哪些设备可用。

    执行顺序是这样的:查找[Manufacturer]节支持设备列表——>DDinstall节——>.service节——>.HW节。具体细节还是看前一篇博文

    ;===========================================================
    ;
    ; File    : PlxSdk.inf
    ;
    ; Abstract: Windows INF for boards with PLX chips
    ;
    ;===========================================================
    
    [Version]
    Signature                = $Windows NT$
    Provider                 = %Ray-Vision%
    Class                    = Unknown
    ClassGuid                = {4d36e97e-e325-11ce-bfc1-08002be10318}
    DriverVer                = 03/27/2014, 1.0
    DriverPackageType        = PlugAndPlay
    DriverPackageDisplayName = %PackageName%
    CatalogFile              = PlxSdk.cat
    
    
    
    [Manufacturer]
    %Ray-Vision% = RV.Mfg, NTamd64
    
    
    ;-----------------------------------------------------------
    ; Device identification for 32-bit Windows
    ;-----------------------------------------------------------
    [RV.Mfg]
    "PCI-CAN card 1.0"      = DDInstall_9030, PCIVEN_10b5&DEV_9030&SUBSYS_903010B5
    
    
    ;-----------------------------------------------------------
    ; Device identification for 64-bit Windows x64
    ;-----------------------------------------------------------
    [RV.Mfg.NTamd64]
    "PCI-CAN card 1.0"      = DDInstall_9030, PCIVEN_10b5&DEV_9030&SUBSYS_903010B5
    
    
    ;-----------------------------------------------------------
    ; CopyFiles section
    ;
    ; Flags: 0x00000004 = COPYFLG_NOVERSIONCHECK
    ;-----------------------------------------------------------
    
    [CopyFiles_9030]
    Ray-Vision9030.sys,,,0x00000004
    Ray-Vision_PlxApi710.dll,,,0x00000004
    
    ;-----------------------------------------------------------
    ; Driver installation section
    ;-----------------------------------------------------------
    [DDInstall_9030.NT]
    AddReg    = AddRegistry_9030
    CopyFiles = CopyFiles_9030
    
    
    ;-----------------------------------------------------------
    ; Device-specific options & registry entries
    ;
    ; Security settings are added here to override any class security settings
    ; imposed on some systems. Refer to "SDDL strings" on MSDN for details.
    ;
    ; PLX is setting the default access as follows:
    ;    GA     -> SY      GENERIC_ALL to OS itself
    ;    GA     -> BA      GENERIC_ALL to Administrators
    ;    GRGWGX -> BU      READ/WRITE/EXEC to Built-in User Group
    ;    GRGWGX -> BG      READ/WRITE/EXEC to Built-in Guest Group
    ;-----------------------------------------------------------
    
    [DDInstall_9030.NT.HW]
    AddReg = AddRegSecurity
    
    
    [AddRegSecurity]
    HKR,,Security,,%PLX_ACCESS_SDDL%
    
    
    ;-----------------------------------------------------------
    ; AddService section
    ;-----------------------------------------------------------
    [DDInstall_9030.NT.Services]
    AddService = Plx9030, 0x00000002, Service_Inst_9030
    
    
    ;-----------------------------------------------------------
    ; AddRegistry section
    ;-----------------------------------------------------------
    
    [AddRegistry_9030]
    
    
    ;-----------------------------------------------------------
    ; Service installation section
    ;-----------------------------------------------------------
    [Service_Inst_9030]
    ServiceType    = 1                  ; SERVICE_KERNEL_DRIVER
    StartType      = 3                  ; SERVICE_DEMAND_START
    ErrorControl   = 0                  ; SERVICE_ERROR_IGNORE
    ServiceBinary  = %12%Ray-Vision9030.sys
    
    
    
    ;-----------------------------------------------------------
    ; Source file information
    ;-----------------------------------------------------------
    
    [SourceDisksNames]
    1 = %InstallDisk%
    
    [SourceDisksFiles.x86]
    Ray-Vision9030.sys = 1,Driveri386
    Ray-Vision_PlxApi710.dll = 1,dll
    
    [SourceDisksFiles.amd64]
    Ray-Vision9030.sys = 1,Driveramd64
    Ray-Vision_PlxApi710.dll = 1,dll
    
    [DestinationDirs]
    CopyFiles_ApiDll = 11          ; %WinDir%System32
    DefaultDestDir   = 12          ;12    = Drivers Directory
    
    [CopyFiles_ApiDll]
    Ray-Vision_PlxApi710.dll
    
    ;-----------------------------------------------------------
    ; String information
    ;-----------------------------------------------------------
    
    [Strings]
    InstallDisk     = "Ray-Vision Installation Disk"
    Ray-Vision      = "Ray-Vision Electronics Technology Co.,Ltd"
    PLX_ACCESS_SDDL = "D:P(A;;GA;;;SY)(A;;GRGWGX;;;BA)(A;;GRGWGX;;;BU)(A;;GA;;;BG)"
    PackageName     = "PCI-CAN card Driver Installation"

    inf必须修改的地方是,(1)manufacturer节,修改设备ID,这样在设备安装阶段,设备安装管理器扫描inf时才知道该inf文件是为你的硬件设备服务;(2)在inf文件中,制定了设备驱动sys的文件名字,目录路径,所以如果修改了sys文件名字,需要修改相关的地方。除此之外,你还可以增加一些设备驱动安装时需要拷贝的文件,如dll。

     3.为了避免安装设备驱动文件时,与其他的类似设备文件(sys,dll)名字冲突,建议修改名字。例子中,我将sys文件修改为Ray-Vision9030.sys,dll文件修改为Ray-Vision_PlxApi710.dll。

  • 相关阅读:
    五一集训——图论
    Luogu P3942 将军令
    8.14 Round 1
    8.10 Round 1
    8.9 Round 1
    8.7 Round 2
    8.7 Round 1
    8.6 Round 1
    8.5 Round 2
    FHQ-Treap
  • 原文地址:https://www.cnblogs.com/yuqiao-ray-vision/p/3630049.html
Copyright © 2011-2022 走看看