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 之“看” 汽保設備篇
如何在設備采購中節省成本
主站蜘蛛池模板: 激情六月丁香婷婷四房播| 91福利在线观看视频| 91在线播放免费不卡无毒| 91九色视频网| 亚洲伊人天堂| 亚洲最新地址| 成年人国产视频| 免费看久久精品99| 欧美日韩在线亚洲国产人| 国产福利免费在线观看| 青青操国产视频| 综合久久五月天| 永久免费无码成人网站| 毛片a级毛片免费观看免下载| 2020国产精品视频| 99久久亚洲精品影院| 国产高清在线观看91精品| 日韩欧美在线观看| 亚洲h视频在线| 亚洲一区二区视频在线观看| 国产精品专区第1页| 麻豆国产在线观看一区二区 | 国产自在线拍| 亚洲一级无毛片无码在线免费视频| 国产中文一区a级毛片视频| 日本a级免费| 国产精品自在在线午夜区app| 国产肉感大码AV无码| 国产主播一区二区三区| 2022精品国偷自产免费观看| 欧美成人亚洲综合精品欧美激情| 日韩毛片在线视频| 91九色视频网| 91国内在线观看| 国产午夜精品鲁丝片| 亚洲精品成人片在线观看| 自拍亚洲欧美精品| 一级一级特黄女人精品毛片| 国产香蕉在线| 亚洲 欧美 中文 AⅤ在线视频| 欧美成人一级| 成人免费网站久久久| 欧美专区日韩专区| 免费jizz在线播放| 国产精品性| 国产精品女同一区三区五区| 日韩最新中文字幕| 国产一级无码不卡视频| 四虎影视国产精品| 亚洲一级毛片| 色综合天天操| 怡春院欧美一区二区三区免费| 精品欧美一区二区三区在线| 国产成人一二三| 在线观看无码av五月花| 99热6这里只有精品| 亚洲人成色77777在线观看| 成人va亚洲va欧美天堂| 国产亚洲日韩av在线| 免费观看无遮挡www的小视频| 免费人成视频在线观看网站| 久久这里只有精品66| 青青草91视频| 国产日韩欧美在线视频免费观看 | 2020最新国产精品视频| 国产人妖视频一区在线观看| 日韩精品一区二区三区swag| 日本在线视频免费| 欧美成人手机在线观看网址| 97综合久久| 国产女人18水真多毛片18精品| 看国产毛片| 视频国产精品丝袜第一页| 久久国产精品影院| 99国产精品国产高清一区二区| 中文成人在线视频| 一边摸一边做爽的视频17国产 | 国产性生交xxxxx免费| 丰满的熟女一区二区三区l| 久久精品人人做人人爽| 亚洲天堂区| 国模极品一区二区三区|