USB2.0学习笔记连载(十四):USB驱动安装及固件程序的编写

  在之前的博客中已经讲过,驱动程序最核心的两个文件,一个是xxx.sys文件,一个是xxx.inf文件,主机是寻找xxx.inf文件。

  在下面的文件中有相关关于USB驱动的说明。对于用户来说,xxx.sys文件 可以不用修改,用户可以对xxx.inf文件的内容进行相应的修改即可。

image

  下图是《cy_usb》应用手册的名字,可以找到下图手册,查看关于USB驱动相关的内容

image

  下图是当前驱动支持的系统。

image

  下图是支持的VID&PID对,且注意,如果用户修改cyUSB3.inf文件,并加入自己的VID&PID,这样会导致使得设备变成未签名。windows系统不建议使用未签名的驱动。这一点需要格外注意。

image

  当前版本支持特性,兼容2.0,3.0等驱动。

image

下图是手册中的一段描述,主要是针对用户修改cyUSB3.inf,可以加入设备识别号,替换相应的驱动安装过程中的cypress显示字符,完成驱动自定义向导。GUID对应的序列号是固定的,参看之前的博客。

image

  修改VID&PID名称:

image

  修改strings

image

  手册中有规定,若是不单单只修改目前的VID&PID的内容的话,那么需要用户自己去新建一个xxx.inf文件,将原内容进行修改即可。

image

  那么上述修改VID&PID之后,还要让系统能够针对你修改的VID&PID进行识别。如下图所示:

image

  图上这一部分主要是讲解对于不同的操作系统,需要将设置的ID(VID&PID)都要加入到对应的操作系统目录下,如下图所示:

image

    上述主要是针对《cy_usb》手册中的对于用户需要更改的内容作了讲解,和之前的博客《通用USB驱动程序解析》有类似内容。那么笔者接下来操作是,先利用Cypress自带的驱动,先对笔者设计的板卡进行驱动的安装。如下图所示:

image

  先完成调用cypress 自带固件完成驱动安装。

  安装完官方自带驱动如下所示:

image

   这是因为EEPROM里面没有固化程序,所以显示上述信息。

   那么如果我们想生成自己的控件信息,那该如何操作呢。

   首先声明一点,完整的一个USB系统应该包括,固件程序,驱动 程序,上位机程序,从而形成一个USB系统。那么对于想更改USB的签名,那么必须从固件程序和驱动程序入手(有人问,你这不是废话吗。。。。好吧,好戏在后头)。

  USB固件编程是整个设计任务的核心,USB固件程序用于完成USB设备的识别,重列举,设备请求、USB协议处理、外部硬件的功能,负责与USB主机间的数据通信等。所以要想更改签名,先从固件程序入手。在安装完套件中的 firmware文件中,有很多固件程序,如下图所示:

image

   我们可以选择一个固件,比如bulkloop,使用keil软件打开,如下图所示:

image

  注意上图中的dscr.a51这个文件,此文件是USB描述符,里面有设备描述符,设备限定描述符,配置描述符,字符串描述符以及用户描述符。关于描述符的介绍参看相关博客---《USB描述符简介》。

   重点来了,刚才已经提到固件程序中包含了设备描述符等相关信息,若是想更改USB签名。首先更改图上的VID,PID,以及version ID(这样更改有可能会使得数字签名失效,这个问题请参看相关的博客---《USB数字签名》)

  更改上述的VID和PID如下所示:

image

  字符串更改为如下所示:

image

//==================================================================

   注意!!!!!!

  上述操作是对应的固件操作,那么固件的VID和PID对应的是0x52EA,那么在驱动程序里面也要进行相应的操作,如下图所示:

image_thumb[13]

posted @ 2016-04-05 21:47  raymon_tec  阅读(6368)  评论(7编辑  收藏  举报