#include #include#include #include #include #include #include #include #include static int first_drv_open(struct inode *inode, struct file *file)static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count, loff_t * ppos)static struct file_operations first_drv_fops = ;int major;static int first_drv_init(void)static void first_drv_exit(void)module_init(first_drv_init);module_exit(first_drv_exit);module_license("gpl");
上面是簡單的驅動程式 當驅動程式載入之後 ,cat /proc/devices 可以看見裝置的 主裝置號和裝置的名稱
然後 還需要建立裝置節點,mknod /dev/bb c major minor 其中bb是裝置節點的名字 可以起其他的名字 ,應用程式開啟對應的裝置節點就行了。
exec 5major = register_chrdev(0, "first_drv", &first_drv_fops); 這裡 的第乙個引數如果寫的零,那麼會自動分配主裝置號
在**中加入如下一些**可以實現自動建立裝置節點的功能
#include #include#include #include #include #include #include #include #include static struct class *firstdrv_class;
static struct class_device *firstdrv_class_dev;
static int first_drv_open(struct inode *inode, struct file *file)
static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count, loff_t * ppos)
static struct file_operations first_drv_fops = ;
int major;
static int first_drv_init(void)
static void first_drv_exit(void)
module_init(first_drv_init);
module_exit(first_drv_exit);
module_license("gpl");
上述**就是能夠自動 建立裝置節點的**。先建立類,然後在類下面建立裝置。 linux裝置驅動程式 字元裝置驅動程式
先留個 有一起學習驅動程式的加qq295699450 字元裝置驅動 這篇比較惱火。載入成功,但是讀不出來資料,有知道怎麼回事的,留個言,一起討論下 資料結構 struct scull mem struct scull dev dev 整個驅動程式 如下 include include include...
Linux裝置驅動程式 字元裝置驅動程式
1.檢視主裝置號,次裝置號 進入 dev目錄執行ls l,第四,五列分別為主次裝置號,10,180,1,5,這些是主裝置號,而60,63這些就是次裝置號 130 shell android dev ls l crw rw r system radio 10,60 1969 12 31 21 00 a...
裝置驅動程式
首先要問,什麼是裝置驅動程式?又名裝置處理程式,是i o系統的高層與裝置控制器之間的通訊程式 起乙個翻譯的作用 這個東西能幹什麼?簡要來說就是啟動指定裝置,完成上層指定的i o工作 裝置驅動程式的特點 略,書上193頁有 裝置處理方式 為每一類裝置設定乙個程序,專門用於執行這類裝置的i o操作 一對...