新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 嵌入式系統(tǒng)中USB主機控制器的設計

嵌入式系統(tǒng)中USB主機控制器的設計

作者: 時間:2009-12-16 來源:網(wǎng)絡 收藏

框架數(shù)據(jù)流

框架代碼執(zhí)行過程是這樣的:上電復位、微處理器對所有寄存器和計數(shù)器以及設備結構進行初始化,然后進入如下的循環(huán):

1.檢查端口是否存在狀態(tài)改變(設備插入或去除)。

2.檢查TD處理器,并獲得兩個SIE上運行的所有TD狀態(tài)信息。

3.查看運行設備驅動程序列表并執(zhí)行每個程序的運行函數(shù)。

檢查端口以了解狀態(tài)變化需要檢查變量的改變,如果發(fā)生變化,可通過端口變化中斷處理程序設定變量。如果端口發(fā)生改變,將執(zhí)行枚舉代碼進行處理。

通過集線器至的中斷傳輸完成相連集線器變化值檢查,如果發(fā)生設備添加或去除,它們將像上面那樣枚舉出來。發(fā)現(xiàn)新設備時,需要找到設備驅動程序然后裝入。根據(jù)設備尋找設備驅動程序的方法有很多種,框架代碼將首先嘗試將某驅動程序與某設備的供應商ID以及產(chǎn)品ID進行匹配,但只有存在特定的制造商且特定設備在特定驅動程序中運行這種方法才有效。如果沒有實現(xiàn)匹配,框架代碼會嘗試對設備的種類和子類進行匹配,這可以利用更普通的驅動程序與設備匹配。

設備插入和去除檢查還有兩項額外的任務。如果連接的設備是集線器,則必須對其端口進行檢查,以查看它們是否帶有設備。如果去除的設備是集線器,那么所有與之連接的設備也必須去除。

通過中斷傳輸還可以檢查來自相連鍵盤和鼠標設備的新數(shù)據(jù),這些傳輸每10毫秒種發(fā)生一次,由TD處理器安排時序。任務完成后,TD處理器將傳輸控制轉給回調函數(shù),這時可提取鍵盤和鼠標數(shù)據(jù),并送至應用層。

構建應用

現(xiàn)在介紹如何構建一個簡單的控制鍵盤和鼠標的,該方案使用基于處理器的USB主機,處理器的代碼包含框架和應用固件。首先要做的是確定希望支持設備的數(shù)量和類型,確定設備數(shù)量后,可據(jù)此分配URB和驅動程序空間,通過修改名為fwxcfg.h的“個性化”文件完成URB分配。

每個鍵盤、鼠標或集線器均需要一個URB來處理傳輸中重復出現(xiàn)的中斷。此外,在枚舉和其它USB控制傳輸過程中,URB被分配并隨后釋放。一個較好的經(jīng)驗是為支持的每個設備分配兩個URB,一個用于傳輸中重復出現(xiàn)的中斷,另一個則用于任何可能的控制傳輸,這些傳輸可能發(fā)生在設備枚舉或設備狀態(tài)檢查過程中。雖然每次只能處理一個控制傳輸,但框架可將其它傳輸排隊,支持的URB數(shù)量應該等于所支持設備數(shù)量的兩倍。

接下來,需要為鍵盤和鼠標創(chuàng)建驅動程序。由于這些設備的USB功能非常相近,所以兩個設備可以使用一個驅動程序。該驅動程序可稱為hid_driver(用于人機界面設備的驅動程序)。下一步是在驅動程序內(nèi)添加開始、停止以及運行函數(shù),以及查找驅動程序的設備種類編碼,還需要將驅動程序函數(shù)的名稱添加進文件drvrlist.h。包含集線器和hid driver的驅動程序聲明如下: #define FWX_DRIVER_LIST {hid_driver, hubclass_driver}

hid_driver啟動函數(shù)將分配傳輸中重復出現(xiàn)的中斷,以獲得鍵盤和鼠標數(shù)據(jù)。該函數(shù)內(nèi)的編碼將獲取數(shù)據(jù)并將數(shù)據(jù)傳給編碼應用層;停止函數(shù)將釋放重復出現(xiàn)的中斷傳輸,并通知應用層設備已被去除;運行函數(shù)用來檢查來自應用代碼的輸入指令。

然后需要為枚舉通報函數(shù)添加一些代碼,枚舉通報函數(shù)是枚舉代碼使用的回調函數(shù),用于報告設備枚舉狀態(tài)并處理可能的枚舉錯誤。該代碼可將新的枚舉設備信息傳給應用層。

在這里對集線器提供支持很容易,不需要添加任何代碼,也不需要編寫驅動程序,因為框架已包含驅動程序。所要做的是更改fwxcfg.h中的語句,即將

#undef FWX_INCLUDE_HUB_SUPPORT

改為

#define FWX_INCLUDE_HUB_SUPPORT

并將文件hubclass.c添加進項目形成文件,其余事務由框架處理。

本文小結

盡管與PC相比,USB主機在計算資源和經(jīng)驗方面存在不足,但開發(fā)人員仍然可以較為簡單地將USB功能加入到系統(tǒng)中。現(xiàn)有多種用于實現(xiàn)這種功能的USB主機IC可供選擇,用戶可購買或自行開發(fā)USB主機堆棧和實時操作系統(tǒng)。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 3 下一頁

評論


相關推薦

技術專區(qū)

關閉