zoukankan      html  css  js  c++  java
  • 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]

  • 相关阅读:
    C# 中使用反射的优缺点
    winfrom---Window 消息大全
    Entity Framework:三种开发模式实现数据访问
    asp.net Core 2.0 MVC为Controller或Action添加定制特性实现登录验证
    [十二省联考2019] 异或粽子 解题报告 (可持久化Trie+堆)
    [jzoj 3175] 数树数 解题报告 (树链剖分)
    [jzoj 5661] 药香沁鼻 解题报告 (DP+dfs序)
    [jzoj 5662] 尺树寸泓 解题报告 (线段树+中序遍历)
    [jzoj 5664] [GDOI2018Day1模拟4.6] 凫趋雀跃 解题报告(容斥原理)
    范德蒙恒等式学习笔记
  • 原文地址:https://www.cnblogs.com/raymon-tec/p/5357019.html
Copyright © 2011-2022 走看看