日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

TCP/IP Over USB 用USB傳輸以太網(wǎng)數(shù)據(jù),給你的MCU加個(gè)網(wǎng)卡

 西北望msm66g9f 2019-07-30

RNDIS和ECM的熱插拔問題

最近修復(fù)了一波 RNDIS 和 ECM的熱插拔通信異常問題,添加了通過menuconfig配置RNDIS delay linkup的配置選項(xiàng)。問題修復(fù)點(diǎn)如下:

RNDIS:

  • 當(dāng)存在通信鏈接時(shí) 熱插拔 Windows會(huì)發(fā)送REMOTE_NDIS_RESET_MSG,該指令未實(shí)現(xiàn),現(xiàn)已實(shí)現(xiàn)。

  • 當(dāng)存在通信鏈接時(shí) 熱插拔 eth_tx線程大幾率會(huì)死等傳輸完成的信號(hào)量通知,導(dǎo)致LWIP卡死。

  • 當(dāng)存在通信鏈接時(shí) 熱插拔 eth_rx的接收緩沖未重置,導(dǎo)致接收數(shù)據(jù)異常。

ECM:

  • 當(dāng)存在通信鏈接時(shí) 熱插拔 eth_tx線程大幾率會(huì)死等傳輸完成的信號(hào)量通知,導(dǎo)致LWIP卡死。

  • 當(dāng)存在通信鏈接時(shí) 熱插拔 eth_rx的接收緩沖未重置,導(dǎo)致接收數(shù)據(jù)異常。

現(xiàn)已測試stm32f469i-discovery / LWIP2.0.2 / Windows 10 1903下 RNDIS,iperf傳輸過程中反復(fù)熱插拔后功能正常, delay linkup宏開啟前后功能正常,連續(xù)熱插拔功能正常。

現(xiàn)已測試stm32f469i-discovery / LWIP2.0.2 / MacOS Mojave 10.14.2下 ECM,iperf傳輸過程中反復(fù)熱插拔后功能正常。

相關(guān)Pull Request

https://github.com/RT-Thread/rt-thread/pull/2764(因微信無法插入外部鏈接,請(qǐng)將以上鏈接復(fù)制至外部瀏覽器打開)

關(guān)于NDIS

RNDIS全稱Remote NDIS 是Microsoft定義的一種USB以太網(wǎng)卡模型,說到RNDIS 必須要說說另一個(gè)東西,NDIS。

NDIS(Network Driver Interface Specification)是網(wǎng)絡(luò)驅(qū)動(dòng)程序接口規(guī)范的簡稱。它橫跨傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層,定義了網(wǎng)卡或網(wǎng)卡驅(qū)動(dòng)程序與上層協(xié)議驅(qū)動(dòng)程序之間的通信接口規(guī)范,屏蔽了底層物理硬件的不同,使上層的協(xié)議驅(qū)動(dòng)程序可以和底層任何型號(hào)的網(wǎng)卡通信。NDIS為網(wǎng)絡(luò)驅(qū)動(dòng)程序創(chuàng)建了一個(gè)完整的開發(fā)環(huán)境,只需調(diào)用NDIS函數(shù),而不用考慮操作系統(tǒng)的內(nèi)核以及與其他驅(qū)動(dòng)程序的接口問題,從而使得網(wǎng)絡(luò)驅(qū)動(dòng)程序可以從與操作系統(tǒng)的復(fù)雜通訊中分離,極大地方便了網(wǎng)絡(luò)驅(qū)動(dòng)程序的編寫。另外,利用NDIS的封裝特性,可以專注于一層驅(qū)動(dòng)的設(shè)計(jì),減少了設(shè)計(jì)的復(fù)雜性,同時(shí)易于擴(kuò)展驅(qū)動(dòng)程序棧。

而RNDIS 就是NDIS這種規(guī)范基于USB的一種具體實(shí)現(xiàn),RNDIS目前可以在Windows7 or later(講道理Vista也是可以的)上自動(dòng)加載驅(qū)動(dòng),無需第三方驅(qū)動(dòng)。而對(duì)于Linux和MacOS來說RNDIS則需要安裝第三方驅(qū)動(dòng)了,部分Linux發(fā)行版內(nèi)置了RNDIS的驅(qū)動(dòng)(誰叫Windows用的人多了)。至于Linux Mac 下如何使用RNDIS這里不跟你多解釋,因?yàn)槲姨峁┝肆硪环N解決方案--------CDC-ECM。

CDC-ECM(Ethernet Networking Control Model)是USB聯(lián)盟定義的標(biāo)準(zhǔn)USB以太網(wǎng)控制器模型(很遺憾,Windows下沒有驅(qū)動(dòng)),絕大部分Linux發(fā)行版和MacOS都支持該種USB設(shè)備的驅(qū)動(dòng)。這里講的絕大多數(shù)包括了各種pi,當(dāng)然如果你自己編譯的linux手動(dòng)剔除了這份驅(qū)動(dòng)就沒辦法了。

下載RNDIS/ECM白皮書請(qǐng)由此入:

https://www./qa/thread-11718-1-1.html(因微信無法插入外部鏈接,請(qǐng)將以上鏈接復(fù)制至外部瀏覽器打開)

如何在RT-Thread上使用這個(gè)功能

要用這玩意 首先你的RT-Thread bsp得有usb驅(qū)動(dòng) -- 推薦大家使用下面的bsp或者仿照下面的bsp對(duì)STM32F4系列的USB驅(qū)動(dòng)進(jìn)行快速移植。(超簡單)

bsp/stm32/stm32f469-st-disco

有正點(diǎn)原子 L4 IOT Board的朋友也可以用相關(guān)的bsp。

大概的操作步驟如下:

1) 如果你的bsp的menuconfig有配置USB的驅(qū)動(dòng)加載開關(guān)(比如bsp/stm32/stm32f469-st-disco),那么把它打開。

這里不是每一個(gè)bsp都有此配置,有些bsp直接通過usb組件是否開啟來判斷是否使用usb驅(qū)動(dòng)

2) 把LWIP打開

這里必須先打開LWIP才能在USB Device找到RNDIS/ECM

3)把RNDIS/ECM打開

RNDIS:

ECM:

4)編譯下載插USB。

然后你的Windows/Mac/Linux 上就能看到網(wǎng)卡了。是不是超簡單。

FAQ

Q

為什么設(shè)備上不了網(wǎng)?

因?yàn)槟阒皇呛碗娔X連起來了而已,并沒有路由器,甚至沒有DHCP,Windows上可以使用網(wǎng)絡(luò)共享或者網(wǎng)絡(luò)橋接的方式,如果是用Linux的人。我估計(jì)也不用我多嗶嗶。

Q

如果想要板子做DHCP怎么辦?

menuconfig里面開DHCP 然后在網(wǎng)卡linkup后調(diào)用 dhcpd_start('u0'); ECM的代碼里面做了如果開DHCP的選項(xiàng)就會(huì)自動(dòng)啟動(dòng)DHCP服務(wù)器,可以做參考。

Q

速度怎么樣?

鏈接速度為FS 12Mbps HS 480Mbps,當(dāng)然實(shí)際上是達(dá)不到這個(gè)速度的。不過延遲那是相當(dāng)?shù)牡汀?/p>

Q

可以干嘛?

臨時(shí)取代一些調(diào)試麻煩得網(wǎng)絡(luò)接口(WIFI,以太網(wǎng))來調(diào)試一些網(wǎng)絡(luò)應(yīng)用,也可以用來給有USB卻沒有以太網(wǎng)的芯片擴(kuò)展一種上網(wǎng)方式,也可以內(nèi)置一個(gè)web服務(wù)器用于配置設(shè)備等等等等....發(fā)揮你的想象力。

 

RT-Thread線上活動(dòng)

1、【RT-Thread能力認(rèn)證考試12月——RCEA】經(jīng)過第一次考試的驗(yàn)證,RT-Thread能力認(rèn)證得到了更多社區(qū)開發(fā)者和產(chǎn)業(yè)界的大力支持!(點(diǎn)此查看)如果您有晉升、求職、尋找更好機(jī)會(huì)的需要,有深入學(xué)習(xí)和掌握RT-Thread的需求,歡迎垂詢/報(bào)考!

能力認(rèn)證官網(wǎng)鏈接:https://www./page/rac.html(在外部瀏覽器打開)

立即報(bào)名

#題外話# 喜歡RT-Thread不要忘了在GitHub上留下你的STAR哦,你的star對(duì)我們來說非常重要!鏈接地址:https://github.com/RT-Thread/rt-thread

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多