新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于RTEMS的USB設備驅動程序設計

基于RTEMS的USB設備驅動程序設計

作者: 時間:2014-06-05 來源:網(wǎng)絡 收藏

引 言

本文引用地址:http://www.butianyuan.cn/article/247855.htm

在航空航天和工業(yè)控制等一些嵌入式應用領域,要求控制系統(tǒng)具有嚴格的實時性,能夠為任務提供一個可預見的響應時間。一些實時操作系統(tǒng)的引入可以有效地滿足任務的實時性要求,如和 VxWorks。在這樣的系統(tǒng)中,如果系統(tǒng)通信模塊的通信速度不高,或者通信質量不可靠,就會影響整個系統(tǒng)的實時性能。通用串行總線()由于其高帶寬、高可靠性的特點,必將越來越多地應用到這類系統(tǒng)中。然而由于多數(shù)實時操作系統(tǒng)目前并未提供主機和設備的驅動,而且協(xié)議相對于其他串行通信協(xié)議(RS232、SPI等)復雜度較高,使得USB驅動程序的開發(fā)難度較大。

1 及其設備管理機制

1.1 簡介

RTEMS(Real—Time Executive for MultiprocessorSystem)是一個為嵌入式應用系統(tǒng)提供高性能支持環(huán)境的實時操作系統(tǒng)內核,早期用于美國軍方的導彈系統(tǒng)。RTEMS的實時性能高于RTLinux,與VxWorks相比也毫不遜色。

RTEMS具有如下特點:支持多任務;支持同構或異構多處理器系統(tǒng);支持事件驅動、基于優(yōu)先級、占先的調度算法,具有單調速率調度算法;支持任務間的通信和同步;支持優(yōu)先級繼承算法,快速響應的中斷管理;支持動態(tài)存儲器分配,具有用戶配置的能力。

RTEMS是微內核搶占式的實時操作系統(tǒng),具有實時性能好、運行速度快和可靠性高等優(yōu)點,在通信、航空航天、工業(yè)控制等領域有著非常廣泛的應用。

1.2 設備管理機制

操作系統(tǒng)的一個重要功能就是為應用程序提供一個統(tǒng)一的I/O設備的虛擬接口,使用戶程序能夠按照相同的模式對設備進行操作,無需關心每個設備的具體特性。

RTEMS系統(tǒng)提出了一種設備抽象模型,使用這種模型,應用程序通過相同的I/O系統(tǒng)調用塒沒備進行操作,而不必關心實現(xiàn)細節(jié)。RTEMS的I/O管理器提供的系統(tǒng)調用包括:

◆rIems_io_initialize,初始化一個設備驅動程序;

◆rtems_io_register_name,注冊一個設備名;

◆rIems_io_lookup_name,根據(jù)設備名查找主/副設備號;

◆rterns_io_open,打開一個設備;

◆rteros_io_close,關閉一個設備;

◆rtems_io_read,從一個設備中執(zhí)行讀操作;

◆rtems_io_write,向一個設備中執(zhí)行寫操作;

◆rteros_io_control,特殊的設備服務。

RTEMS系統(tǒng)使用設備驅動程序地址表來提供這種抽象,在這個表中提供了每個標準I/O請求處理函數(shù)的入口地址。RTEMS使用設備的主設備號和副設備號來定位它的驅動程序。主設備號是設備驅動程序地址表中相應設備表項的索引,用于選擇某個設備驅動程序;副設備號的用途則依賴于具體的設備驅動程序,通常用于在相同設備驅動程序所控制的若干設備中指定特定的設備。在RTEMS系統(tǒng)中,每個特定的設備都有與之相關聯(lián)的設備名稱。RTEMS系統(tǒng)內核中包含了一個 “設備驅動程序文件名表”。這個表將設備文件名與設備的主、副設備號聯(lián)系起來,應用程序可以使用注冊設備名查找與一個設備相關聯(lián)的主設備號/副設備號,進而通過標準I/0系統(tǒng)調用和主設備號/副設備號在設備驅動程序地址表中找到該設備的驅動程序的入口函數(shù)地址,對設備進行操作。

RTEMS系統(tǒng)在初始化時,會調用各個設備驅動程序的初始化函數(shù),初始化所有的設備驅動程序。當應用程序需要對設備進行操作時,會執(zhí)行有關設備管理的 I/O系統(tǒng)調用,RTEMS會根據(jù)該系統(tǒng)調用判斷應該選擇的設備驅動程序的入口函數(shù)。由應用程序傳遞給RTEMS的信息,將被傳遞給適當?shù)脑O備驅動程序入口函數(shù)。

2 USB通信協(xié)議簡介

USB(Universal Serial Bus,通用串行總線)是一種在主機和設備之間進行串行數(shù)據(jù)傳輸?shù)耐ㄐ艆f(xié)議。USB接口由于速度快、可靠性高、功耗低等優(yōu)點,已成為當前微機的必備接口,同時也被廣泛應用于嵌入式系統(tǒng)設計中心。USB的物理拓撲為分層的星型結構,由3部分組成——USB主機、USB集線器和USB設備,如圖l所示。

 

 

USB主機是USB系統(tǒng)的主控組件,控制總線上所有USB設備和USB集線器的數(shù)據(jù)通信過程,所有的數(shù)據(jù)傳輸都是由USB主機端發(fā)起的。

USB主機控制器的復雜度要遠遠高于USB設備,典型的USB主機控制器大約需要10 000個門電路,而設備端的USB接口大約需要1 500個門電路。正是由于這種設計復雜度的不平等,使得USB設備得以在短時間內得到廣泛應用。

3 RTEMS下USB設備驅動程序的設計

3.1 概 述

嵌入式系統(tǒng)的硬件環(huán)境千差萬別,各類USB設備的類規(guī)范也各不相同。為了確保程序的可移植性和可擴展性,將程序設計為二層結構:硬件抽象層和USB設備類驅動層,如圖2所示。

 

 

硬件抽象層封裝對底層USB設備控制器的操作和對中斷的處理,通過一些標準方法,為上層提供一個底層的硬件抽象,便于移植。USB設備類驅動層包含對標準命令和對特定設備類命令的處理。

3.2 硬件抽象層

硬件抽象層對USB設備控制器進行操作,實現(xiàn)以下功能:設備狀態(tài)管理、端點狀態(tài)管理和中斷管理。

3.2.1 設備狀態(tài)管理

每一個USB設備在正常工作前必須完成主機對它的配置過程,即總線枚舉。USB設備在總線上共有6種狀態(tài):接入態(tài)、加電態(tài)、默認態(tài)、地址態(tài)、配置態(tài)和掛起態(tài)。

硬件抽象層提供USB_Init、USB_Attach、USB_Disat—tach、USB_Connect、USB_Disconnect、 USB_SetAddress、USB_ResetAddress、USB_SetConfiguration和 USB_ResetConfiguration九個函數(shù)對設備的狀態(tài)進行管理。一般來說,設備在總線上的狀態(tài)變化都會由中斷通知設備,中斷服務程序根據(jù)中斷類型和當前狀態(tài)通過提供的功能接口對沒備進行相應的操作,確保設備能夠完成枚舉過程÷順利進入配置態(tài)。設備在硬件抽象層函數(shù)控制下的在總線上的狀態(tài)機如圖3所示。由于掛起與恢復無需軟件干預,因此沒有在狀態(tài)機中描述這一狀態(tài)。


上一頁 1 2 下一頁

關鍵詞: RTEMS USB

評論


相關推薦

技術專區(qū)

關閉