本文將借助飛凌嵌入式OK3568-C開(kāi)發(fā)板為大家介紹實(shí)現USBNET模式的方法,在這之前需要先知道什么是USB Gadget——USB Gadget是指所開(kāi)發(fā)的電子設備以USB從設備的模式通過(guò)USB連接到主機。舉個(gè)例子:將手機通過(guò)USB線(xiàn)插入PC后,手機就是USB Gadget。同理,在本文的操作中就是將手機替換成了OK3568-C開(kāi)發(fā)板
Gadget框架提出了一套標準API,在底層,USB設備控制器(UDC)驅動(dòng)則實(shí)現這一套API,不同的UDC(通常是SoC的一部分)需要不同的驅動(dòng), 甚至基于同樣的UDC的不同板卡也需要對代碼進(jìn)行修改。我們想要實(shí)現USBNET也需要驅動(dòng),它的名字叫做RNDIS。RNDIS驅動(dòng)在內核中是存在的,只需要找到配置項并編譯進(jìn)內核即可。 首先進(jìn)入源碼kernel目錄,進(jìn)入menuconfig圖形配置界面
![]()
進(jìn)入menuconfig時(shí)需要指定環(huán)境,不然直接執行make menuconfig進(jìn)入的圖形配置界面為X86架構。如下圖進(jìn)入的為ARM架構是正確的圖形配置界面:
![]()
按 /,可以進(jìn)入搜索界面:
![]()
直接搜索rndis,找到寫(xiě)有USB Gadget字樣的目錄,可以看到有多個(gè)路徑,可以直接進(jìn)入USB Gadget目錄下去看,那個(gè)就是配置RNDIS的選項。
![]()
經(jīng)過(guò)尋找最終路徑如下圖所示:
![]()
將RNDIS驅動(dòng)開(kāi)啟,并選中一些網(wǎng)絡(luò )協(xié)議配置,如下圖圈中所示:
![]()
找到USB Gadget precomposed configurations,將RNDIS編譯進(jìn)內核(如果選擇編譯成模塊,單獨編譯內核不會(huì )生成 .ko文件,為了省去繁瑣掛載步驟,本篇就將RNDIS編譯進(jìn)內核)。
![]()
配置完成,選擇Exit按鍵直到退出,“是否保存”選擇yes即可:
![]()
返回源碼目錄進(jìn)入build.sh腳本,注釋掉defconfig生成.config文件的命令,使menuconfig配置生效,注釋位置如下:
![]()
保存退出,單獨編譯內核,在源碼目錄下執行./build.sh kernel。編譯完成之后會(huì )在kernel目錄下生成boot.img文件。
![]()
單步更新鏡像使用瑞芯微官方提供的燒寫(xiě)工具—— RKDevTool。按住Recovery鍵按Reset,直到燒寫(xiě)工具顯示發(fā)現一個(gè)LOADER設備后松開(kāi)Recovery鍵。
![]()
替換圖中位置,點(diǎn)擊設備分區表,完成后,點(diǎn)擊執行,設備重啟后,即為燒錄完成,右側也會(huì )有燒錄進(jìn)度。開(kāi)發(fā)板重啟后,ifconfig -a查看可以看到生成usb0節點(diǎn)。
![]()
利用Linux USB Gadget設備驅動(dòng)可以實(shí)現一些比較有意思的功能: 1. 一個(gè)嵌入式產(chǎn)品中的某個(gè)存儲設備,或是一個(gè)存儲設備的某個(gè)分區,可以作為一個(gè)U盤(pán)被PC識別; 2. 一個(gè)嵌入式設備通過(guò)USB連接到PC后,在PC端會(huì )出現一個(gè)新的網(wǎng)絡(luò )連接,在嵌入式設備上也會(huì )有一個(gè)網(wǎng)卡設備,你可以配置它們的IP地址,并進(jìn)行網(wǎng)絡(luò )通訊,俗稱(chēng)USBNET。
此次使用的是USB3.0接口,因此需要detect激活Type-C 5V轉3.3V Type-A,硬件改動(dòng)為p40的pin1連接c23的正極。將播碼開(kāi)關(guān)撥至ON,插入雙公頭USB線(xiàn);強制使USB輸出為device echo peripheral > /sys/devices/platform/fe8a0000.usb2-phy/otg_mode 打印信息如圖所示:
![]()
可以在設備管理器網(wǎng)絡(luò )適配器上看到這個(gè)節點(diǎn),配置一個(gè)IP
![]()
查看網(wǎng)絡(luò )連接可以看到一個(gè)未識別網(wǎng)絡(luò ),將這個(gè)也配置上IP,注意需要跟OK3568-C開(kāi)發(fā)板配置的IP在同一網(wǎng)段:
![]()
使用OK3568-C開(kāi)發(fā)板去ping剛才電腦配置的IP,發(fā)現可以ping通。
![]()
通過(guò)以上信息可以看出,OK3568-C開(kāi)發(fā)板已實(shí)現USBNET功能,實(shí)現網(wǎng)絡(luò )共享。
|