五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

手把手教你Linux字符設備驅(qū)動實例

2023-02-13 16:03 作者:補給站Linux內(nèi)核  | 我要投稿

globalmem

看?linux 設備驅(qū)動開發(fā)詳解時,字符設備驅(qū)動一章,寫的測試代碼和應用程序,加上自己的操作,對初學者我覺得非常有幫助。

寫這篇文章的原因是因為我看了我之前發(fā)表的文章,還沒有寫過字符設備相關的,至于里面提到的結構體的作用,有很多詳細的文章說明,我就不做更深的敘述。

代碼在github上,點擊下面閱讀原文可以直達

https://github.com/weiqifa0/globalmem/blob/main/README.md

把這部分放在github上也有好處,后續(xù)可以增加刪除一些東西,以后自己需要使用的時候也方便許多。


我們討論字符設備驅(qū)動,就有必要知道他的結構體和頭文件,像一些后來的封裝什么的,大部分還是脫離不了操作這個結構體里面的東西。


加載內(nèi)核模塊insmod globalmem.ko 錯誤需要的修改。

insmod: can't insert 'globalmem.ko': Device or resource busy


出錯的原因:

模塊使用的是靜態(tài)分配設備號的方式,而這個設備號已經(jīng)被系統(tǒng)中的其他設備所占用。查看未被占用的設備號,需要到pro/devices下面去查看。

查看設備號的方法:

# cat /proc/devices


【文章福利】小編推薦自己的Linux內(nèi)核技術交流群:【749907784】整理了一些個人覺得比較好的學習書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書、實戰(zhàn)項目及代碼)? ? ?


編譯內(nèi)核版本

加載模塊之后使用lsmod查看模塊

創(chuàng)建設備文件節(jié)點

使用mknod創(chuàng)建設備節(jié)點的時候,后面跟上的參數(shù)需要跟我們在/proc/devices下面看到的對應,也就是我們在驅(qū)動里面申請的主設備號。

使用命令讀寫設備文件

Linux 下的 echo 和cat 命令是十分有用,這兩個命令可以讓在不寫代碼的情況下就可以完成調(diào)試讀寫設備。

通過代碼來讀寫設備文件

代碼在下面閱讀原文的鏈接里面。

使用傳入?yún)?shù)設置主設備號

內(nèi)核模塊參數(shù)我覺得是一個比較冷門的知識點,冷門的原因是因為我們在做項目的時候很少使用這個參數(shù),但是實際上這個參數(shù)非常有用。

我們可以把內(nèi)核模塊當做main函數(shù),main函數(shù)是可以接收傳參的,內(nèi)核模塊也可以在加載的時候接收傳入的參數(shù)。

如下是把主設備號傳給內(nèi)核模塊,但是需要注意,這個主設備號不能被占用了。

增加自動創(chuàng)建設備節(jié)點的驅(qū)動文件

每次手動創(chuàng)建設備文件節(jié)點總是很麻煩,而且在實際編寫設備驅(qū)動的時候,不會出現(xiàn)自己手動創(chuàng)建設備節(jié)點這種低端的操作。

當然了,聰明的內(nèi)核提供了接口讓我們在注冊驅(qū)動的時候也把設備文件節(jié)點注冊上去。

具體代碼可以查看globalmem2.c里面的代碼。

使用lseek操作文件位置

具體對應的文件是app-main2.c


原文作者:嵌入式Linux


手把手教你Linux字符設備驅(qū)動實例的評論 (共 條)

分享到微博請遵守國家法律
泾阳县| 玉山县| 漳州市| 大连市| 故城县| 和硕县| 漾濞| 拉萨市| 剑河县| 河池市| 库伦旗| 牙克石市| 博乐市| 六盘水市| 深圳市| 吉隆县| 保靖县| 宿州市| 泗阳县| 吉安县| 广安市| 潜山县| 东乡县| 红原县| 海伦市| 中山市| 辽宁省| 耒阳市| 阿图什市| 增城市| 来凤县| 藁城市| 日照市| 张掖市| 阿城市| 苗栗市| 福州市| 磴口县| 蒙阴县| 苍梧县| 那曲县|