<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 在嵌入式系統中提高U盤(pán)訪(fǎng)問(wèn)兼容性的幾種措施

在嵌入式系統中提高U盤(pán)訪(fǎng)問(wèn)兼容性的幾種措施

——
作者:廣州愛(ài)斯佩克環(huán)境儀器有限公司 張井剛 劉德活 時(shí)間:2007-02-04 來(lái)源:電子產(chǎn)品世界 收藏

摘要: 本文介紹了USB產(chǎn)品的開(kāi)發(fā)輔助工具協(xié)議分析軟件 和周立公公司提供的USB總線(xiàn)抓取和協(xié)議分析系統USB Anaslyst-I。再以筆者開(kāi)發(fā)的單片機+USB接口芯片()系統為例,詳細分析了提高訪(fǎng)問(wèn)兼容性的幾種措施。利用此措施,可以大大提高讀寫(xiě)的成功率并且兼容所有目前各大廠(chǎng)商的各種。

關(guān)鍵詞:  U盤(pán); ;

引言

隨著(zhù)USB規范的完善和成熟,USB外設的種類(lèi)不斷豐富,應用領(lǐng)域也不斷擴大。目前U盤(pán)幾乎成了我們日常工作的必備的移動(dòng)存儲工具。隨著(zhù)嵌入式產(chǎn)品應用領(lǐng)域的日益增長(cháng),USB外設的應用范圍也隨之擴大,在嵌入式系統中實(shí)現對USB外設控制尤其是對U盤(pán)的操作也變得必不可少。筆者在開(kāi)發(fā)U盤(pán)支持功能時(shí),最初是選用的朗科的U216(128M)的U盤(pán),并調試成功??蓳Q了朗科的另外一款u200(128M)的U盤(pán)就識別不了。再試驗愛(ài)國者的幾款U盤(pán)也出現了類(lèi)似的兼容性問(wèn)題。但是這些U盤(pán)在PC機(安裝windows2000)上又都操作正常。這說(shuō)明筆者這個(gè)系統對U盤(pán)的操作存在兼容性問(wèn)題。目前市場(chǎng)上的U盤(pán)的生產(chǎn)制造商不下幾十個(gè),而且每個(gè)品牌又包含十幾甚至幾十種。那么如何使U盤(pán)在嵌入式系統上操作就如同在PC機上使用一樣,不存在兼容性問(wèn)題?以下章節將詳細分析并給出相應的措施。

常用的USB開(kāi)發(fā)工具

談到USB產(chǎn)品的開(kāi)發(fā),不得不涉及一些好用的輔助工具。利用這些工具會(huì )使開(kāi)發(fā)取得事半功倍的效果。

5.0軟件

Bus Hound是純粹的軟件產(chǎn)品,它是通過(guò)抓取scsi驅動(dòng)層的數據來(lái)進(jìn)行分析。它可以用來(lái)分析USB總線(xiàn)數據協(xié)議、捕獲IO動(dòng)作等。同時(shí)也可以傳送用戶(hù)編寫(xiě)的命令進(jìn)行調試。操作界面如圖1所示,使用步驟如下。

圖1  Bus Hound 5.0操作界面

(1) 啟動(dòng)軟件,將USB設備插入USB口;
(2) 在DEVICE內選擇設備,例如我的設備是一個(gè)USB電話(huà),則設備為USB  COMPOSITE DEVICE,選中該設備,可以在下面的PROPERTIES看到設備的總線(xiàn)類(lèi)型,設備的電源以及各個(gè)端點(diǎn)的功能,在該設備下面還有兩個(gè)分支:USB AUDIO DEVICE 和 "USB人體學(xué)輸入設備"(這就是本設備占用的兩個(gè)接口),一樣在PROPERTIES里面可以看到他們的類(lèi)代碼為0x01和0x03;
(3) 在看完基本信息后,將上述的某個(gè)接口選中,或者全部選中;
(4) 切換到“SETTING”選項卡,將MAX PHASE設置為512,這樣你就可以看到完全的DESCRIPTOR和其他的數據了;
(5) 在“PHASE TO CAPTURE”里面的幾個(gè)和USB相關(guān)的選項如下:
CDB:命令描述符塊;
CTL:USB控制傳輸;
DI/D數據輸入/輸出;
LEN:數據長(cháng)度;
INSOC:同步傳輸;
RSET:總線(xiàn)復位;
URB:USB請求塊;
USTS:USB狀態(tài)
查看USB數據傳輸就把它們都選中;
(6) 在“Coloumn to display”里面,把里面的全部打勾選中。注意,這樣要把窗體最大化才可以看見(jiàn)全部數據;
(7)在”CAPTURE”選項卡里面可以看到捕捉的數據了,在文本框輸入文字,再點(diǎn)旁邊的箭頭,可以查詢(xún)。按STOP,再按START可以清屏。

USB Anaslyst-I分析儀

USB Anaslyst-I是廣州致遠電子有限公司獨立設計的USB開(kāi)發(fā)工具,它是通過(guò)直接捕獲USB總線(xiàn)上的數據來(lái)進(jìn)行分析,是國內自主設計的USB分析工具,完全打破了國外技術(shù)壟斷,價(jià)格僅為歐美同類(lèi)產(chǎn)品的幾十分之一。該分析儀完全支持USB1.1協(xié)議,界面友好(如圖2),直接搭配個(gè)人電腦或筆記本使用,是廣大USB接口設備開(kāi)發(fā)工程師的得力助手。

圖2  USB Anaslyst-I分析儀界面 

主要功能特點(diǎn):
可對HID類(lèi)設備和大容量設備類(lèi)的分析解碼;
事務(wù)級別視圖和傳輸控制級別視圖;
分組、事務(wù)、傳輸有效率統計功能;
在線(xiàn)升級功能;
鋁質(zhì)外觀(guān),體積小,重量輕,方便攜帶;
兩種供電方式,滿(mǎn)足各種計算機的要求;
USB2.0傳輸接口,支持Windows 98、2000、XP等操作系統;
全面支持USB1.1全速、低速數據采集分析;
支持PID或人工多種觸發(fā)條件選擇;
USB總線(xiàn)數據自動(dòng)跟蹤,確保數據完整無(wú)誤;
同時(shí)具有USB總線(xiàn)錯誤分析和傳輸數據錯誤分析功能;
隨意定義1~99Mbyte的采集容量;
強大搜索功能,可以隨意查找錯誤幀或指定數據;
USB協(xié)議解碼功能,數據閱讀更加輕松;
空閑時(shí)間統計功能,數據傳輸過(guò)程一目了然;
完善的數據統計功能,帶寬利用隨手可得。

MCU(80386EX)+應用電路

筆者開(kāi)發(fā)的是用于工業(yè)控制的觸摸屏系統。本系統具有主USB接口,可訪(fǎng)問(wèn)U盤(pán)。觸摸屏的主CPU選用了Intel公司的 80386EX 32位處理器。這款嵌入式芯片集成了2片8259中斷控制器,3片8254定時(shí)/計數器,8個(gè)片選,1個(gè)32位Watchdog,2個(gè)異步串口,1個(gè)同步串口,2個(gè)DMA通道。而且與x86系列的指令完全兼容。主控USB接口芯片選用Cypress的SL811HS。它是一個(gè)嵌入式的USB 主/從控制器??梢院透鞣N微處理器、微控制器、DSP進(jìn)行接口。SL811HS主控制器完全兼容USB1.1標準。圖3是一個(gè)利用SL811HS來(lái)訪(fǎng)問(wèn)U盤(pán)的應用電路。其中USBRD、USBWR、CS5#、A0、INT7是與MCU的接口信號。

圖3  U盤(pán)訪(fǎng)問(wèn)控制電路

提高SL811HS讀寫(xiě)U盤(pán)兼容性的措施

復位SL811HS后應適當增加延時(shí)時(shí)間

當系統上電時(shí),以及插入或拔出U盤(pán)時(shí)都需要復位(reset)SL811HS芯片,來(lái)重新更新端口狀態(tài)。初始化流程如下所示。注意在復位并初始化完SL811HS芯片和讀總線(xiàn)狀態(tài)之間需適當加長(cháng)延時(shí)時(shí)間。因為當插入不同的U盤(pán)時(shí)總線(xiàn)的穩定時(shí)間會(huì )有差別。如果延時(shí)較短,則有一些U盤(pán)就識別不到了,一般延時(shí)100ms就足夠了。下面給出相關(guān)代碼的描述。

SL811Write(CtrlReg,0x08);       // 復位SL811HS
SL811Write(CtrlReg,0x00);        // 設置SL811HS到正常操作模式
SL811Write(IntStatus,INT_CLEAR); // 清中斷使能狀態(tài)
/* 修改華旗 不能識別的問(wèn)題*/
/*原程序開(kāi)始*/
//EZUSB_Delay(10);    // 延時(shí)等待硬件穩定
/*原程序結束*/
/*修改后程序開(kāi)始*/  
   EZUSB_Delay(100);                   // 增加延時(shí)等待硬件穩定
   /*修改后程序結束*/
      uIntStatus=SL811Read(IntStatus);    //讀SL811HS的狀態(tài)

設置配置(set configuration)處理不完整

應該在配置這個(gè)語(yǔ)句后面加上一個(gè)設置接口(set_interface)。Bus Hound軟件每次枚舉U盤(pán)的時(shí)候,先是set_configuration然后是 set_interface,筆者從中得到啟發(fā),實(shí)際協(xié)議上并沒(méi)有這樣的規定,這樣做的原因在于國內的有些U盤(pán)生產(chǎn)廠(chǎng)商,照搬微軟Windows操作系統的做法,Windows是每次都要這樣做的,所以U盤(pán)廠(chǎng)商在寫(xiě)固件的時(shí)候,就也要讓主機必需進(jìn)行接口設置。

端點(diǎn)被禁用后需進(jìn)行一系列復位處理

有些U盤(pán)在進(jìn)行完查詢(xún)(inquiry)命令后,在讀容量(read_capability)時(shí)端點(diǎn)被禁用,筆者從Bus Hound中受到了啟發(fā),Bus Hound 的做法是有一個(gè)復位(reset)的過(guò)程,具體的命令就是清除端口(clear_feacture),執行完這個(gè)命令后,讀容量時(shí)端點(diǎn)就不會(huì )被禁用了。具體的軟件流程如圖4所示。

圖4 端點(diǎn)被禁用后的復位操作

每條scsi命令失敗后需要進(jìn)行多次重發(fā)處理

在插入U盤(pán)后,在執行讀容量命令時(shí),在命令的查詢(xún)狀態(tài)(csw)階段總是返回錯誤。連續讀5次依然是返回錯誤。又是借助Bus Hound,發(fā)現PC機上執行相應的命令時(shí),若命令返回錯誤,它會(huì )連續發(fā)送幾十次直到操作正常。原來(lái)部分U盤(pán)對部分scsi命令(如read_capability,read10,write10)等的響應非常慢。所以可以通過(guò)增加重復讀取的次數來(lái)解決此類(lèi)問(wèn)題。筆者最后設置了100次。即重復發(fā)送100次此命令都返回錯誤則認為操作U盤(pán)失敗。詳細流程如圖5所示。

圖5  SCSI命令失敗后增加復發(fā)讀取操作

結語(yǔ)

以MCU(386EX)+ SL811HS系統為平臺,借助USB協(xié)議分析軟件Bus Hound和硬件系統Anaslyst-I分析儀,分析了U盤(pán)操作失敗的原因,并給出了相應的措施。通過(guò)對目前市場(chǎng)上主要的幾十款U盤(pán)(包括愛(ài)國者、朗科、索尼、三星等等)的測試均正常。目前本系統已經(jīng)批量使用半年時(shí)間,未出現任何不兼容U盤(pán)的問(wèn)題。
  
參考文獻

1 張念淮,江浩等, USB總線(xiàn)接口開(kāi)發(fā)指南. 國防工業(yè)出版社,2001
2 USB Mass Storage Class -Bulk Only Transport,1999
3 USB Mass Storage Class-UFI Command Specification,1998



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>