999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式Linux下PCI設備驅動的設計與實現*

2011-02-28 05:10:32袁愛平
網絡安全與數據管理 2011年12期
關鍵詞:設備

袁愛平

(長沙民政職業技術學院 軟件學院,湖南 長沙410004)

隨著通用處理器和嵌入式技術的迅猛發展,越來越多的電子設備需要由處理器控制。目前大多數CPU和外部設備都會提供PCI總線的接口,PCI總線已成為計算機系統中一種應用廣泛、通用的總線標準[1]。Linux因其開放源代碼以及穩定的性能,越來越受到廣大用戶青睞。同時,基于Linux內核的嵌入式操作系統應用勢頭強勁,開發基于Linux的設備驅動程序,具有很強的實用性和可移植性[2]。

1 PCI總線概述

PCI(Peripheral Component Interconnect)總線,即外部設備互連,是現在流行的一種連接PC和外圍設備的總線結構[3]。PCI提供了一組完整的總線接口規范,可以在33 MHz時鐘頻率、32 bit數據總線寬度的條件下達到峰值132 Mb/s的傳輸速率;它能支持一種稱為線性突發的數據傳輸模式,可確??偩€不斷滿載數據;采用總線主控與同步操作,顯著改善PCI的性能;PCI獨立于處理器的結構,用戶可隨意增添外圍設備,以擴展電腦系統而不必擔心在不同時鐘頻率下會導致性能下降。

2 PCI設備驅動程序的設計與實現

Linux中將設備分成字符設備、塊設備和網絡設備三種類型,通過主設備號和從設備號實現對設備的描述。其中主設備號描述控制該設備的驅動程序,即驅動程序與主設備號一一對應,從設備號用來區分同一個驅動程序控制的不同設備[5]。

PCI設備屬于字符設備。本設計采用模塊方式實現PCI卡驅動程序。驅動程序主要由設備注冊和注銷、設備探測和移除、設備中斷處理和系統調用等函數組成。

2.1 設備注冊和注銷

使用一個設備之前,必須保證己經對它進行注冊,這項工作一般是在設備初始化時完成。設備初始化函數中調用函數register_chrdev()來注冊字符設備。流媒體數據緩存PCI卡驅動程序的注冊代碼如下:

將設備的主設備號設為128,設備名稱為pci_card。pci_card_fops是一個file_operations結構指針,這個結構是設備驅動程序所提供的入口點位置,在設備注冊時向系統進行登記,以便系統在適當時調用。pci_card_fops定義如下:

當不再使用此設備時,需調用 unregister_chrdev()函數注銷驅動程序。

2.2 設備探測和移除

在掃描到新的PCI設備后,系統需要調用設備驅動程序實現的探測函數以查找與設備相匹配的PCI驅動。流媒體數據緩存PCI卡設備驅動的探測函數pic_card_probe()的主要實現代碼如下:

設備移除函數主要完成釋放映射的虛擬地址、釋放I/O區域、關閉PCI設備和釋放為設備實例分配的內核空間等功能。

2.3 中斷處理

流媒體數據緩存卡驅動中的中斷處理程序主要負責識別中斷、響應中斷和喚醒睡眠的進程,中斷處理代碼如下:

2.4 系統調用

用戶進程利用系統調用對設備文件進行諸如read/write操作時,系統調用通過設備文件的主設備號找到相應的設備驅動程序,然后讀取這個數據結構相應的函數指針,接著把控制權交給該函數。流媒體數據緩存PCI卡的系統調用函數主要包括設備的打開、關閉、讀寫和控制等。

在使用PCI設備之前,必須先打開所要使用的PCI設備。當用戶在應用程序中調用open()函數時,應用程序就會自動進入驅動程序中的pci_card_open()函數。pic_card_open()函數主要負責增加模塊的使用計數,并根據pic_card_probe()讀到的中斷號申請中斷,注冊中斷處理程序。具體實現如下:

在使用完PCI設備后,必須關閉PCI設備。當用戶在應用程序中調用close()函數時,應用程序就會自動進入驅動程序中的pci_card_release()函數。pci_card_release()函數的主要工作是釋放中斷和減少模塊的使用計數。

用戶在應用程序中調用read()函數和write()函數對設備文件進行讀寫操作時,應用程序就會自動進入驅動程序中的 pci_card_read()函數和 pci_card_write()函數。pci_card_read()函數首先會阻塞在以pci_card->wq為隊頭的等待隊列上。當流媒體數據緩存卡上的數據準備好,即 pci_card->state變為 READY時,pci_card_read()函數會被喚醒。函數被喚醒后,會先將數據從設備I/O內存拷貝到內核空間,再從內核空間拷貝給用戶進程,實現方式如下:

而pci_card_write()函數的主要工作是將數據從用戶進程拷貝到內核空間,再將內核空間中的數據拷貝到設備I/O內存,實現代碼如下:

Linux是一種日趨成熟完善的操作系統,PCI總線已成為計算機系統中一種應用廣泛、通用的總線標準。本文針對流媒體數據緩存卡設備,結合PCI總線的特點,開發實現了流媒體數據緩存PCI卡在Linux環境下的設備驅動程序,本文介紹的驅動原理同樣適用其他PCI設備的開發。

[1]陳穎,唐超.基于PCI總線驅動程序設計方法研究[J].

微計算機信息,2008,12(1):272-274.

[2]李善平,劉文峰,王煥龍.Linux與嵌入式系統[M].北京:清華大學出版社,2003.

[3]宋有泉,高小鵬,龍翔.嵌入式PCI網卡驅動程序的設

計與優化[J]. 計算機工程,2007,3(2):264-266.

[4]王峰,張文軍,余松煜.PCI設備驅動程序中幾個關鍵問題的設計與實現[J].測控技術,2002,21(8):58-60.

[5]錢晨,徐榮華,王欽若.基于Linux操作系統的設備驅動

程序開發[J].微計算機信息,2004,20(9):131-133.

猜你喜歡
設備
諧響應分析在設備減振中的應用
調試新設備
當代工人(2020年13期)2020-09-27 23:04:20
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發射設備中平衡輸入與不平衡輸入的轉換
電子制作(2018年10期)2018-08-04 03:24:48
食之無味,棄之可惜 那些槽點滿滿的可穿戴智能設備
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
HTC斥資千萬美元入股虛擬現實設備商WEVR
IT時代周刊(2015年8期)2015-11-11 05:50:37
Automechanika Shanghai 2014 之“看” 汽保設備篇
如何在設備采購中節省成本
主站蜘蛛池模板: 伊人AV天堂| 久久综合婷婷| 亚洲一区二区三区麻豆| 国产特一级毛片| 在线视频亚洲色图| 欧美一区福利| 秋霞一区二区三区| 久久精品中文无码资源站| 激情無極限的亚洲一区免费 | 亚洲成人免费看| 成年人免费国产视频| 精品国产污污免费网站| 欧美日本激情| 亚洲综合色区在线播放2019| 国产成在线观看免费视频 | 思思热在线视频精品| 国产成人区在线观看视频| 久久精品嫩草研究院| 欧亚日韩Av| 18禁色诱爆乳网站| 97视频在线精品国自产拍| 亚洲区视频在线观看| 国产嫩草在线观看| 欧美成人一级| 国产又粗又猛又爽| 国产精品自在拍首页视频8| 国产日韩欧美黄色片免费观看| 中国一级特黄视频| 在线中文字幕网| 欧美日韩精品一区二区视频| yjizz国产在线视频网| 国产99视频免费精品是看6| 欧美亚洲国产精品第一页| 亚洲成a∧人片在线观看无码| 日韩东京热无码人妻| 亚洲成年人片| 国禁国产you女视频网站| www.亚洲国产| 内射人妻无码色AV天堂| 免费看a级毛片| 国产黄色片在线看| 蝴蝶伊人久久中文娱乐网| 久久毛片网| 国产成人高精品免费视频| 亚洲三级视频在线观看| 亚洲AⅤ综合在线欧美一区| 手机精品视频在线观看免费| 欧美日韩第三页| 婷婷六月激情综合一区| 国产一区二区三区免费观看| 成人中文字幕在线| 欧美视频在线播放观看免费福利资源| 国产精品思思热在线| 亚洲日韩第九十九页| 精品久久久久久成人AV| 天堂av综合网| 女人18一级毛片免费观看| 精品国产一区二区三区在线观看 | 色吊丝av中文字幕| 日韩精品欧美国产在线| 日韩精品久久无码中文字幕色欲| 成人午夜天| 中文字幕丝袜一区二区| 伊人久久久大香线蕉综合直播| 特级aaaaaaaaa毛片免费视频 | 成人国内精品久久久久影院| 久久a毛片| 经典三级久久| 亚洲v日韩v欧美在线观看| 国产成人91精品| 亚洲第一成年人网站| 狂欢视频在线观看不卡| 97国产成人无码精品久久久| 91人妻日韩人妻无码专区精品| 久久毛片网| 国产免费怡红院视频| 日本一区高清| 午夜日b视频| 岛国精品一区免费视频在线观看| 国产成人精品视频一区二区电影| 国产香蕉97碰碰视频VA碰碰看| 亚洲乱码在线播放|