在協(xié)議棧的最底部是USB主控制器USB HC(USBHost Controller),這是主系統(tǒng)中控制每一個USB設(shè)備的硬件部分?谇爸饕袃纱箢怳SB主控制器:一種是通用主控制器接口UHCI(Universal Host Controller Inter-face),另一種是開放主控制器接口OHCI(Open HostController Interface)。硬件廠商一般根據(jù)這兩個規(guī)范設(shè)計USB主控制器。對于每一類型的主控制器都有一個與硬件獨立的USB主控制器驅(qū)動器HCD(Host ControllerDriver)。WindRiver公司提供了兩類驅(qū)動:usbHedUhciLib(UHCl主控制器庫)和usbHcdOhciLib(OHCI主控制器庫)。
USB主驅(qū)動器USBD(USB host Driver)和HCD之間的接口允許一個或超過一個的底層主控制器,而且WindRiver公司的USBD能夠同時連接多個USB HCD。這樣的設(shè)計特點可以使開發(fā)者建立復(fù)雜的USB系統(tǒng)。USBD是在HCD之上的與硬件獨立的模塊。USBD管理每一個與主機(jī)相連的USBD設(shè)備,向更高層次提供了可與USBD設(shè)備通信的路徑。它還負(fù)責(zé)自動處理USBD電力管理以及USBD帶寬管理;而且,USBD還管理USBHub。Hub能否正確工作,是對USBD進(jìn)行評價的標(biāo)準(zhǔn)之一,因此WindRiver公司的USBD設(shè)計者要使USBD透明地實現(xiàn)Huh的功能。這意味著USBD還能處理USBHub和設(shè)備的動態(tài)插拔。嵌入式算it行業(yè)嗎, ?低暻度胧矫嬖囶}, 深圳嵌入式一般工資, 嵌入式開發(fā)需求少, 嵌入式瀏覽器的發(fā)展, 對嵌入式課程的認(rèn)識, 嵌入式臉盆怎么粘, 做嵌入式工程師, 木桶spa嵌入式, 高考中嵌入式, 嵌入式金本電工, 嵌入式擾動是指, 嵌入式開發(fā)教材, 嵌入式開發(fā)職業(yè)認(rèn)知, vr中的嵌入式, 嵌入式ai上市公司, 硬件嵌入式開發(fā)經(jīng)歷, 嵌入式在線視頻, 嵌入式編程能力提升, rust嵌入式, 歐普嵌入式卡簧, 表格統(tǒng)計圖嵌入式,
USB客戶模塊在USBD主驅(qū)動協(xié)議棧的頂端。USB類驅(qū)動(USB Class Driver)是Client模塊的典型例子。USBD類驅(qū)動負(fù)責(zé)管理連接到USBD上的不同類型的設(shè)備,它們依靠USBD提供與每個設(shè)備的通信路徑。USBClient模塊的其他例子就是那些利用USBD與USB設(shè)備通信的應(yīng)用程序。
2 嵌入式實時系統(tǒng)優(yōu)盤啟動軟件程序設(shè)計
為實現(xiàn)對優(yōu)盤的操作,在基于VxWorks設(shè)計的嵌入式實時系統(tǒng)中,需要設(shè)計的程序包括:USB主控制器驅(qū)動器、USBD主驅(qū)動器、USB塊存儲設(shè)備驅(qū)動程序、文件系統(tǒng)的安裝以及應(yīng)用程序通過文件系統(tǒng)讀寫優(yōu)盤設(shè)備程序等,如圖3所示。故要實現(xiàn)從優(yōu)盤啟動,需要在bootConfig..c文件中的usrRoot函數(shù)巾添加4個函數(shù)。
。1)初始化USB主控制器的函數(shù)
初始化HCD(USB Host Controler Driver)函數(shù),即初始化SL81lHS并將其連接到指定總線上:LOCAL int fn-cAttach(pHRB_ATTACH pHrb)。
該函數(shù)詞用SL811Init()初始化SL811控制芯片。執(zhí)行函數(shù)taskSpawn(“tSl81lint“,0,0,0x4000,(FUNCPTR)intThread,(int)pHost,0,0,0,0,0,0。0,0,O),創(chuàng)建intThread任務(wù)對發(fā)生的中斷作出處理。
這里的intTbaead調(diào)用OSS_SEM_TAKE(pHost->in-tPendi
ng,interval)阻塞,與中斷服務(wù)程序intHandle同步。
調(diào)用函數(shù)processSl811hInterrupt()處理硬件中斷,讀取中斷狀態(tài)寄存器判斷中斷類型。
調(diào)用UHC_INT_CONNECT(pHost,intHandler,pHost,&s)函數(shù)連接SL811主控制器芯片中斷。UHC_INT_CONNECT是一個宏定義。
函數(shù)intHandler完成對中斷的處理,調(diào)用函數(shù)OSS_SEM_GIVE(pHost->imPending),釋放用于中斷和任務(wù)之間同步的二進(jìn)制信號量。