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