DriverWorks开发PCI驱动流程.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DriverWorks开发PCI驱动流程

DriverWorks开发PCI驱动流程 Dragon2008(yachong@163.net) 第一步 DriverWorks开发环境的建立 我们用NuMega DriverStudio开发WDM驱动程序,它的环境建立步骤如下: 安装VC6.0; 安装相应操作系统的DDK(如2000DDK、98DDK等); 安装NuMega DriverStudio; 运行NuMega DriverStudio下Tools下的Setup DDK and Start MSVC程序;或自己在VC IDE中手动设置BASEDIR和CPU等环境变量。 用VC6.0打开NuMega\Driver Studio\DriverWorks\Source\VdwLibs.dsw工程; 设置VC6.0的Compile\Config的配置为WDM Free或Checked; 编译VdwLibs.dsw库建立DriverWork的库文件,对Free 和Checked都要编译; 可以开始WDM驱动程序的开发了; 第二步 用DriverWorks生成驱动程序框架 ----以胜西S5933PCI卡为例 步骤1: 从程序组中选择或从VC6.0的主菜单DriverStudio中选择Driver Wizard菜单项,便会弹出DriverWorks NT/WDM驱动程序的基本框架生成向导,见下图: 图2—1步骤1 步骤2: 在Project下填入工程名,如SX5933。在Location选择工程文件存放的目录,再点Next进入下一个对话框。 选择WDM方式,再点Next进入硬件总线选择对话框。 图2—2步骤2 步骤3: 在Select Hardware Bus单选框中选择PCI,并在下面的栏目中填入PCI Vendor ID(如10EB),PCI Device ID(如8376)。这两项必须与你要访问的PCI设备的VID和DID一致。PCI Sub system ID和PCI Revision ID可以不填。如填,也须与设备的SVID和SDID一致辞。如不填,须手动删除INF文件中的有关项。否则向导生成的INF文件不能完成该设备驱动程序的正常安装。 图2—3步骤3 点击Next进入步骤4。 图2—4步骤4 步骤4: 在此处可以修改Driver类名和文件名,也可采用系统默认的。点击Next进入步骤5。 图2—5步骤5 步骤5: 此例去掉Read、Write、Cleanup的选择,只选择Device Control。当然用户可根据自己应用的需要来选择。点Next进入步骤6。 图2—6步骤6 步骤6: 选择I/O串行化方式,此例选择了None。点击Next进入步骤7。 图2—7步骤7 步骤7: 此对话框是用来在驱动程序开始时从寄存器加载参数用,此例未用,故可不做任何改动。点击Next进入步骤8。 步骤8:设备类的定义和资源、接口、缓冲、电源的处理 根据你的硬件定义资源。如I/O口,MEMORY,中断等。 SX5933 PCI卡的PCI区域0(BAR0)为S5933内部寄存器用,区域1(BAR1)为SXL-100实验箱的I/O空间,区域2(BAR2)为SXL-100的存储空间。 SX5933 PCI卡用到一个PCI中断。 以下三步是针对SX5933PCI卡上的两个I/O端口(BAR0和BAR1)和MEM空间(BAR2)而定义的三个资源。向导会在驱动程序中加入相应的变量并替你完成映射。 点击“Add IO Port(s)…”按钮,在Name和PCI Base Address编辑框中输入如图2-9所示变量名IO0和数值0。其它地方可不做改动,或根据实际需要做相应变动。 这样,变量m_IO0(只须输入IO0,向导会自动加上m_)就与BAR0对应。 图2-9 再点击“Add IO Port(s)…”按钮,在Name和PCI Base Address编辑框中输入如图2-10所示变量名IO1和数值1。其它地方法可不做改动,或根据实际需要做相应变动。 这样,变量m_IO1(只须输入IO1,向导会自动加上m_)就与BAR1对应。 图2-10 点击“Add Memory Range…”按钮,在Name和PCI Base Address编辑框中输入如图2-11所示变量名MEM0和数值2。其它地方法可不做改动,或根据实际需要做相应变动。 这样,变量m_MEM0(只须输入MEM0,向导会自动加上m_)就与BAR2对应。 图2-11 点击“Add IRQ…”按钮,为设备驱动加入一个中断处理对象以及其ISR和DPC例程。向导会自动添加它们的初始化、连接代码。 下面定义设备的接口。可定义两种对外接口,应用程序通过这两个接口

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档