【摘要】隨著電子通信技術的不斷發展,嵌入式通信系統亟需一套完整的標準來規范驅動程序的設計。本文通過對Linux和Window操作系統環境下對驅動程序設計模型的對比,并結合嵌入式系統本身具有的特點,得出了一套基于嵌入式通信設備驅動程序設計的標準;并且在參考了對常用的設備驅動設計的思想之后,對嵌入式通信設備的驅動程序做了詳細分層,并在不同方面闡述了標準化制定的原因以及相關意義。
【關鍵詞】嵌入式通信設備;驅動程序設計;標準化
嵌入式系統的組成一般有外圍硬件設備、應用程序、嵌入式微處理器和嵌入式操作系統四個框架。隨著嵌入式技術的不斷發展,在移動通信、工業控制和信息家電等諸多領域都得到了良好的運用。為了滿足嵌入式系統發展和運用的需要,必須對嵌入式系統軟件的開發提出更高程度上的要求。
一、不同環境下嵌入式通信系統的設計標準
(一)在Linux操作系統環境下的驅動程序
在Linux操作系統環境下的驅動程序要求無論是什么樣的設備都要提供相同的接口,通常情況下是把一個設備映射成為一個設備文件。Linux驅動程序支持硬件設備下的兩個標準接口:
字符特別設備文件和塊特別設備文件。字符設備接口支持面向對象是字符的輸入/輸出端口的操作,規定輸入/輸出端口請求的長度一定是設備要求的基本塊長度的倍數。塊設備接口僅支持輸入/輸出上的操作,而能支持任意位置和長度上的輸入/輸出請求,能滿足隨機存取的要求。其中,Linux設備驅動程序能分成三個最主要的部分:中斷服務子程序、自動配置和初始化的子程序;服務于輸入/輸出請求的子程序。在Linux系統的內部,輸入/輸出數據的存取需通過一組特定的入口進行操作,這組入口就是由每個設備的驅動程序來提供的。
(二)在Windows操作系統環境下的驅動程序
微軟公司中的WindowsXP操作系統和Windows2000系列均采取了WDM技術設備的驅動程序模型,由原來的Window3.0到現在的WindowsXP和Windows2000,都依據其特定環境下的驅動程序制定了具有標準化的體系結構,同時為了滿足驅動程序開發時所要調用的程序,程序員提供了完全的系統數據結構和函數封裝。
在驅動程序中,每個硬件設備在WDM模型下都至少存在兩個驅動程序:總棧驅動程序和功能驅動程序。而設備還可能在過濾驅動程序下通過其選擇的特性來改變標準的設備驅動程序,其中驅動程序服務于同一個設備的被組成了一個鏈表,叫做設備棧。
例如:在一個驅動設備程序結構棧中,處于數據結構棧最底層的是物理設備對象的物理驅動程序,被用來描述物理總棧和設備之間的關系,在物理驅動程序上是功能設備對象的功能驅動程序,被用來描述設備中的邏輯功能。在功能驅動程序周圍,存在很多過濾設備對象中的過濾驅動程序。因而數據結構棧中的每一個對象都有其特定的驅動程序,其中物理設備對象屬于功能驅動程序,過濾驅動設備對象屬于過濾驅動程序。
(三)嵌入式通信設備下的驅動程序
不同于上述兩種操作環境下的驅動設備程序。
第一,嵌入式系統擁有高效的實時性,在應對外部突發事件時要求要以微秒級的速度相應,這就需要嵌入式操作系統不能有過于繁瑣的上下文切換和頻率過高的堆棧操作來響應事件操作,故一般嵌入式系統都沒有十分復雜的分層構造。
第二,通信設備下的嵌入式系統還具有可配置性和高可靠性以及可裁剪性。這些特性就要求整個系統要有微內核結構,才能保證模塊間具有很高的獨立性。上述的這些特性共同決定了嵌入式系統不具有供驅動程序調用的函數封裝和定義的設備驅動模型。但因在標準化的輸入/輸出設備中,只分為塊設備和字符設備,具有局限性,而嵌入式系統所使用的芯片大都為HDLC、TSI等,大部分屬于控制型的芯片,不屬于塊設備和字符設備,無法納入標準的輸入/輸出體系結構中。
第三,嵌入式的設備驅動程序直接面向的對象是硬件,任何對硬件的不正當操作都可能導致驅動系統發生崩潰。所以,在嵌入式系統的開發過程中,需要制定一套完善的驅動程序的規范指導工作人員的開發工作。
二、關于通信系統下嵌入式驅動程序設計的標準化探討
(一)嵌入式系統標準化設計的分層結構
制定關于通信系統下嵌入式驅動程序的標準,最終的目的是要制定出一套清晰的驅動程序的構造,用來統一上層應用以及用來管理程序接口,在一定程度上提高驅動程序的健壯性和可移植性,從而減少重復開發的可能。設備驅動程序在結構上可大致分為兩層:接口封裝層和硬件控制層。
接口封裝層是負責把硬件控制層封裝變為標準的應用接口,對其上層的管理軟件提供一致的接口。在接口封裝層,硬件設備中的差異大部分會被屏蔽掉,僅僅體現在應用程序接口的函數數據在結構上的解析;
接口硬件控制層就是把硬件中的各個模塊按功能分給各個控制的接口,處于驅動程序結構中的最底層,以此來完成對所有硬件設備的配置和控制工作。因硬件控制層是直接面向硬件的,因而與硬件的相關性最大,也是在所有結構中最為靈活的一層。硬件控制層將所有的硬件設備的作用體現在控制接口上,并由接口封裝層進行了調用。在考慮了硬件設備的多樣性之后,控制接口的設計并沒有明確的規范定義接口,但控制接口一般情況下可分為四類:硬件設備的屬性控制、硬件設備初始化、時鐘中斷和設備的輸入/輸出操作。
(二)嵌入式設備驅動程序標準化設計的要求
接口封裝層對上層軟件提供的所有操作都被叫做元語操作,要特別注意的是接口的重入問題。首先,對控制層的接口來說,均為同步非阻塞函數的調用,對輸入/輸出型設備在得到用戶允許的情況下可以提供阻塞的同步接口。嵌入式設備驅動程序一定要求能夠進行單獨編譯,設計時要優先引用操作系統下的抽象層的函數;其次,接口封裝層要盡可能對封裝操作系統庫函數做出調用;然后,驅動程序設計時要充分考慮硬件的特點,不考慮任何狀態下的同步。
三、結語
綜上所述,要想實現通信系統下嵌入式驅動程序的設計,需要一套驅動程序的標準來規范,因此提出基于嵌入式通信設備驅動程序設計標準化的構想,定義了較為清晰的分層結構,在一定程度上使得通信系統下的嵌入式驅動程序的設計變得愈加標準化和規范化。
參考文獻
[1]陳鑫旺,姜秀杰.基于嵌入式Linux和FPGA的數據通信系統設計[J].微計算機信息,2013(06).
[2]孫新賀,王曉輝,于月森.一種嵌入式Linux操作系統的構建方法[J].工業控制計算機,2011(01).
[3]張歡慶,高麗,宋承祥.基于ARM的嵌入式Linux交叉編譯環境的研究與實現[J].計算機與數字工程,2012(02).
[4]劉霞,劉士彩.嵌入式系統應用現狀及發展趨勢[J].科技信息,2011(02).