近日,美國一名學(xué)者研發(fā)出了一種全新的嵌入式開發(fā)系統(tǒng),該系統(tǒng)被命名為μC/OS-II 。這個(gè)系統(tǒng)當(dāng)中的絕大多數(shù)代碼使用ANSIC 進(jìn)行的編寫。能夠用于8 位、16 位、32 位、甚至64 位微處理器、微控制器、數(shù)字信號處理器等,具有操作系統(tǒng)最基本最核心的功能,非常適于在小型系統(tǒng)和片上系統(tǒng)(SOC)中使用。
USB 驅(qū)動程序的設(shè)計(jì)
這個(gè)系統(tǒng)為開發(fā)者提供了非常多的實(shí)時(shí)操作內(nèi)核。通常開發(fā)者在進(jìn)行系統(tǒng)操作時(shí)需要自己來編寫外圍器件的驅(qū)動程序。以使外圍器件能在操作系統(tǒng)的協(xié)調(diào)下更好的為用戶服務(wù)。為了使軟件可移植性強(qiáng),易維護(hù),采用分層的方法編寫USB的驅(qū)動程序。綜合考慮USB 協(xié)議、USB 硬件接線、μC/OS-II的結(jié)構(gòu)來進(jìn)行分層,下表所列為USB 驅(qū)動程序分層結(jié)構(gòu)。
USB系統(tǒng)軟件的設(shè)計(jì)
嵌入式設(shè)計(jì)中的USB系統(tǒng)設(shè)計(jì)與系統(tǒng)的業(yè)務(wù)和應(yīng)用模塊聯(lián)系非常緊密。在μC/OS-Ⅱ?qū)SB進(jìn)行初始化時(shí),不但要對USB 硬件接口初始化,還需要對其相關(guān)軟件進(jìn)行初始化,比如:設(shè)置中斷處理函數(shù),以及單獨(dú)創(chuàng)建一個(gè)TaskSetup 任務(wù)以完成上位機(jī)對USB 系統(tǒng)主機(jī)的枚舉。中斷處理過程采用的是非向量中斷的方式,首先由中斷狀態(tài)寄存器的值判斷中斷產(chǎn)生的原因,然后由不同的原因設(shè)置不同的中斷處理函數(shù)。如果是數(shù)據(jù)中斷話則在相應(yīng)的中斷處理函數(shù)中發(fā)送對應(yīng)端點(diǎn)的信號量,這樣USB 驅(qū)動程序中讀寫接口才能成功被調(diào)用。
各種隨身智能數(shù)碼設(shè)備的誕生為人們帶來了便利,但眾多設(shè)備之間的數(shù)據(jù)互連傳遞正在成為嵌入式開發(fā)的難題。USB 是現(xiàn)今PC領(lǐng)域廣泛運(yùn)用的總線接口技術(shù),在一些嵌入式系統(tǒng)中,人們希望有USB 的出現(xiàn),然而和系統(tǒng)其他模塊相比,USB 模塊顯得更加的復(fù)雜。本文詳細(xì)闡述了設(shè)計(jì)一個(gè)USB 主機(jī)系統(tǒng)的過程,綜合考慮USB 協(xié)議,USB 硬件連接和μC/OS-II 系統(tǒng)使軟件易于維護(hù),移植型強(qiáng)。