在之前的博客中已經講過,驅動程序最核心的兩個文件,一個是xxx.sys文件,一個是xxx.inf文件,主機是尋找xxx.inf文件。
在下面的文件中有相關關於USB驅動的說明。對於用戶來說,xxx.sys文件 可以不用修改,用戶可以對xxx.inf文件的內容進行相應的修改即可。
下圖是《cy_usb》應用手冊的名字,可以找到下圖手冊,查看關於USB驅動相關的內容
下圖是當前驅動支持的系統。
下圖是支持的VID&PID對,且注意,如果用戶修改cyUSB3.inf文件,並加入自己的VID&PID,這樣會導致使得設備變成未簽名。windows系統不建議使用未簽名的驅動。這一點需要格外注意。
當前版本支持特性,兼容2.0,3.0等驅動。
下圖是手冊中的一段描述,主要是針對用戶修改cyUSB3.inf,可以加入設備識別號,替換相應的驅動安裝過程中的cypress顯示字符,完成驅動自定義向導。GUID對應的序列號是固定的,參看之前的博客。
修改VID&PID名稱:
修改strings
手冊中有規定,若是不單單只修改目前的VID&PID的內容的話,那么需要用戶自己去新建一個xxx.inf文件,將原內容進行修改即可。
那么上述修改VID&PID之后,還要讓系統能夠針對你修改的VID&PID進行識別。如下圖所示:
圖上這一部分主要是講解對於不同的操作系統,需要將設置的ID(VID&PID)都要加入到對應的操作系統目錄下,如下圖所示:
上述主要是針對《cy_usb》手冊中的對於用戶需要更改的內容作了講解,和之前的博客《通用USB驅動程序解析》有類似內容。那么筆者接下來操作是,先利用Cypress自帶的驅動,先對筆者設計的板卡進行驅動的安裝。如下圖所示:
先完成調用cypress 自帶固件完成驅動安裝。
安裝完官方自帶驅動如下所示:
這是因為EEPROM里面沒有固化程序,所以顯示上述信息。
那么如果我們想生成自己的控件信息,那該如何操作呢。
首先聲明一點,完整的一個USB系統應該包括,固件程序,驅動 程序,上位機程序,從而形成一個USB系統。那么對於想更改USB的簽名,那么必須從固件程序和驅動程序入手(有人問,你這不是廢話嗎。。。。好吧,好戲在后頭)。
USB固件編程是整個設計任務的核心,USB固件程序用於完成USB設備的識別,重列舉,設備請求、USB協議處理、外部硬件的功能,負責與USB主機間的數據通信等。所以要想更改簽名,先從固件程序入手。在安裝完套件中的 firmware文件中,有很多固件程序,如下圖所示:
我們可以選擇一個固件,比如bulkloop,使用keil軟件打開,如下圖所示:
注意上圖中的dscr.a51這個文件,此文件是USB描述符,里面有設備描述符,設備限定描述符,配置描述符,字符串描述符以及用戶描述符。關於描述符的介紹參看相關博客---《USB描述符簡介》。
重點來了,剛才已經提到固件程序中包含了設備描述符等相關信息,若是想更改USB簽名。首先更改圖上的VID,PID,以及version ID(這樣更改有可能會使得數字簽名失效,這個問題請參看相關的博客---《USB數字簽名》)
更改上述的VID和PID如下所示:
字符串更改為如下所示:
//==================================================================
注意!!!!!!
上述操作是對應的固件操作,那么固件的VID和PID對應的是0x52EA,那么在驅動程序里面也要進行相應的操作,如下圖所示: