在嵌入式設備上實現(xiàn) USB 點對點通信
即使在物聯(lián)網時代的今天,你仍然需要通過本地連接來訪問和控制你的嵌入式設備。出于安全考慮,你不一定想要通過網絡來做一些關鍵的配置或者數(shù)據(jù)傳輸。亦或,你的設備需要一個特殊的維護接口。在這篇文章中,我將會分享通過USB 和你的嵌入式設備通信的方法。
在我們開始之前,讓我來解釋一些術語:在本文中,我將會討論USB “主機”和“客戶端”?!爸鳈C”是指用于連接你嵌入式設備的電腦,“客戶端”則是你的嵌入式設備。并且,我會討論只在 Windows CE 中的一些方法。Linux 也提供類似的方法。
韜睿預先編譯好的 Windows CE 鏡像已經支持一些 USB 連接的方法:
- 大容量存儲設備: USB 客戶端被當作 USB 閃存設備。
- RNDIS 設備: USB 客戶端被當作網絡適配器
- 串行設備:USB 客戶端被當作虛擬串口
如果你只需要在嵌入式設備上存取文件,那么大容量存儲設備會更加合適。因為,用戶將嵌入式設備視為掛載到電腦上的普通存儲設備,所以你對于這整個過程掌控甚少。并且只有當 USB 設備插入后,嵌入式設備才能訪問文件。
RNDIS 則會表現(xiàn)地和普通用戶所期望的USB設備不一樣。當連接USB設備后,所彈出的防火墻警報會令人摸不著頭腦。第三種方法,串行設備,就我個人而言,在很多應用場合下都是最通用的方法。你可以完全控制嵌入式設備上的通信,無需顧慮前面兩種方法意想不到的影響。
讓我們重點關注串行設備的設置以及實現(xiàn)USB 串行通信所需要做的工作。無論是在主機還是客戶端上,都已經有許多現(xiàn)成的支持方案,剩下的工作量就很小。我就大致介紹下所需的步驟:
客戶端(韜睿模塊):
1. 禁用 ActiveSync,否則會占用串口連接,更多的信息請訪問韜睿開發(fā)者中心網站。
2. 配置 Toradex WinCE 鏡像中的注冊表,使你的設備看起來像一個特定的產品,默認情況下,主機上將會顯示 Microsoft USB Sync 設備。當你開始銷售你的產品時,你應該修改這些配置,當然在開始研發(fā)的時候,你也可以不進行設置。請訪問MSDN網站產看所有相關注冊表配置。
3. 開發(fā)應用,在虛擬串口上發(fā)送命令和數(shù)據(jù)。在我們的開發(fā)者網站上你可以找到代碼例程。在調用CreateFile() 函數(shù)后,你就可以和操作其他文件句柄一樣進行讀寫。
主機:在主機上我們使用 WinUSB 和我們的嵌入式設備通訊
1. 如果你在上面第二步中,修改客戶端上的廠商ID和產品ID,你就必須重新編譯自己的 INF 文件,匹配 idVendor 和 idProduct。在MSDN上獲取如何編譯自己的 WinUSB 驅動。
2. 開發(fā)應用,控制設備以及發(fā)起通信。在韜睿開發(fā)者網站上有用于主機上代碼例程。
正如你看到的一樣,USB 串口驅動是一種非常簡單的方法。你不必關心內核級別的開發(fā),所有的事情都可以在應用層完成。
提交
Verdin AM62 LVGL 移植
基于 NXP iMX8MM 測試 Secure Boot 功能
隆重推出 Aquila - 新一代 Toradex 計算機模塊
Verdin iMX8MP 調試串口更改
NXP iMX8MM Cortex-M4 核心 GPT Capture 測試