




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
在卩C/OSII下,設(shè)計了一個通用的設(shè)備管理模型, 稱為通用驅(qū)動框架,通過該 驅(qū)動框架,可以實現(xiàn)對硬件設(shè)備的統(tǒng)一、一致的管理,同時,也為上層應(yīng)用程序 提供了統(tǒng)一、一致的設(shè)備訪問在卩C/OS-II下,設(shè)計了一個通用的設(shè)備管理模型,稱為通用驅(qū)動框架,通過該驅(qū)動 框架,可以實現(xiàn)對硬件設(shè)備的統(tǒng)一、一致的管理,同時,也為上層應(yīng)用程序 提供了統(tǒng)一、一致的設(shè)備訪問接口,并在以 ARM7TDMI-為核心的LPC2210微控制器開發(fā)板上給 出了一例實現(xiàn)。1、概述 在嵌入式應(yīng)用系統(tǒng)中使用嵌入式操作系統(tǒng)可以提高應(yīng)用系統(tǒng)的開發(fā)效率和提升嵌入式應(yīng)用系統(tǒng)的穩(wěn)定可靠性, 因此,在嵌入式應(yīng)用系統(tǒng)中使用嵌入式操作系統(tǒng)將成為嵌入式 應(yīng)用系統(tǒng)的設(shè)計主流⑴。卩 C/OSII是由美國學者 Labrosse設(shè)計的一個優(yōu)秀的嵌入式實 時操作系統(tǒng)[2],它是一個源碼公開、可移植、可固化、可裁剪、占先式的實時多任務(wù)操 作系統(tǒng),目前已經(jīng)得到廣泛應(yīng)用。卩C/OSII提供了操作系統(tǒng)必須具備的基本功能,包括:任務(wù)管理、信號量管理、郵箱 管理、消息隊列管理、事件管理、時間管理、內(nèi)存管理,但它不提供設(shè)備管理和文件系 統(tǒng)管理,已有研究者對卩C/OSII進行了文件子系統(tǒng)功能擴展⑻。在實際應(yīng)用中,對系統(tǒng)設(shè)備的有效管理也是一個非常重要的任務(wù),因此,需要對卩C/OSII進行擴展,以實現(xiàn)這一功能。本文為卩C/OSII設(shè)計了一個對系統(tǒng)設(shè)備進行統(tǒng)一管理的通用驅(qū)動框架,在此框架下,可以屏蔽系統(tǒng)硬件的差異,在無約束地發(fā)揮硬件能力的前提下,為上層應(yīng)用提供了統(tǒng)一、一致的調(diào)用接口,從而實現(xiàn)了對系統(tǒng)設(shè)備的有效管理。API2、卩C/OSII下通用驅(qū)動框架的基本模型為了給上層應(yīng)用提供統(tǒng)一、 一致的系統(tǒng)設(shè)備調(diào)用接口, 需要對上層應(yīng)用程序?qū)ο到y(tǒng)設(shè)備 的訪問操作進行抽象,在這方面, Unix系統(tǒng)和Linux系統(tǒng)做得比較成功 [4][5]。本文借鑒 了Unix及Linux系統(tǒng)的成功經(jīng)驗,同時考慮到嵌入式操作系統(tǒng)的特殊性,為卩 C/OSII建立了如圖 1所示的通用驅(qū)動框架模型。 在圖1所示的通用驅(qū)動框架模型中, 共包括三 個層次: (1)上層訪問抽象接口層:在這一層,通過對設(shè)備訪問操作的抽象,為上層應(yīng)用提供 了5個訪問接口 API:UDFOpenUDFReadUDFWrite、UDFIoctrl、UDFCIose分別用于打開設(shè)備、讀設(shè)備、寫設(shè)備、設(shè)備控制和關(guān)閉設(shè)備。(圖i通用驅(qū)動框架模型)2)設(shè)備管理核心數(shù)據(jù)結(jié)構(gòu)層:這是通用驅(qū)動框架的核心,在這一層,為系統(tǒng)中的每個硬件設(shè)備分配唯一的設(shè)備名,上層應(yīng)用程序通過將設(shè)備名作為參數(shù)傳遞給UDFOpen函數(shù)實現(xiàn)對相應(yīng)設(shè)備的核心管理數(shù)據(jù)結(jié)構(gòu)的定位尋址,通過尋址,UDFOpe函數(shù)得到相應(yīng)設(shè)備的核心管理數(shù)據(jù)結(jié)構(gòu),并定位到相應(yīng)的設(shè)備驅(qū)動模塊,獲得相應(yīng)硬件設(shè)備的操作函數(shù)表,再通過上層訪問抽象接口層的其他接口函數(shù)UDFRea、UDFWrite、UDFIoctrl和UDFClose實現(xiàn)對設(shè)備的統(tǒng)一訪問控制。(3)硬件設(shè)備驅(qū)動模塊層:這一層是硬件設(shè)備驅(qū)動模塊功能的實現(xiàn)層,對各個硬件設(shè) 備的驅(qū)動在相應(yīng)的硬件設(shè)備驅(qū)動模塊中完成。各個硬件設(shè)備驅(qū)動模塊,原則上 需要實 現(xiàn)如下幾個函數(shù):devOpendevReaddevWrite 、devIoctrl和devClose分別完成相 應(yīng)設(shè)備的打開、讀、寫、控制和關(guān)閉,當然,可以根據(jù)具體設(shè)備的特性,只實現(xiàn)
5
個驅(qū)動函數(shù)的其中一部分,例如,如果某設(shè)備不支持
寫操作,那么就不用實現(xiàn)
devWrite函數(shù)。下面,對該模型的工作原理進行簡單描述:首先,在上層應(yīng)用程序可以訪問硬件設(shè)備之前,需要首先打開欲操作的設(shè)備,這可以通過調(diào)用“上層訪問抽象接口層”的
UDFOpen函數(shù)實現(xiàn)。上層應(yīng)用程序?qū)⒂蜷_的設(shè)備的設(shè)備名傳遞給
UDFOpe
函數(shù),
UDFOpe
函數(shù)通過該設(shè)備名從“設(shè)備管理核心數(shù)據(jù)結(jié)構(gòu)”中得 到相應(yīng)設(shè)備的核心數(shù)據(jù)結(jié)構(gòu),進而得 到相應(yīng)設(shè)備的操作函數(shù)表,并調(diào)用設(shè)備驅(qū)動模塊的 devOpen函數(shù)對設(shè)備進行初始化,當 完成相應(yīng)設(shè)備的初始化后,UDFOpe函數(shù)返回給上層應(yīng)用程序一個句柄,這個句柄是 上層應(yīng)用程序進行后續(xù)設(shè)備操作的基礎(chǔ)?,F(xiàn)在假設(shè)上層應(yīng)用程序需要從設(shè)備中讀取數(shù)據(jù),這是通過調(diào)用“上層訪問抽象接口層”的UDFRea(函數(shù)完成的:上層應(yīng)用程序?qū)DFOpei函數(shù)返回的設(shè)備句柄和相關(guān)的讀取參數(shù)傳遞給UDFRea(函數(shù),UDFRea(函數(shù)通過該句柄從“設(shè)備管理核心數(shù)據(jù)結(jié)構(gòu)”中得到相應(yīng)設(shè)備的核心數(shù)據(jù)結(jié)構(gòu),進而得到相應(yīng)設(shè)備的操作函數(shù)表,并調(diào)用設(shè)備驅(qū)動模塊的(evRea(函數(shù)對設(shè)備進行讀取操作,當完成讀取操作后,將讀取到的數(shù)據(jù)返回給上層應(yīng)用程序。其它的操作如UDFWrite、UDFIoctrl和UDFClose是類似的。3、卩C/OSII下通用驅(qū)動框架的實現(xiàn)3.1實現(xiàn)環(huán)境本文在以下的環(huán)境中實現(xiàn)了所設(shè)計的通用驅(qū)動框架:開發(fā)工具采用ARM公司的ADS1.2,目標板采用周立功公司開3、卩C/OSII下通用驅(qū)動框架的實現(xiàn)3.1實現(xiàn)環(huán)境本文在以下的環(huán)境中實現(xiàn)了所設(shè)計的通用驅(qū)動框架:開發(fā)工具采用ARM公司的ADS1.2,目標板采用周立功公司開發(fā)設(shè)計的以LPC2210為微控制器的SmartARM221開發(fā)板⑹。LPC2210是一顆以ARM7TDMI-為核心的微控制器,支持8位、16位、32位總線,具有豐富的片內(nèi)外設(shè),其中就包括兩個具有16BytesFIFO的UART接口和高速l2C接口。開發(fā)主機通過EasyJTAG連接目標板以建立交叉開發(fā)調(diào)試環(huán)境。3.2設(shè)備管理核心設(shè)計數(shù)據(jù)結(jié)構(gòu)的設(shè)計實現(xiàn)如上文所述:通用驅(qū)動框架以“設(shè)備管理核心數(shù)據(jù)結(jié)構(gòu)”為核心,它在模型中起著承上啟下的作用。設(shè)備管理核心數(shù)據(jù)結(jié)構(gòu)包括兩個結(jié)構(gòu):UDFFrameworl和UDFOperations,定義如下:type(efstruct{INT8U(eviceName[UDF_MAX_NAME];/設(shè)/備名INT8U(eviceType;//1—塊設(shè)備,2—字符設(shè)備;INT8UcanShare(;//0---不可共享使用,1—可共享使用INT16UopenCount;//UDFOperationsop;//
對于共享設(shè)備,此字段為打開次數(shù)計數(shù) ;設(shè)備驅(qū)動模塊提供的設(shè)備操作函數(shù)表;}UDFFramework;該結(jié)構(gòu)描述了系統(tǒng)設(shè)備的特性, 包括:設(shè)備名、設(shè)備類型、 共享設(shè)備的打開計數(shù)、 設(shè)備操作函數(shù)表等,通過建立 UDFFramewor結(jié)構(gòu)的一個數(shù)組來描述系統(tǒng)中的所 有設(shè)備,并通過設(shè)備名字段deviceName實現(xiàn)對設(shè)備操作函數(shù)表 UDFOperations 結(jié)構(gòu)的尋地定位。 UDFOperations結(jié)構(gòu)定義如下:typedefstruct{INT32S(*devOpen)(void*pd);INT32S(*devRead)(INT8S*buffer,INT32Ublen,INT32UlenToRead,INT8UwaitType);INT32S(*devWrite)(INT8S*buffer,INT32UlenToWrite,INT8UwaitType);INT32S(*devIoctl)(INT32Utoo,void*pd);INT32S(*devClose)(void*pd);}UDFOperations;該結(jié)構(gòu)定義了相應(yīng)設(shè)備的操作函數(shù)表, 具體的操作函數(shù)的實現(xiàn)在相應(yīng)的設(shè)備驅(qū)動 模塊中提供,通過使用通用驅(qū)動框架的設(shè)備驅(qū)動安裝函數(shù)可以將設(shè)備驅(qū)動模塊安 裝至UUDFFramewor結(jié)構(gòu)中。3.3 上層訪問抽象接口層設(shè)計實現(xiàn) 基于設(shè)備管理核心數(shù)據(jù)結(jié)構(gòu),上層訪問抽象接口層為上層應(yīng)用提供了 5個API函數(shù):UDFOpenUDFReadUDFWrite、UDFIoctrl、UDFClose本文以UDFOpen和UDFRead^例說明這些API函數(shù)的實現(xiàn)邏輯。UDFOpei函數(shù)的實現(xiàn)邏輯如下:INT32SUDFOpen(char*deviceName,void*pd){在UDFFramewor結(jié)構(gòu)數(shù)組中查找名為deviceName的設(shè)備;if(找到名為deviceName的設(shè)備){if(設(shè)備已被其它應(yīng)用打開 ){if(設(shè)備不可共享 )返回出錯信息并返回;else將設(shè)備的打開計數(shù)器 openCount加1}else{從UDFFramewor結(jié)構(gòu)中得到該設(shè)備的 UDFOperations結(jié)構(gòu)數(shù)據(jù)并調(diào)用該設(shè)備的 devOpen函數(shù)初始化該設(shè)備;將UDFFramewor結(jié)構(gòu)的數(shù)組下標作為句柄 handle返回給上層應(yīng)用程序;}}else{提示設(shè)備驅(qū)動未安裝并返回;}}UDFRea(函數(shù)的實現(xiàn)邏輯如下:INT32SUDFRead(INT32Uhandle,INT8S*buffer,INT32Ublen,INT32UlenToRead,INT8UwaitType){判斷參數(shù) handle句柄是否合法;if(handle合法)returnUDFF[handle].op.devRead(buffer,blen,lenToRead,waitType);else返回出錯信息并返回;}3.4 硬件設(shè)備驅(qū)動模塊的設(shè)計實現(xiàn)本文在該通用驅(qū)動框架下實現(xiàn)了驅(qū)動模塊。LPC2210的UART0
UART0S設(shè)備滿足
備和|2C16C550
接口設(shè)備CAT1025JI-30的EPROMK工業(yè)標準,具有 16Bytes的接收FIFO
備的和16Bytes的發(fā)送FIFO,本文采用 中斷方式接收數(shù)據(jù)、查 詢方式發(fā)送數(shù)據(jù),按照通用驅(qū)動框架設(shè)備驅(qū)動模塊的設(shè)計要求,
為UART
(實現(xiàn)了以下驅(qū)動函數(shù):UARTOOpenUARTOReadUARTOWriteUARTOIoctrl 、UARTOCIose 并通過通用驅(qū)動框架的設(shè)備驅(qū)動程序安裝函數(shù) InstallDriver 將UART(驅(qū)動模塊安裝到UDFFramework吉構(gòu)數(shù)組中。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GFRP筋-重晶石防輻射混凝土粘結(jié)性能試驗研究
- 關(guān)漢卿《救風塵》的電視劇改編研究
- 創(chuàng)客大賽培訓
- 兒童肺炎合并心衰補液診療要點
- 肺患者健康宣教
- 家庭科學教育實施策略
- 頤和園介紹課件
- 健康傳播常用方法
- 小班培訓詐騙案例分享
- 預防要先行班會課件
- DB3402T 19-2021 汽車后市場 美容養(yǎng)護服務(wù)規(guī)范
- 化工公司安全知識競賽題庫(共1000題)
- 中國移動公開競聘考試題庫(含答案)
- DLT 572-2021 電力變壓器運行規(guī)程
- HJ 636-2012 水質(zhì) 總氮的測定 堿性過硫酸鉀消解紫外分光光度法
- 成都市2022級(2025屆)高中畢業(yè)班摸底測試(零診)數(shù)學試卷(含答案)
- 社會主義核心價值觀融入幼兒園班級管理課程教學探索
- 四年級下冊混合計算400題及答案
- 餐廳值班管理培訓
- OQC出貨檢驗技能培訓
- 旅游產(chǎn)業(yè)行業(yè)分析
評論
0/150
提交評論