九、linux设备节点注册
臨時占位,還沒弄好,后期再修改
一、雜項設備? ?
?????雜項設備可以說是對一部分字符設備的封裝,還有一部分不好歸類驅動也歸到雜項設備。
為什么會引入雜項設備?
????????? 第一、節省主設備號
????????– 如果所有的驅動都是用字符設備,那么所有的設備號很快就用完了,總共就255個主設備號。
????????? 第二、驅動寫起來相對簡單
????????– 如果直接使用封裝好的雜項設備,那么就可以減少一步注冊主設備號的過程。
????????雜項設備初始化部分源文件“drivers/char/ misc.c”,這一部分通過Makefile可知,是強制編譯的。而且是Linux官方(不是三星官方)出來的時候就帶的,為了一些簡單的驅動更容易實現。
????????這部分了解即可,里面的內容也比較簡單,就是給字符驅動做一個簡單的封裝。
二、雜項設備注冊文件
????????雜項設備注冊頭文件:?include/linux/miscdevice.h
????????結構體miscdevice以及注冊函數如下所示:
?????????? 常用的參數
????????????????– .minor設備號
????????????????– .name生成設備節點的名稱
????????????????– .fops指向一個設備節點文件
????????Linux中一切皆文件,上層調用底層也是通過讀取文件的方式,注冊設備節點,本質也是新建一個特殊的文件,包含文件名,打開、關閉、操作等函數
????????? 包含文件結構體的頭文件是“include/linux/fs.h ”
????????? 文件的結構體file_operations如下所示
?? 文件的結構體file_operations參數很多,根據需求選擇。
? 必選的是參數是
– .owner一般是THIS_MODULE,
– .open打開文件函數
– .release關閉文件函數
? 這里在必選之外使用參數(為了介紹接下來的GPIO的操作)
– .unlocked_ioctl對GPIO的操作,應用向底層驅動傳值
?驅動代碼,在probe_linux_module基礎上寫devicenode_linux_module驅
動
– 寫代碼的時候,注意一下函數調用順序
? 編譯,在開發板上加載驅動生成設備節點
– 在/dev中查看是否生成了設備節點
總結
以上是生活随笔為你收集整理的九、linux设备节点注册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 八、linux以模块方式注册设备
- 下一篇: 十一、linux物理地址虚拟地址