色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > Linux字符設備驅動模型之設備號

Linux字符設備驅動模型之設備號 時間:2018-09-27      來源:未知

從上文中可知,在Linux用戶空間中,如若需要操作硬件設備,均通過/dev目錄下的設備文件節點進行操作,基本上每一種設備都會存在一個或者多個的設備節點。

并且在Linux內核中,其表示字符設備的結構成員也提供了相應的設備號。

設備號成員為dev_t dev;那么其與設備之間的關系是什么呢?它又與用戶空間的操作是和關系??

一、設備號

那么設備文件節點又是如何與Linux內核驅動程序進行對應的映射關系呢???答案是:主設備號。

在前文舉例過,可能會存在多個相同的設備運行在Linux系統中,這些設備所使用的是同一個內核驅動程序,那么是如何區分各個設備的呢???答案是:次設備號。

那么設備號在用戶空間中,是如何體現的呢???

在我們現有的Linux系統中,進行/dev目錄下,執行命令。

命令:ls -l

如上圖所示,在其設備節點文件的屬性中,可以查看到設備節點的主設備號和次設備號。其中逗號‘,’前為主設備號,后為次設備號。并且如上圖所示,對于loop設備而言,其有很多相同的設備運行在Linux操作系統中,那么他們的各個相同的設備都具有唯一的節點名稱,但他們的主設備號相同,均為7;次設備號不同,按照節點的順序進行排列。

二、設備號操作

在Linux內核源碼中,使用結構體dev_t類型來定義設備號。實際上dev_t類型為32位的unsigned int類型(在Linux內核源碼中可以進行跟蹤)。其中高12位作為存儲主設備號,低20位作為存儲次設備號。

那么就存在了如下幾個問題:

1.如果知道主設備號和次設備號,那么怎么組合成dev_t類型的數據?

在Linux內核中,提供了MKDEV方法宏來進行組合主設備號和次設備號。其原型如下:

用法為:dev_t dev = MKDEV(主設備號,次設備號)

2.如何從dev_t類型的數據中解析出主設備號?

如上圖,在Linux內核中采用了MAJOR方法宏來進行解析主設備號。用法如下:

主設備號 = MAJOR(dev_t dev)

3.如何從dev_t類型的數據中解析出次設備號?

如上圖,在Linux內核中采用了MINOR方法宏來進行解析主設備號。用法如下:

次設備號 = MINOR(dev_t dev)

三、設備號分配/申請

因為是在Linux內核框架下進行編寫設備驅動程序,那么每一個設備的設備號可以有Linux內核提供的方法來進行分配。

Linux內核中如何為設備分配一個主設備號???

實際上在Linux內核中提供了兩種方法可以進行分配主設備號。分別為靜態申請設備號和動態分配設備號。

靜態申請設備號:程序員自己選擇一個數字作為某一個設備的主設備號,再確定其次設備號(實際上如果是單一的設備,通常次設備號為0),通過組合得到設備號,然后通過函數register_chrdev_region向內核申請主設備號使用。其原型如下:

靜態申請設備號的缺點在于,如果所申請的設備號已經在內核中被其他設備驅動使用了,則會申請失敗。并且另一點是,在Linux內核中存在一些設備驅動的設備號為固定的設備號,例如:串口UART、I2C設備驅動等。

動態分配設備號:Linux內核提供方法函數alloc_chrdev_region,由內核動態的分配一個可用的主設備號給相應的設備驅動。其原型為:

動態分配設備號的優點在于,因為Linux內核本身自己知道了哪些設備號已經被使用了,所以基本不會導致分配到已用了的設備號,從而不會申請設備號失敗。

四、設備號注銷

實際上無論是使用動態分配得到的設備號,還是使用靜態申請得到的設備號,當Linux系統中不再需要相應的硬件設備時,可將其設備驅動進行注銷,那么重要的一步就是在設備驅動退出時,使用方法函數unregister_chrdev_region函數釋放相應的設備號。其原型為:

設備號釋放后,設備節點文件將不存在。

上一篇:Linux字符設備驅動模型之框架解說

下一篇:一瞥Unity集成開發環境中的軟件工程設計思想

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 天美传媒AV成人片免费看 | 国产成人亚洲精品无码MP4 | 欧美日韩中文国产一区 | 四虎国产精品成人影院 | 亚洲国产精品久久久天堂不卡海量 | AAA女人18毛片水真多 | 亚洲精品不卡无码福利在线观看 | 日韩黄色免费网站 | 一区二区在线欧美日韩中文 | 乱人伦中文视频在线 | 嫩草影业地址 | 免费观看日批视频 | 好男人www在线社区 国产在线乱子伦一区二区 99ri国产在线 | 成人永久免费视频网站 | 成人无码视频免费播放 | 日本道二区免费v | 学生在线精品一区二区 | 波多野结衣连续高潮中出 | 中国少妇内射XXXHD免费 | av在线免费观看一区二区 | 么公的好大好硬好深好爽视频 | 亚洲AV无码国产精品色午友在线 | 99午夜 | 好男人看在线视频 | 日本少妇XXX做受 | 欧美又爽又大又黄A片 | 97久人人做人人妻人人玩精品 | 丰满少妇被猛烈进入流水 | 少妇的BBBB爽爽爽自慰 | 欧美 国产 日韩 另类 视频区 | 羞羞麻豆国产精品1区2区3区 | av青草| 樱花视频在线观看进击的巨人第三季 | 国产帅男男GAY网站视频 | 国产成人AV在线影院 | 男生自慰gay网址 | 成人美女黄网站色大免费的 | 亚洲欧洲日本精品一区二区三区 | 中文字幕在线不卡一区二区 | 亚洲欧美日韩自偷自拍 | clubnaked艳裸舞视频 |