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]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM