隨著臺式機(jī)和筆記本電腦串口的消失,USB已成為最常見的外圍設(shè)備接口。此外,USB的嵌入式應(yīng)用正在增加。但是,在嵌入式系統(tǒng)中實(shí)現(xiàn)USB接口的開發(fā)團(tuán)隊(duì)可以輕松地產(chǎn)生微小的變化,這可能使與其他嵌入式USB設(shè)備的互操作性成為不確定的結(jié)果。
我們的團(tuán)隊(duì)處理USB 3.0主機(jī)接口開發(fā)的方式之一是檢查我們的主機(jī)與許多不同供應(yīng)商的USB設(shè)備的兼容性。我們最終投入了大量時(shí)間來調(diào)查和調(diào)試出現(xiàn)的問題。我們發(fā)現(xiàn)了導(dǎo)致大多數(shù)這些問題的兩個(gè)重要問題。
第一個(gè)問題是系統(tǒng)電源管理工作的結(jié)果。在嵌入式系統(tǒng)中,可能需要讓USB主機(jī)動(dòng)態(tài)關(guān)閉連接的USB設(shè)備,作為其電源管理方案的一部分。問題是,當(dāng)主機(jī)VBUS電源關(guān)閉時(shí),USB 2.0/3.x規(guī)范沒有在主機(jī)/設(shè)備側(cè)提供放電機(jī)制。在主流臺式PC和Linux系統(tǒng)中,VBUS電源始終保持開啟狀態(tài)。
在主機(jī)電源斷開后,連接設(shè)備放電所需的時(shí)間差異很大。圖1顯示了USB存儲器件的典型放電事件。這種特定設(shè)備需要6-8秒才能放電,但來自不同供應(yīng)商的設(shè)備可能會顯示不同的放電特征。
嵌入式USB系統(tǒng)想要循環(huán)主機(jī)的VBUS電源不接受規(guī)范的指導(dǎo),關(guān)于主機(jī)在重新斷電之前關(guān)閉電源以使連接的設(shè)備放電多長時(shí)間。所以,他們選擇了自己的延遲時(shí)間。不幸的是,開發(fā)人員往往只在其軟件中插入10到150毫秒的延遲;他們不愿意延遲幾秒鐘,這可能是實(shí)際需要的。
當(dāng)主機(jī)軟件關(guān)閉VBUS電源只有幾百毫秒時(shí),由于連接的設(shè)備可以出現(xiàn)問題處于一個(gè)未知的狀態(tài)。這種不確定的情況通常會導(dǎo)致在電源恢復(fù)后設(shè)備連接或連接階段出現(xiàn)故障。如果主機(jī)軟件關(guān)閉VBUS電源,則必須將電源線接地并保持足夠長的時(shí)間以完全放電并重置連接的設(shè)備。
因?yàn)橐?guī)范沒有說明和供應(yīng)商通常不提供最小“關(guān)閉”時(shí)間的值,開發(fā)人員需要為自己定義一個(gè)。通用工程實(shí)踐表明,開發(fā)人員測量許多設(shè)備的放電時(shí)間,以達(dá)到“安全”的關(guān)閉時(shí)間。該結(jié)果將基于有限數(shù)量的實(shí)驗(yàn),但可以證明是足夠的。從圖1可以看出,幾乎所有連接的USB設(shè)備都可以使用10秒左右的關(guān)閉時(shí)間。
作為這種不確定的經(jīng)驗(yàn)方法的替代方案,可以有硬件解決方案。問題。為主機(jī)硬件提供一個(gè)有時(shí)間限制地正確釋放VBUS電源的措施。這樣,軟件可以使用保證正確的延遲值。增加的放電機(jī)制甚至可以根據(jù)其他平臺設(shè)計(jì)選擇,允許系統(tǒng)控制,在VBUS放電時(shí)間內(nèi)選擇性地啟用放電機(jī)制,并在VBUS打開時(shí)禁用機(jī)制。
我們實(shí)施了這樣的放電在發(fā)現(xiàn)我們在測試各種USB設(shè)備時(shí)看到的枚舉錯(cuò)誤的原因后,我們的主機(jī)設(shè)計(jì)中的機(jī)制。一旦機(jī)制到位,先前在電源循環(huán)期間失敗的設(shè)備就會開始正確枚舉。
在測試以數(shù)據(jù)速率為中心的USB主機(jī)兼容性時(shí)經(jīng)常出現(xiàn)的第二個(gè)問題。 USB規(guī)范要求主機(jī)通過發(fā)送命令和數(shù)據(jù)請求來初始化和配置任何連接的設(shè)備。不幸的是,我們發(fā)現(xiàn)市場上的某些設(shè)備在高速接收協(xié)議兼容的請求時(shí)不會表現(xiàn)出來。設(shè)備出現(xiàn)故障,最終將不間斷的NAK發(fā)送給主機(jī),導(dǎo)致主機(jī)超時(shí)。在枚舉期間或稍后在數(shù)據(jù)傳輸期間,設(shè)備可能會失敗,具體取決于設(shè)備邏輯無法處理主機(jī)請求的位置。
Windows和Linux系統(tǒng)似乎通過微調(diào)主機(jī)/設(shè)備來解決此問題握手。它們將吞吐率降低到大多數(shù)或所有設(shè)備可以工作的水平。嵌入式USB開發(fā)人員需要測量他們打算使用的設(shè)備可以處理的命令間請求時(shí)間。
這種速度的一個(gè)例子圖2中顯示了與記憶棒相關(guān)的故障。在枚舉期間,主機(jī)的大容量存儲驅(qū)動(dòng)程序會發(fā)出設(shè)備必須確認(rèn)和處理的設(shè)置令牌。該圖顯示,如果設(shè)置后的命令間隙大約為9μs,則設(shè)備的邏輯無法確認(rèn)“獲取字符串描述符”命令。設(shè)備使用NAK連續(xù)響應(yīng)命令,導(dǎo)致主機(jī)超時(shí)。圖3顯示了設(shè)置后的命令間隙增加到27μs時(shí)的結(jié)果。通過這個(gè)時(shí)間,設(shè)備可以正常工作。
主機(jī)需要添加額外的命令間延遲才能適應(yīng)某些USB設(shè)備的惡意功能,甚至雖然9μs的命令間隙是有效的USB請求。但是,只有在枚舉階段或控制轉(zhuǎn)移中才需要這種延遲。在正常數(shù)據(jù)交易(批量輸入/輸出)期間不會出現(xiàn)此計(jì)時(shí)問題。
我們的研究結(jié)果是,嵌入式USB主機(jī) - 設(shè)備互操作性問題可能來自兩個(gè)來源:電源循環(huán)和命令/數(shù)據(jù)流量速率。由于這些因素沒有明確的規(guī)范,開發(fā)人員希望不同供應(yīng)商能夠看到其實(shí)施的許多變化。為確保廣泛的互操作性,開發(fā)人員應(yīng)確保其USB主機(jī)設(shè)計(jì)“慷慨”,以滿足設(shè)備的處理能力。此外,這些問題也應(yīng)作為澄清USB標(biāo)準(zhǔn)的基礎(chǔ),以便設(shè)備供應(yīng)商在未來針對統(tǒng)一的要求。
Ritika Sharma畢業(yè)于NIT的電子與通信工程專業(yè)賈朗達(dá)爾,旁遮普邦,印度。她目前正在與飛思卡爾半導(dǎo)體印度公司合作。有限公司(恩智浦集團(tuán)公司)作為IP設(shè)計(jì)和驗(yàn)證領(lǐng)域最近3年的設(shè)計(jì)工程師。
Parul具有模擬設(shè)計(jì)背景和該公司致力于模擬PHY(如1394a,USB2.0和HDMI)的設(shè)計(jì)和芯片開發(fā),采用0.35um至28nm的各種技術(shù)。 Parul還擁有多項(xiàng)與USB設(shè)計(jì)有關(guān)的專利。
-
嵌入式
+關(guān)注
關(guān)注
5059文章
18974瀏覽量
302062 -
usb
+關(guān)注
關(guān)注
60文章
7877瀏覽量
263713 -
PCB打樣
+關(guān)注
關(guān)注
17文章
2968瀏覽量
21622 -
華強(qiáng)PCB
+關(guān)注
關(guān)注
8文章
1831瀏覽量
27698 -
華強(qiáng)pcb線路板打樣
+關(guān)注
關(guān)注
5文章
14629瀏覽量
42946
發(fā)布評論請先 登錄
相關(guān)推薦
評論