www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]《嵌入式Linux初級實驗s3c2410》設備驅(qū)動開發(fā)=硬件控制+內(nèi)核API+內(nèi)核驅(qū)動框架1.設備驅(qū)動和操作系統(tǒng)1.1無操作系統(tǒng)時的設備驅(qū)動在沒有操作系統(tǒng)的情況下,設備驅(qū)動的接口直接提交給應用軟件工程師,應用軟件沒有跨越

《嵌入式Linux初級實驗s3c2410》

設備驅(qū)動開發(fā)=硬件控制+內(nèi)核API+內(nèi)核驅(qū)動框架

1.設備驅(qū)動和操作系統(tǒng)

1.1無操作系統(tǒng)時的設備驅(qū)動

在沒有操作系統(tǒng)的情況下,設備驅(qū)動的接口直接提交給應用軟件工程師,應用軟件沒有跨越任何層次就可以直接訪問設備驅(qū)動的接口。驅(qū)動包含的接口函數(shù)也與硬件的功能直接吻合,沒有任何附加功能。

1.2有操作系統(tǒng)時的設備驅(qū)動

沒有操作系統(tǒng)時,設備驅(qū)動直接被應用程序調(diào)用,不與任何操作系統(tǒng)關(guān)聯(lián)。當系統(tǒng)中包含操作系統(tǒng)后,設備驅(qū)動會變得怎樣?

首先,無操作系統(tǒng)時設備驅(qū)動的硬件操作仍然是必不可少的,沒有這一部分,設備驅(qū)動不可能與硬件打交道,也就是說在無操作系統(tǒng)時驅(qū)動所做的工作,在有操作系統(tǒng)時也是要做的。

其次,我們還需要將設備驅(qū)動融入操作系統(tǒng)內(nèi)核。應用程序是通過調(diào)用操作系統(tǒng)的API來實現(xiàn)對硬件的操作的,所以設備驅(qū)動需要融入到內(nèi)核中。為了實現(xiàn)這種融合,必須在所有的設備驅(qū)動中設計面向操作系統(tǒng)內(nèi)核的接口,這樣的接口由操作系統(tǒng)規(guī)定,對一類設備而言結(jié)構(gòu)一致,獨立于具體的設備。不同的操作系統(tǒng)中定義的設備驅(qū)動架構(gòu)是不一樣的,要將設備驅(qū)動融入系統(tǒng)內(nèi)核中,就需要按照操作系統(tǒng)給出的獨立于設備的接口架構(gòu)設計,如此這般,應用程序就可以使用統(tǒng)一的系統(tǒng)調(diào)用接口來訪問各種設備。其中內(nèi)核的API包括并發(fā)/同步控制、阻塞/喚醒、中斷底半部調(diào)度、內(nèi)存和I/O訪問等。

由此可見,當系統(tǒng)中存在操作系統(tǒng)時,設備驅(qū)動變成了鏈接硬件和內(nèi)核的橋梁,操作系統(tǒng)的存在使得單一的“驅(qū)動硬件設備工作”變?yōu)椴僮飨到y(tǒng)與硬件交互的模塊,它對外呈現(xiàn)為操作系統(tǒng)API,不再給應用軟件工程師直接提供接口。因此,驅(qū)動工程師不僅需要牢固的硬件基礎,如硬件的工作原理、寄存器設置等,還需要對驅(qū)動中所涉及的內(nèi)核知識有良好的掌握,包括內(nèi)核支持的API、內(nèi)核驅(qū)動架構(gòu)等,才能設計開發(fā)出好的設備驅(qū)動程序。也就是說設備驅(qū)動從無操作系統(tǒng)時的應用程序和硬件設備之間的橋梁轉(zhuǎn)變成操作系統(tǒng)和硬件設備之間的溝通紐帶。

2. Linux設備驅(qū)動

2.1 Linux設備的分類及特點

驅(qū)動針對的對象是存儲器和外設(包括CPU內(nèi)部集成的存儲器和外設),而不是針對CPU核。Linux系統(tǒng)中將存儲器和外設分為3個基礎大類:字符設備、塊設備和網(wǎng)絡設備。

2.1.1字符設備

概括的講,字符設備指那些必須以串行順序依次進行訪問的設備,如觸摸屏、磁帶驅(qū)動器、鼠標等。字符設備是一種可以當作一個字節(jié)流來存取的設備,字符驅(qū)動就負責實現(xiàn)這種行為。這樣的驅(qū)動常常至少實現(xiàn)open,close,read,和write系統(tǒng)調(diào)用。字符驅(qū)動很好地展

現(xiàn)了流的抽象,它通過文件系統(tǒng)結(jié)點來存取,也就是說,字符設備被當作普通文件來訪問。字符設備和普通文件之間唯一的不同就是:你可以在普通文件中移來移去,但是大部分字符設備僅僅是數(shù)據(jù)通道,你只能順序存取。然而,也存在看起來象數(shù)據(jù)區(qū)的字符設備,你可以在里面移來移去的訪問數(shù)據(jù)。例如,frame grabber經(jīng)常這樣,應用程序可以使用mmap或者lseek存取整個要求的圖像。

2.1.2塊設備

塊設備是可以用任意順序訪問,以塊為單位進行操作,如硬盤、軟驅(qū)等。一般來說,塊設備和字符設備并沒有明顯的界限。如同字符設備,塊設備也是通過文件系統(tǒng)結(jié)點進行存取。一個塊設備是可以駐有一個文件系統(tǒng)的。Linux系統(tǒng)中允許應用程序讀寫一個塊設備象一個字符設備一樣,它允許一次傳送任意數(shù)目的字節(jié),當然也包括一個字節(jié)。塊和字符設備的區(qū)別僅僅在內(nèi)核在內(nèi)部管理數(shù)據(jù)的方式上,如字符設備不經(jīng)過系統(tǒng)的快速緩沖,而塊設備經(jīng)過系統(tǒng)的快速緩沖,并且在內(nèi)核/驅(qū)動的軟件接口上不同。雖然它們之間的區(qū)別對用戶是透明的,它們都使用文件系統(tǒng)的操作接口open()、close()、read()、write()等函數(shù)進行訪問,但是它們的驅(qū)動設計存在很大的差異。

2.1.3網(wǎng)絡設備

網(wǎng)絡設備是面向數(shù)據(jù)包的接收和發(fā)送而設計的,它與字符設備、塊設備不同,并不對應于文件系統(tǒng)中的節(jié)點。內(nèi)核與網(wǎng)絡設備的通信和內(nèi)核與字符設備、塊設備的通信方式可以說是完全不同的。任何網(wǎng)絡事務都通過一個接口來進行,就是說,一個能夠與其他主機交換數(shù)據(jù)的設備。通常,一個接口是一個硬件設備,但是它也可能是一個純粹的軟件設備,比如環(huán)回接口,因此網(wǎng)絡設備也可以稱為網(wǎng)絡接口。在內(nèi)核網(wǎng)絡子系統(tǒng)的驅(qū)動下,網(wǎng)絡設備負責發(fā)送和接收數(shù)據(jù)報文。網(wǎng)絡驅(qū)動對單個連接一無所知,它只處理報文。

既然網(wǎng)絡設備不是一個面向流的設備,一個網(wǎng)絡接口就不象字符設備、塊設備那么容易映射到文件系統(tǒng)的一個結(jié)點上。Linux提供的對網(wǎng)絡設備的存取方式仍然是通過給它們分配一個名字,但是這個名字在文件系統(tǒng)中沒有對應的入口,其并不用read和write等函數(shù),而是通過內(nèi)核調(diào)用和報文傳遞相關(guān)的函數(shù)來實現(xiàn)。

近年來,某些設備驅(qū)動類別也已經(jīng)添加到Linux內(nèi)核中,如FireWire驅(qū)動。與內(nèi)核處理USB和SCSI驅(qū)動相同的方式,內(nèi)核開發(fā)者集合了類別范圍內(nèi)的特性,并把它們輸出給驅(qū)動實現(xiàn)者,以避免重復工作,因此簡化和加強了編寫類似驅(qū)動的過程。

除了上面對設備的分類的方式之外,還有其他的劃分方式,與上面的設備類型是正交的。通常,某些類型的驅(qū)動與給定類型設備其他層的內(nèi)核支持函數(shù)一起工作。例如,你可以說USB模塊,串口模塊,SCSI模塊等等。每個USB設備由一個USB模塊驅(qū)動,與USB子系統(tǒng)一起工作,但是設備自身在系統(tǒng)中表現(xiàn)為一個字符設備(比如一個USB串口),一個塊設備(一個USB內(nèi)存讀卡器),或者一個網(wǎng)絡設備(一個USB以太網(wǎng)接口)。

2.2不同設備的驅(qū)動設計概述

上述的三類設備,除了網(wǎng)絡設備外,字符設備與塊設備都被映射到Linux文件系統(tǒng)的文件和目錄,通過文件系統(tǒng)的系統(tǒng)調(diào)用接口open()、write()、read()、close()等函數(shù)訪問。塊設備比字符設備復雜,在它上面會有一個磁盤/Flash文件系統(tǒng),該文件系統(tǒng)對存儲介質(zhì)上的文件和目錄進行規(guī)范化的組織。

2.2.1字符設備驅(qū)動

Linux字符設備驅(qū)動的核心是file_operations結(jié)構(gòu)體,驅(qū)動的主體是實現(xiàn)其中的read()、write()、ioctl()、open()、release()等方法,這些方法將完成系統(tǒng)需要對設備進行的操作功能。

其結(jié)構(gòu)形式如下所示:

struct file_operations xxx_fops =

{

.owner = THIS_MODULE,

.read = xxx_read,

.write = xxx_write,

.ioctl = xxx_ioctl,

...

}

open()方法:該方法提供給驅(qū)動程序初始化設備的能力,從而為以后的設備操作做好準備,主要完成如下工作:檢查設備特定的錯誤(例如設備沒準備好,或者類似的硬件錯誤);如果它第一次打開,初始化設備;如果需要,更新file_operations指針;分配并填充要放進filp->private_data的任何數(shù)據(jù)結(jié)構(gòu)等。此外open操作一般還會遞增使用計數(shù),用以防止文件關(guān)閉前模塊被卸載出內(nèi)核。

release()方法:與open方法相反,它主要是釋放由open分配的filp->private_data中的所有內(nèi)容;在最后一次關(guān)閉操作時關(guān)閉設備;使用計數(shù)減1等操作。

read()和write()方法:read方法完成將數(shù)據(jù)從內(nèi)核拷貝到應用程序空間,write方法相反,將數(shù)據(jù)從應用程序空間拷貝到內(nèi)核。

ioctl()方法:ioctl方法主要用于對設備進行讀寫之外的其他控制,比如配置設備、進入或退出某種操作模式,這些操作一般都無法通過read/write文件操作來完成。

2.2.2塊設備驅(qū)動

Linux塊設備驅(qū)動并不直接實現(xiàn)file_operations成員函數(shù),其主體變成處理實現(xiàn)block_device_operations成員函數(shù)以及處理上層下達的I/O請求。block_device_operations結(jié)構(gòu)體中包含了ioctl()、open()、release()方法,因為字符設備和塊設備的存取方法不同,其I/O處理請求可以看作是塊設備中的read()和write()方法。塊設備調(diào)用函數(shù)block_read( )和block_write( )來進行數(shù)據(jù)讀寫,這兩個函數(shù)將向設備請求表中

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉