欣寶科技(上海)有限公司網标
欣寶科技(上海)有限公司
設爲首頁
聯系站長(cháng)
加入收藏

首 頁 公司動态

産品信息

芯片銷售

技術開發

資料下(xià)載

客戶服務

聯系我們

     

當前位置:

>> 技術開發 >> 技術討(tǎo)論
技術開發 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
SY2100 EZ-USB開發使用(yòng) (0) (1) (2) (3) (4) (5)
   
USB設備開發應用(yòng)
 

開發EZ-Loader設備驅動程序需要工具

創建EZ-Loader設備驅動程序的(de)一般步驟

設計應用(yòng)舉例(1)

設計應用(yòng)舉例(2)

 

EZUSB系列芯片都具有通(tōng)過下(xià)載固件和(hé)重枚舉的(de)方式來(lái)動态改變設備特性的(de)能力。下(xià)載固件到EZUSB芯片中有兩種方法:1、使用(yòng)EZUSB控制面闆,通(tōng)過USB口下(xià)載固件;2、用(yòng)Keil 調試監控程序(Debug Monitor)通(tōng)過RS232串口下(xià)載固件。在開發過程中,兩種方法均可(kě)采用(yòng)。但是我們希望最終作出的(de)産品能自動完成固件下(xià)載以及設備重枚舉。這(zhè)就需要一個(gè)特殊的(de)、具有下(xià)載固件并完成設備重枚舉功能的(de)設備驅動程序,暫且稱之爲固件下(xià)載驅動程序。EZUSB軟件開發包,提供一個(gè)固件下(xià)載驅動程序的(de)模闆,即EZ-Loader Driver。EZ-Loader驅動程序是一個(gè)非常簡單的(de)USB程序驅動模闆,簡化(huà)到用(yòng)戶隻需要知道如何去幹一件事情,即下(xià)載固件到USB外設。因此,可(kě)以使用(yòng)該模闆非常簡單地開發出自己的(de)設備驅動程序。

 

EZ-USB軟件開發包提供的(de)EZ-Loader驅動程序隻需要很少的(de)修改就可(kě)以支持一個(gè)專用(yòng)的(de)設備。因此,它不需要有較深的(de)Windows驅動程序編程的(de)知識背景,然而,用(yòng)戶應該非常熟悉Windows的(de)即插即用(yòng)、Windows INF文件、Windows的(de)注冊表和(hé)USB。

 

EZ-Loader驅動程序是一個(gè)設備驅動程序,因此它需要Windows98的(de)設備驅動工具包(DDK)。DDK對(duì)用(yòng)戶來(lái)說并不友好,在嘗試制作EZ-Loader驅動程序之前,應該驗證所用(yòng)的(de)DDK有能力創建設備驅動程序。

 

一個(gè)典型的(de)基于EZ-USB芯片的(de)設備,如果它具有了(le)固件下(xià)載驅動程序的(de)功能,那麽,它隻需要有少量的(de)固件存儲器(EEPROM等)來(lái)存儲設備的(de)VID/PID。VID/PID與主機系統中指定的(de)設備驅動程序相關聯。該設備驅動程序的(de)唯一功能就是下(xià)載固件到外設的(de)EZUSB芯片中。

 
 
開發EZ-Loader設備驅動程序需要工具  

 

 

Windows98 DDK; Visiual C++ 5.0以上版本。

 

在安裝Windows 98 DDK之前必須首先安裝Visiual C++。在運行DDK build時(shí)會自動調用(yòng)Microsoft C編譯器;

 

Intel HEX記錄格式的(de)文件轉換爲C文件的(de)工具――hex2c.exe。該工具将Intel HEX記錄格式的(de)輸入文件轉換成C代碼數組。Cypress EZUSB 軟件開發包提供了(le)該工具,該工具的(de)命令格式如下(xià)。(在\Cypress\usb\bin中)

 

Hex2c <Intel_HexFile_name> <C_FileName> <Var_Name>

 

其中:Intel_HexFile_Name:爲輸出的(de)Intel HEX文件名,由Keil工具生成。 C_FileName:是輸出的(de)C文件名。 Var_Name:是産生的(de)C輸出的(de)文件中數組的(de)名稱。該參數爲可(kě)選項,缺省時(shí),數組名稱爲firmware。

 
創建EZ-Loader設備驅動程序的(de)一般步驟  

新建一個(gè)目錄,将EZUSB軟件開發包中..\drivers\ezloader目錄下(xià)的(de)所有文件連同子目錄拷貝到該目錄下(xià)。注意:\lib\i386\free和(hé)..\lib\i386\cheched目錄結構必須完整,否則在編譯過程中将會出錯。

編輯該目錄下(xià)的(de)sources文件,在TARGETNAME=ezloader一行中修改目标文件名。這(zhè)裏的(de)文件是指由Windows DDK産生的(de)驅動(.sys)文件。

利用(yòng)hex2c.exe将固件的(de)Intel HEX記錄格式的(de)代碼文件轉換爲C文件,打開C文件,用(yòng)其中的(de)firmware[ ] 數組代替EZ-Loader Driver中提供的(de)firmware.c中的(de)數組。

利用(yòng)Windows DDK的(de)build命令編譯創建該驅動程序。

在修改EZ-Loader驅動程序之前,用(yòng)戶應該爲定制的(de)固件下(xià)載驅動程序創建一個(gè)新的(de)目錄,一旦産生了(le)新的(de)目錄,則複制EZ=Loader下(xià)的(de)所有源文件到該目錄,使用(yòng)DDK的(de)build命令編譯生成EZ-Loader驅動程序。

Sources文件和(hé)EZ-Loader source 一起告訴DDK build如何創建驅動程序。指定的(de)源文件由驅動程序和(hé)驅動程序輸出文件名組成。已提供的(de)sources文件将産生一個(gè)名爲ezloader.sys的(de)驅動程序。根據build環境,該文件将産生于..\lib\i386\checked 或 ..\lib\i386\free目錄下(xià)。這(zhè)些目錄将在build驅動程序産生或build報告一個(gè)錯誤之前産生。

當定制EZ-Loader驅動程序時(shí),需要改變驅動程序的(de)輸出文件名,而不是ezloader.sys。那麽,可(kě)以通(tōng)過改變sources文件中的(de)TARGETNAME=filed到一個(gè)新名字來(lái)實現。

 
   
設計應用(yòng)舉例(1)  

這(zhè)裏舉例講述生成EZ-Loader固件裝載驅動程序的(de)詳細過程,所選取的(de)例子是"按鈕和(hé)燈",在目錄..\buttons and lights\dev_io\下(xià)的(de)目标程序,它由Keil軟件工具編譯、鏈接後生成。設計的(de)目标是在設備插上後,主機能通(tōng)過USB總線自動下(xià)載該固件到EZ-USB外設芯片中,并自動運行該固件程序。

首先,需要分(fēn)配設備的(de)VID/PID号。采用(yòng)重枚舉的(de)設備需要兩個(gè)VID/PID,一個(gè)綁定到固件下(xià)載之前的(de)設備驅動程序,另一個(gè)綁定到固件下(xià)載之後的(de)設備驅動程序。在此,前一個(gè)驅動程序等待我們開發,後一個(gè)驅動程序采用(yòng)EZ-USB軟件開發包提供的(de)ezusb.sys驅動程序。我們将PID=0X1004綁定到前一個(gè)驅動程序;PID=0X1005綁定到ezusb.sys驅動程序。VID均爲0x0547。注意:這(zhè)裏的(de)USB設備的(de)PID爲0x1004。

開發固件裝載設備驅動程序按照(zhào)如下(xià)步驟進行:

(1) 新建一個(gè)目錄,假設爲dev_io。将cypress\ usb\ drivers\ ezloader 目錄下(xià)的(de)文件和(hé)子目錄的(de)内容全部複制到該目錄下(xià)。

(2) 用(yòng)任何一個(gè)文本編輯器打開該目錄下(xià)的(de)sources文件,修改如下(xià)一行
TARGETNAME=ezloader

TARGETNAME=dev_io
這(zhè)一名稱将影(yǐng)響到最後産生的(de).sys文件的(de)名稱。

(3) 利用(yòng)hex2c.exe,将dev_io.hex文件轉換爲dev_io.c文件。
Hex2c dev_io.hex dev_io.c
現在,dev_io.c包含一個(gè)Intel HEX記錄結構的(de)數組,被稱爲firmware.

(4) 打開bal.c和(hé)firmware.c文件,将firmware.c中的(de)firmware[ ]數組用(yòng)dev_io.c中的(de)firmware[ ] 數組替換;

(5) 利用(yòng)windows DDK創建目标驅動程序。運行build.exe,選擇DDK的(de)free或者是checked環境,進入到bal子目錄,鍵入
build -c
開始創建驅動程序。這(zhè)取決于所選的(de)編譯環境,編譯成功的(de)話(huà),将在\\..\dev_io\lib\i386\checked或..\dev_io\lib\i386\free目錄下(xià)産生一個(gè)dev_io.sys文件,這(zhè)就是我們需要的(de)固件裝載設備驅動程序(目标驅動程序),将該驅動程序複制到c:\windows\system32\drivers目錄下(xià)。

(6)最後,要使得(de)該驅動程序正确工作,還(hái)必須爲它寫一個(gè)安裝信息,即.inf文件。它将設備的(de)VID/PID綁定到特定的(de)設備驅動程序上。該inf文件可(kě)存放在任何一個(gè)指定的(de)目錄下(xià),當該USB設備首次被連接時(shí),系統會自動詢問該文件的(de)位置。我們創建一個(gè)dev_io.inf文件。該文件内容如下(xià):

下(xià)載 dev_io.inf文件

(7)修改開發闆的(de)VID/PID爲0x0547/0x1004。将該USB外設的(de)PID号寫入到串行EEPROM中。有兩種方法:
第一種:使用(yòng)EEPROM編程器。将B0 47 05 04 10 01 00 七個(gè)字節編程到串行EEPROM的(de)前7個(gè)單元中。
第二種:使用(yòng)EZUSB控制面闆。單擊Download按鈕,選擇\\…\Cypress \usb\ Examples\ EzUsb\ Vend_Ax\ Vend_Ax.hex文件,幾秒後該文件将下(xià)載到EZ-USB芯片中,接著(zhe)修改ezusb開發闆的(de)PID爲上一步中.inf文件所指定的(de)PID的(de)值,設置Req=0xA2,Dir=OUT,最後,單擊Vend_Req按鈕,即可(kě)将新的(de)PID值寫入到串行的(de)EEPROM中。

(8) 重新插上開發闆,Windows提示找到新硬件,并要求提供該設備的(de)驅動程序。按照(zhào)windows添加新硬件向導的(de)提示,将dev_io.inf提供給windows.

(9) 查看結果,發現驅動程序裝入後,dev_io.hex固件就開始在開發闆上運行了(le)。

 
   
設計應用(yòng)舉例(2)  

對(duì)于上面的(de)例子,隻是編制了(le)固件程序,對(duì)于用(yòng)戶來(lái)說,往往需要編制應用(yòng)程序,對(duì)開發的(de)USB設備進行管理(lǐ)和(hé)操作。在我們的(de)開發套件的(de)光(guāng)盤上提供了(le)這(zhè)樣的(de)例子,固件程序類似于dev_io,同時(shí)在vb下(xià)編制了(le)應用(yòng)程序。在光(guāng)盤SY2100 Examples目錄下(xià)“EZUSB\按鈕和(hé)燈主機控制”中。(這(zhè)是一個(gè)标準的(de)HID設備,無需編制驅動程序)

1)在“控制面闆”中下(xià)載運行SY2100 Examples\EZUSB\按鈕和(hé)燈主機控制\GPHID 下(xià)的(de)GPHID.HEX固件,運行後LED顯示0~F,如下(xià)圖所示。

2)運行SY2100 Examples\EZUSB\按鈕和(hé)燈主機控制\VBhid\VBhid應用(yòng)程序,界面如下(xià)圖所示;

 

可(kě)以通(tōng)過應用(yòng)程序對(duì)HID設備進行操作,同時(shí)在開發闆上的(de)操作也(yě)同時(shí)反應在應用(yòng)界面上。 F1,F4按鈕控制增加和(hé)減小數碼的(de)顯示速度;F2,F3控制是否顯示小數點。該設備的(de)VID和(hé)PID爲0547和(hé)7450。

 
   
上一頁
下(xià)一頁
 
 
 
 
   
 
欣寶科技(上海)有限公司網标
欣寶科技(上海)有限公司 (Shanghai Siyue Electronics Co., Ltd.)
電話(huà): 086-021-54170805, 54170905 傳真:086-021-54170905
Copyright © 2012 www.shsiyue.com All rights reserved.

經營許可(kě)證号 : 滬ICP備10001390号
信息确認