【Linux】【驅動】雜項設備驅動
- Linux三大設備驅動
- 1. 我們這節課要講的雜項設備驅動是屬于我們這三大設備驅動里面的哪個呢?
- 2.雜項設備除了比字符設備代碼簡單,還有別的區別嗎?
- 3.主設備號和次設備號是什么?
- 掛載驅動
雜項設備驅動是字符設備驅動的一種,他相對完整的字符驅動來說信息會稍微減少一點
Linux三大設備驅動
字符設備:IO 的傳輸過程是以字符為單位的,沒有緩沖。比如2C,SPI 都是字符設備
塊設備:I0 的傳輸過程是以塊為單位的。根存儲相關的,都屬于塊設備,比如,tf 卡
網絡設備: 與前倆個不一樣,是以 socket 套接字來訪問的。
1. 我們這節課要講的雜項設備驅動是屬于我們這三大設備驅動里面的哪個呢?
雜項設備是字符設備的一種。可以自動生成設備節點
我們的系統里面有很多雜項設備。我們可以輸入 cat /pro/misc 命令來查看
2.雜項設備除了比字符設備代碼簡單,還有別的區別嗎?
雜項設備的主設備號是相同的,均為 10,次設備號是不同的。主設設備號相同就可以節省內核的資源
3.主設備號和次設備號是什么?
設備號包含主設備號和次設備號,主設備號在 Linux 系統里面是唯一的,次設備號不一定唯一
設備號是計算機識別設備的一種方式,主設備相同的就被視為同一類設備
主設備號可以比做成電話號碼的區號。比如北京的區號是 010次設備號可以比作成電話號碼。
主設備號可以通過命令 cat /proc/devices 來查看。
下面是代碼
#include <linux/init.h>
#include <linux/module.h>
#include <linux/miscdevice.h>
#include <linux/fs.h> struct file_operations misc_fops = {.owner = THIS_MODULE};struct miscdevice misc_dev =
{.minor = MISC_DYNAMIC_MINOR,.name = "hello_misc",.fops = &misc_fops
};//drivers for init
static int misc_init(void)
{int ret = 0;ret = misc_register(&misc_dev);if(ret<0) {printk("misc_register is failed\n");return -1;}printk("misc registe is succeed \n");return 0;
}//drivers for exit
static void misc_exit(void)
{
//misc_deregister(&misc_dev);printk("misc exit \n");}module_init(misc_init);
module_exit(misc_exit);MODULE_LICENSE("GPL");
掛載驅動
ret = misc_register(&misc_dev);//掛載驅動misc_deregister(&misc_dev);//移除驅動