




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、圖像編碼與軟件電子科技2009年第22卷第10期收稿日期:2009201215作者簡介:常赟杰(1980-,男,碩士研究生,助教。研究方向:嵌入式系統。劉連浩(1959-,男,博士,教授。研究方向:信息安全與嵌入式系統。基于嵌入式L inux 的中斷驅動程序設計常赟杰1,2,劉連浩1(11中南大學信息科學與工程學院,湖南長沙410083;21湖南工學院計算機科學系,湖南衡陽421002摘要首先闡述了嵌入式L inux 操作系統下,設備驅動程序的實現原理和編寫方法,然后說明了中斷處理在設備驅動程序中的應用,并詳細論述了中斷方式下,編寫設備驅動程序的具體開發流程,進一步分析了編寫中斷處理程序時所用
2、到一些數據結構。應用證明,在編寫L inux 設備驅動程序的時候,采用中斷方式的程序效率會更高。關鍵詞AR M;L inux;設備驅動;中斷中圖分類號TP316文獻標識碼A 文章編號1007-7820(200910-074-03D esi gn of I n terrupt D ev i ce D r i vers Ba sed onE m bedded L i n uxChang Yunjie1,2,L iu L ianhao2(11School of Infor mati on Science and Engineer,Central South University,Changsha 4
3、10083,China;21Depart m ent of Computer Science,Hunan I nstitute of Technol ogy,Hengyang 421002,China Abstract First,the p rincip le of i m p lementation and p r ogramm ing method of device drivers on embedded L inux operati on system is intr oduced .Then,the app lication of interrup t handling in de
4、vice drivers is p resen 2ted,with a detailed discussi on of the devel opment p r ocesses of device drivers under interrup t .Finally,s omei m portant data structures used in interrup t handling p r ogramm ing are further analyzed .Practical app lication in 2dicates that higher p r ogram efficiency i
5、s achieved with the use of interrup t in the L inux device driver p rogram 2m ing .Keywords ARM;L inux;devices drivers;interrup t隨著電子技術的飛速發展,嵌入式L inux 有著廣泛的適用硬件平臺,高效穩定的內核代碼、豐富的應用軟件、良好的網絡接口等特點,已經成為嵌入式系統領域中的研究熱點。在嵌入式系統中,對硬件的管理是通過內核中的驅動程序來實現的,因此在嵌入式系統開發中,大量工作是對各種設備進行驅動程序的開發。中斷管理是嵌入式操作系統的核心任務之一,設備驅動程序中使
6、用中斷可以提高應用程序的效率。L inux 為中斷處理提供了良好的接口,L inux 設備驅動程序中有很多都是通過中斷方式來實現的。1中斷方式L inux 驅動程序實現方法111設備驅動程序概述設備驅動程序是為特定的硬件提供給用戶程序的一組標準化接口,它隱藏了設備的工作細節。L inux 系統中,硬件設備被抽象為一個設備文件,應用程序可以像操作普通文件一樣來對硬件設備進行操作。(1設備驅動程序的注冊和注銷。L inux 系統為每個設備分配了一個主設備號(Maj or 和次設備號(M inor ,主設備號標識設備對應的驅動程序,次設備號對應具體設備的實例。通常在應用中,主設備號都是采用動態分配的
7、方式獲取,即以設備號“0”進行申請,然后由系統返回一個可用設備號作為主設備號。(2設備操作。在L inux 內核中,結構struct file_op reti ons 中定常赟杰,等:基于嵌入式L inux的中斷驅動程序設計圖像編碼與軟件義了對設備的各種操作,例如打開設備使用open (,關閉設備使用cl ose(,從設備讀取數據用read(,將數據寫入設備用write(。編寫驅動程序,主要是實現struct file_op reti ons中的函數。(3模塊化設計。L inux內核中采用了可加載的模塊化設計。驅動采用模塊化編寫以后,它可以在系統啟動后的任何時刻把驅動程序添加到內核代碼中;當不
8、需要這個模塊時,可以將模塊從內核中卸載和刪除。當模塊被加載時,程序從int_module(函數開始執行;卸載的時候,程序從exit_module(函數開始執行,釋放掉它占用的系統資源2。L inux提供兩個宏,module_int和module_exit來顯示的命名模塊的注冊和注銷函數,即為Moudle_int(init_module;Moudle_exit(exit_module;112L inux中的中斷處理L inux在驅動程序中應用到中斷的時候,必須先把中斷處理程序注冊到系統中。當有硬件中斷請求發生后,操作系統調用中斷處理程序,完成對設備的操作4。注冊中斷處理程序采用的函數是reque
9、st_iqr,其原型為int request_irq(unsigned int irq,Void(3handler(int irq,void dev_id, struct p t_ges3ges,Unsigned l ong irq_flags,const char3 devna me,void3dev_id函數調用成功時,返回0;失敗時返回負值。其中的參數irq為要申請的硬件中斷號;handle為中斷處理子程序,中斷產生時由系統來調用,調用參數iqr為中斷類型號,dev_id為申請時告訴系統的設備;標識regs為中斷發生時寄存器的內容; irq_flags決定中斷處理程序的特性,例如設置sa
10、_ interrup t就是個快中斷,不設置就是慢中斷; devna me指向設備名稱的字符指針,記錄了哪個設備使用這個中斷號;dev_id為申請中斷時間告訴系統的設備標識,由于中斷可以被共享,不同的中斷處理通過dev_id來區分。注銷中斷采用的函數是free_irq,其原型為Void free_irq(unsigned int irq,void3dev_id它的參數與request_iqr函數中參數意義完全一樣。113中斷處理函數的實現中斷處理程序的功能,就是將有關中斷接收的信息反饋給設備,并根據要服務中斷的不同含義進行相應的讀寫。由于中斷處理程序是在中斷時間內運行的,它不能向用戶空間發送或
11、接收數據,因為它不在任何進程的上下文中執行。通常在中斷處理程序中用到以下幾個數據結構3:(1等待隊列。當應用程序對設備進行讀的時候,如果暫時還沒有數據可讀,就必須讓進程睡眠來等待數據。如果中斷向進程發出了信號,指示它們等待的事件已經發生,那么就可以喚醒在設備上睡眠的那些進程。進程的睡眠和喚醒就是通過一個叫做等待隊列的數據結構來實現的。在L inux中,等待隊列由一個wait_queue_head_t類型的數據結構來管理。interrup tible_sleep_on(函數用來讓進程睡眠, wake_up_interrup tible(函數用來喚醒睡眠的進程。(2環形緩沖區。在驅動程序使用循環緩
12、沖區是處理并發訪問問題的一種有效方法。當設備的一些操作來不及處理的時候,就先存放到緩沖區中。緩沖區共有兩個指針進行尋址:head和tail。Head指向數據的寫入位置,tail指向數據的讀出位置。(3系統時鐘。在編寫中斷處理程序的時候,必須要保證程序執行的時間盡可能短。系統執行時間由系統時鐘來控制。系統時鐘是通過ti m e_list結構可以實現的5。使用時鐘時,首先調用init_ti m e_list進行初始化。ti m e_list結構中參數exp ires表示時鐘的周期,其單位采用L inux全局變量jiffies。系統內核還提供了Hz來定義每秒種最小時間間隔的數目。系統計時到一定時間就
13、調用functi on函數,并把此子程序從定時隊列里刪除,如果想要每隔一定時間都執行一次的話,就必須在functi on函數里再一次調用addt_i m er函數。2中斷方式驅動程序設計211按鍵控制原理硬件采用s3c2410處理器I/O口的GPF3, GPF4,GPF5,GPF6這4個端口對應4個按鍵。當按鍵按下時,分別產生eint3,eint4,eint5,eint64個外部低電平的中斷請求。s3c2410根據中斷來判圖像編碼與軟件常赟杰,等:基于嵌入式L inux的中斷驅動程序設計斷按鍵被按下。212按鍵驅動程序的實現(1首先設計一個按鍵的設備結構體。該結構體中包含一個緩沖區,當多次按鍵
14、無法被及時處理的時候,使用該緩沖區緩存按鍵。此外,還包含按鍵狀態標志和一個等待隊列。為了實現軟件延時,定時器也是必要的,但不包含在設備結構體中;(2接著定義一個按鍵結構體,來保存4個按鍵的所對應的中斷號,GP I O引腳及鍵值;(3按鍵驅動的模塊加載和卸載函數;(4按鍵設備中斷處理函數。在鍵被按下后,將發生中斷,在中斷處理程序中,延時20m s,去除抖動;(5按鍵設備的打開、釋放函數。按鍵設備驅動的打開和釋放函數比較簡單,主要是設置keydev1head、keydev1tail和按鍵事件函數指針keyEvent的值;(6按鍵設備的讀取函數。按鍵設備驅動的讀函數是驅動程序和用戶的接口,在讀取/d
15、ev/key2 board/ra w文件的時候被讀取。當keydev1head!= keydev1tail時,表示緩沖區有數據,它從緩沖區的尾部讀取一個按鍵事件,直接返回給用戶。當緩沖區為空時,根據用戶空間是阻塞讀還是非阻塞讀,分為如下兩種情況來處理:1若采用非阻塞讀,則因為沒有按鍵緩存,直接返回-Eagain;2若采用阻塞讀,則在keydev1wq等待隊列上睡眠,直到有按鍵被記錄入緩沖區后再被喚醒。3結束語L inux216內核中,添加了可搶占(Pree mp tible的處理中斷方式,使中斷處理的實時性更加強大。在編寫L inux設備驅動程序的時候,采用中斷方式的程序效率會更高。參考文獻1
16、劉淼.嵌入式系統接口設計與L inux驅動程序設計M.北京:北京航空航天大學出版社,2006.2田澤.AR M9嵌入式開發與實踐M.北京:北京航空航天大學出版社,2006.3Rubini A,Corbet J.L inux設備驅動程序M.魏永明,駱勇,姜均,譯.北京:中國電力出版社,2002.4董志國,李式巨.嵌入式L inux設備驅動程序開發J.計算機工程與設計,2006,27(20:3737-3740.5李世勇,肖竟華.基于L inux驅動的編寫技術J.電腦與信息技術,2006,14(3:43-45.(上接第21頁6結束語文中給出了該新型智能化變換器式功率表6的設計,綜述了該儀表系統的工作原理和設計思想,重點介紹了功率檢測電路的原理和設計。本儀表經實際使用證明,具有體積小、成本低、精度高、可靠性好等優點,有較好的市場前景。此外,還可以針對不同的用戶,進一步修改軟硬件系統,增加功
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園物品寄存管理制度
- 校園菜地日常管理制度
- 校園車輛進出管理制度
- 校外培訓十種管理制度
- 2024年煤炭機械裝備資金申請報告代可行性研究報告
- 2025年中級社會工作者考試《社會工作綜合能力》真題
- 藥品安全自查自糾報告
- 工業革命區域差異-洞察及研究
- 酒店空間布局優化-洞察及研究
- 動物王國的秘密故事-童話創作(4篇)
- 多功能呼吸機項目安全風險評價報告
- 2025年法律碩士入學考試試題及答案
- 2025年黑龍江、吉林、遼寧、內蒙古高考生物真題試卷(解析版)
- 2025年藝術與數字藝術類事業單位招聘考試綜合類專業能力測試試卷
- 福建省泉州市晉江市2025屆數學七下期末調研試題含解析
- 山西省運城市2025年中考一模語文試題(含答案)
- 2025河南中考:政治必背知識點
- 電影放映員試題及答案
- 2025-2030中國寵物殯葬服務行業市場深度分析及發展前景與投資戰略研究報告
- 青科綜評面試真題及答案
- 2023年貴州省糧食儲備集團有限公司面向社會公開招聘工作人員15人筆試參考題庫附帶答案詳解
評論
0/150
提交評論