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 之“看” 汽保設備篇
如何在設備采購中節省成本
主站蜘蛛池模板: 国产一级毛片高清完整视频版| 国产丰满成熟女性性满足视频| jizz亚洲高清在线观看| 国产精品色婷婷在线观看| 91精品久久久久久无码人妻| 国产99欧美精品久久精品久久| 久久婷婷六月| 波多野结衣一区二区三视频| 亚洲色欲色欲www网| 亚洲欧美日韩中文字幕一区二区三区 | 操操操综合网| 九九久久精品免费观看| 伊人久久精品无码麻豆精品 | 免费一级大毛片a一观看不卡| 女人一级毛片| 天天操精品| 国产97视频在线| 国产美女自慰在线观看| 欧美精品H在线播放| 成人国产一区二区三区| 在线看免费无码av天堂的| 亚洲人成日本在线观看| 欧美在线视频不卡第一页| 日韩在线1| 久久久久九九精品影院| 国产精品3p视频| 成人午夜网址| 欧美日韩在线国产| 久久亚洲中文字幕精品一区| 中文字幕亚洲另类天堂| 精品一区二区三区水蜜桃| a在线亚洲男人的天堂试看| 精品国产99久久| 高清无码不卡视频| 中文无码日韩精品| 亚洲欧美日韩成人在线| 久久窝窝国产精品午夜看片| 国产亚洲欧美另类一区二区| 久久无码av三级| 2021国产精品自拍| 久久无码av三级| 麻豆国产在线不卡一区二区| 91视频首页| 国产精品亚洲专区一区| 久久超级碰| 999福利激情视频| 中文字幕免费视频| www.99在线观看| 国产免费a级片| 色播五月婷婷| 精品综合久久久久久97超人| 中文国产成人久久精品小说| 亚洲精品国产精品乱码不卞| 色偷偷一区二区三区| 亚洲伊人久久精品影院| 亚洲成人在线免费观看| 国产超碰在线观看| 五月婷婷激情四射| 日本91在线| 亚洲高清无在码在线无弹窗| 免费av一区二区三区在线| 最新精品久久精品| 国模沟沟一区二区三区| 试看120秒男女啪啪免费| 国产你懂得| 男女男免费视频网站国产| 色天天综合| 国产91精选在线观看| 免费A级毛片无码免费视频| 秋霞国产在线| 国产全黄a一级毛片| 欧美日本视频在线观看| 亚洲中文字幕av无码区| 色噜噜中文网| www亚洲精品| 东京热高清无码精品| 久久久久无码精品| 免费一看一级毛片| 国产精品lululu在线观看 | 国产三级成人| 伊人五月丁香综合AⅤ| 亚洲AV无码一区二区三区牲色|