嵌入式系統(tǒng)上的USB開發(fā)可能是一場(chǎng)噩夢(mèng),尤其是如果它是嵌入式開發(fā)人員不是每天都使用的協(xié)議。有一些有用的工具可以簡(jiǎn)化USB開發(fā),這里有五個(gè)工具是特別有趣的,每個(gè)開發(fā)人員都應(yīng)該知道。
工具1——PyUSB
Python的跨平臺(tái)兼容性使其成為開發(fā)USB終端和應(yīng)用程序GUI的完美編程語(yǔ)言。PyUSB庫(kù)是使Python成為通過USB接口到嵌入式系統(tǒng)的優(yōu)秀編程語(yǔ)言的附加庫(kù)之一。PyUSB提供了一個(gè)易于使用的包裝接口來(lái)訪問開源的libusb。
工具2——USB View
USB View是微軟開發(fā)的一個(gè)工具,用于調(diào)試USB枚舉問題。雖然最初的USB View是為Windows開發(fā)的,但也有Linux版本可用。該工具使嵌入式開發(fā)人員能夠查看通過USB連接到PC的所有設(shè)備。每個(gè)設(shè)備都顯示為樹的一部分,通過導(dǎo)航,可以檢索每個(gè)USB設(shè)備的配置數(shù)據(jù)。
工具3——Pyside
PySide是一個(gè)有用的Python庫(kù),它公開了Qt UI函數(shù)。它可以用來(lái)在Python中創(chuàng)建一個(gè)圖形用戶界面,然后用來(lái)與PyUSB庫(kù)交互,最終與基于USB的嵌入式系統(tǒng)交互。例如,可以添加一個(gè)按鈕,然后發(fā)送USB消息來(lái)打開LED或讀取傳感器數(shù)據(jù),這可以在幾分鐘內(nèi)完成。
工具4——軟件協(xié)議分析器
任何開發(fā)過基于USB的嵌入式系統(tǒng)的開發(fā)者都知道,開發(fā)并不總是一帆風(fēng)順的。毫無(wú)疑問,在嘗試傳輸數(shù)據(jù)時(shí),設(shè)備不會(huì)枚舉或者只是出現(xiàn)奇怪的行為。可能會(huì)出現(xiàn)許多不同的問題,例如配置不當(dāng)、布局不當(dāng)、振蕩器不合規(guī)格等等。為了深入了解正在發(fā)生的事情,嵌入式開發(fā)人員可以使用Wireshark等軟件協(xié)議分析器來(lái)捕獲PC正在接收的USB數(shù)據(jù)流。
工具5——硬件協(xié)議分析器
如果PC能夠識(shí)別USB設(shè)備,軟件協(xié)議分析器是一個(gè)很好的工具。但是,如果USB時(shí)鐘關(guān)閉并且無(wú)法枚舉,軟件分析器對(duì)于調(diào)試就沒什么用處了。幸運(yùn)的是,還有一個(gè)硬件協(xié)議分析器可供使用USB的嵌入式開發(fā)人員使用。一個(gè)例子是總相位Beagle USB協(xié)議分析儀。考慮到在沒有合適工具的情況下調(diào)試會(huì)話可能需要的時(shí)間,這是非常值得嘗試的。Beagle是一個(gè)硬件協(xié)議分析器,它監(jiān)控物理引腳上的總線流量,不僅能夠記錄,還能夠?qū)崟r(shí)解碼USB流量。
結(jié)論
開發(fā)基于USB的嵌入式系統(tǒng)一直被認(rèn)為是一項(xiàng)復(fù)雜的工作,但最近它幾乎變成了一項(xiàng)微不足道的工作。芯片供應(yīng)商現(xiàn)在正在提供不同USB類別的開箱即用示例,這讓開發(fā)人員有了從PC訪問設(shè)備的任務(wù)。PC工具已經(jīng)走過了漫長(zhǎng)的道路,尤其是隨著開源庫(kù)和Python編程語(yǔ)言的使用。現(xiàn)在是開始使用USB和Python構(gòu)建嵌入式系統(tǒng)的時(shí)候了,并享受使嵌入式開發(fā)人員生活更輕松的開發(fā)工具。