蘋果手機usb共享網(wǎng)絡(luò)調(diào)試
- 首先了解usb基礎(chǔ)知識,比如usb分為主設(shè)備和從設(shè)備進(jìn)行通信,
1.HOST模式下是只能做主設(shè)備,
2.OTG模式下是可以即做主又可以做從,主設(shè)備即HCD,從設(shè)備即UDC(USB_GADGET )。而我們這里調(diào)試的usb網(wǎng)絡(luò)共享屬于做從設(shè)備,
3.OTG控制器集成在CPU內(nèi),當(dāng)有OTG線插入OTG設(shè)備時產(chǎn)生中斷,中斷處理函數(shù)上半部通過讀取OTG控制器寄存器相應(yīng)值判斷OTG設(shè)備屬于Host(HCD)還是Gadget(UDC),下半部通過工作隊列由回調(diào)函數(shù)類似host->resume()或gadget->resume()重啟Host或Gadget控制器,resume()具體的實現(xiàn)過程在HCD或UDC相關(guān)驅(qū)動里實現(xiàn)
4.USB_GADGET介紹:
?Gadget源碼位于./drivers/usb/gadget/下,涉及的驅(qū)動程序和數(shù)據(jù)結(jié)構(gòu)相對較多。
USB Gadget 是運行在USB Peripheral 上配置USB功能的子系統(tǒng),正??杀幻杜e的USB設(shè)備至少有3層邏輯
層,有些功能還會在用戶空間多跑一層邏輯代碼。Gadget API就是具體功能和硬件底層交互的中間層。
從下到上,邏輯層分布為:
USB Controller: USB上最底層的軟件代碼,直接與硬件交互,并抽象出endpoint概念,用于管理數(shù)
據(jù)流的進(jìn)出,并供給USB Gadget層調(diào)用。
USB Gadget: 進(jìn)一步封裝USB Controller,調(diào)用USB Controller實現(xiàn)硬件無關(guān)的軟件配置。例如,在
ep0協(xié)議上運行各種class-specific協(xié)議來啟動特定功能,并管理端點的進(jìn)出信息等。
Upper Level: 大部分的Gadget驅(qū)動都會連接到具體的Linux驅(qū)動或框架,通過連接這些具體功能的驅(qū)
動或框架讓USB正常工作。
Additional Layers: 除開以上3層代碼,還有可能有其他多出的代碼層,比如kernel里的網(wǎng)絡(luò)協(xié)議棧,
也有可能是一個用戶上層應(yīng)用,通過調(diào)用POSIX系統(tǒng)的標(biāo)準(zhǔn)接口實現(xiàn),如 open() , close() ,
read()?and write() 。
- 內(nèi)核具體代碼修改及調(diào)試步驟
- 根據(jù)上面分析我們是要使能usb_gadget子系統(tǒng),修改menuconfig打開usb_gadget,如下:
?文章來源:http://www.zghlxwxcb.cn/news/detail-484495.html
需要設(shè)置我們插入設(shè)備的usb口輸入的usb控制器為otg模式如下:
?
- 通過代碼及資料知道,rk3399sdk是支持以下功能:
?ADB:是一種功能多樣的命令行調(diào)試工具,可以實現(xiàn)文件傳輸,Unix Shell登錄等功能
?UAC:通過USB虛擬標(biāo)準(zhǔn)PCM接口給Host設(shè)備,實現(xiàn)Device和Host之間音頻互傳功能
?UVC:做usb video camera供主設(shè)備獲取圖像數(shù)據(jù)
?RNDIS:提供基于USB的網(wǎng)絡(luò)接口規(guī)范,可以使用網(wǎng)絡(luò)命令(SSH等)實現(xiàn)Device和Host的數(shù)據(jù)交互
MTP:是由Microsoft提出的一套媒體文件傳輸協(xié)議,可以方便的在Device和Host之間共享媒體文件
UMS:給Host設(shè)備提供大容量外掛存儲
ACM:為USB虛擬串口,在Device/Host兩端生成TTY設(shè)備
- 我們這里usb網(wǎng)絡(luò)共享功能屬于rndis功能范疇,需要打開linux默認(rèn)支持的驅(qū)動:
?
- 我們內(nèi)核是kernel4.4帶的ipheth.c是不夠新的,我們通過反復(fù)對比測試,需要跟新驅(qū)動,去內(nèi)核官網(wǎng)下載5.1最新的代碼,進(jìn)行比較同步,部分diff如下:
?
- 因為我們的usb口是typec口,所以需要支持typec協(xié)議,這里配置fusb302默認(rèn)為DRP即可:
?
到此內(nèi)核代碼修改完成(Android手機usb網(wǎng)絡(luò)共享即可支持)。而想要能與蘋果手機進(jìn)行網(wǎng)絡(luò)共享,還需要專門針對蘋果手機的應(yīng)用程序去匹配。
- 應(yīng)用程序代碼添加
- 通過網(wǎng)絡(luò)以及github查詢,我們?nèi)粢С痔O果手機usb網(wǎng)絡(luò)共享需要添加如下庫和執(zhí)行程序:
?
具體package添加修改如下:
?
?
?
進(jìn)入系統(tǒng)后,默認(rèn)執(zhí)行 /usr/sbin/usbmuxd &即可支持我們設(shè)備接上蘋果手機即可通過usb網(wǎng)絡(luò)共享功能文章來源地址http://www.zghlxwxcb.cn/news/detail-484495.html
到了這里,關(guān)于buildroot系統(tǒng)調(diào)試蘋果手機網(wǎng)絡(luò)共享功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!