RNDIS和ECM的熱插拔問題 最近修復(fù)了一波 RNDIS 和 ECM的熱插拔通信異常問題,,添加了通過 RNDIS:
ECM:
現(xiàn)已測試 現(xiàn)已測試 相關(guān)Pull Request: https://github.com/RT-Thread/rt-thread/pull/2764(因微信無法插入外部鏈接,,請將以上鏈接復(fù)制至外部瀏覽器打開) 關(guān)于NDIS RNDIS全稱Remote NDIS 是Microsoft定義的一種USB以太網(wǎng)卡模型,,說到RNDIS 必須要說說另一個東西,NDIS,。 NDIS(Network Driver Interface Specification)是網(wǎng)絡(luò)驅(qū)動程序接口規(guī)范的簡稱,。它橫跨傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層,,定義了網(wǎng)卡或網(wǎng)卡驅(qū)動程序與上層協(xié)議驅(qū)動程序之間的通信接口規(guī)范,屏蔽了底層物理硬件的不同,使上層的協(xié)議驅(qū)動程序可以和底層任何型號的網(wǎng)卡通信,。NDIS為網(wǎng)絡(luò)驅(qū)動程序創(chuàng)建了一個完整的開發(fā)環(huán)境,只需調(diào)用NDIS函數(shù),而不用考慮操作系統(tǒng)的內(nèi)核以及與其他驅(qū)動程序的接口問題,,從而使得網(wǎng)絡(luò)驅(qū)動程序可以從與操作系統(tǒng)的復(fù)雜通訊中分離,,極大地方便了網(wǎng)絡(luò)驅(qū)動程序的編寫。另外,,利用NDIS的封裝特性,,可以專注于一層驅(qū)動的設(shè)計,,減少了設(shè)計的復(fù)雜性,同時易于擴展驅(qū)動程序棧,。 而RNDIS 就是NDIS這種規(guī)范基于USB的一種具體實現(xiàn),,RNDIS目前可以在Windows7 or later(講道理Vista也是可以的)上自動加載驅(qū)動,無需第三方驅(qū)動,。而對于Linux和MacOS來說RNDIS則需要安裝第三方驅(qū)動了,,部分Linux發(fā)行版內(nèi)置了RNDIS的驅(qū)動(誰叫Windows用的人多了)。至于Linux Mac 下如何使用RNDIS這里不跟你多解釋,,因為我提供了另一種解決方案--------CDC-ECM,。 CDC-ECM(Ethernet Networking Control Model)是USB聯(lián)盟定義的標準USB以太網(wǎng)控制器模型(很遺憾,Windows下沒有驅(qū)動),,絕大部分Linux發(fā)行版和MacOS都支持該種USB設(shè)備的驅(qū)動,。這里講的絕大多數(shù)包括了各種pi,當然如果你自己編譯的linux手動剔除了這份驅(qū)動就沒辦法了,。 下載RNDIS/ECM白皮書請由此入: https://www./qa/thread-11718-1-1.html(因微信無法插入外部鏈接,,請將以上鏈接復(fù)制至外部瀏覽器打開) 如何在RT-Thread上使用這個功能 要用這玩意 首先你的RT-Thread bsp得有usb驅(qū)動 -- 推薦大家使用下面的bsp或者仿照下面的bsp對STM32F4系列的USB驅(qū)動進行快速移植。(超簡單) bsp/stm32/stm32f469-st-disco 有正點原子 L4 IOT Board的朋友也可以用相關(guān)的bsp,。 大概的操作步驟如下: 1) 如果你的bsp的menuconfig有配置USB的驅(qū)動加載開關(guān)(比如bsp/stm32/stm32f469-st-disco),,那么把它打開。 這里不是每一個bsp都有此配置,,有些bsp直接通過usb組件是否開啟來判斷是否使用usb驅(qū)動 2) 把LWIP打開 這里必須先打開LWIP才能在USB Device找到RNDIS/ECM 3)把RNDIS/ECM打開 RNDIS: ECM: 4)編譯下載插USB,。 然后你的Windows/Mac/Linux 上就能看到網(wǎng)卡了。是不是超簡單,。 FAQ Q 為什么設(shè)備上不了網(wǎng),? 因為你只是和電腦連起來了而已,,并沒有路由器,甚至沒有DHCP,,Windows上可以使用網(wǎng)絡(luò)共享或者網(wǎng)絡(luò)橋接的方式,,如果是用Linux的人,。我估計也不用我多嗶嗶。 Q 如果想要板子做DHCP怎么辦,? menuconfig里面開DHCP 然后在網(wǎng)卡linkup后調(diào)用 dhcpd_start('u0'); ECM的代碼里面做了如果開DHCP的選項就會自動啟動DHCP服務(wù)器,可以做參考,。 Q 速度怎么樣,? 鏈接速度為FS 12Mbps HS 480Mbps,當然實際上是達不到這個速度的,。不過延遲那是相當?shù)牡汀?/p> Q 可以干嘛? 臨時取代一些調(diào)試麻煩得網(wǎng)絡(luò)接口(WIFI,,以太網(wǎng))來調(diào)試一些網(wǎng)絡(luò)應(yīng)用,也可以用來給有USB卻沒有以太網(wǎng)的芯片擴展一種上網(wǎng)方式,,也可以內(nèi)置一個web服務(wù)器用于配置設(shè)備等等等等....發(fā)揮你的想象力,。
RT-Thread線上活動 1,、【RT-Thread能力認證考試12月——RCEA】經(jīng)過第一次考試的驗證,RT-Thread能力認證得到了更多社區(qū)開發(fā)者和產(chǎn)業(yè)界的大力支持,!(點此查看)如果您有晉升、求職,、尋找更好機會的需要,,有深入學(xué)習(xí)和掌握RT-Thread的需求,,歡迎垂詢/報考! 能力認證官網(wǎng)鏈接:https://www./page/rac.html(在外部瀏覽器打開) 立即報名 #題外話# 喜歡RT-Thread不要忘了在GitHub上留下你的STAR哦,,你的star對我們來說非常重要!鏈接地址:https://github.com/RT-Thread/rt-thread |
|
來自: 西北望msm66g9f > 《培訓(xùn)》