misc雜項裝置驅動

2021-06-03 07:40:52 字數 2313 閱讀 9848

linux裡面的misc雜項裝置是主裝置號為10的驅動裝置,它的註冊跟使用比較的簡單,所以比較適用於功能簡單的裝置。

它有自己的裝置結構體:

struct miscdevice  ;

它在標頭檔案linux/miscdevice.h裡面有定義,

其中minor是misc裝置的副裝置號,misc裝置主要依賴minor去區分,如果設定為misc_dynamic_minor則表示系統自動分配未使用的minor

nodename是在/dev下面建立的裝置驅動節點,

fops是驅動主體處理函式入口指標

主要使用到的函式有:

int misc_register(struct miscdevice * misc);

int misc_deregister(struct miscdevice *misc);

misc01.c檔案

[cpp]view plain

copy

print?

#include 

#include 

#include 

#include 

/module_license("dual bsd/gpl");  

int open_state = 0;  

/int misc01_open(struct inode *inode, struct file *filp)  

printk("misc01 has been open!\n");  

return -1;  

}  int misc01_release(struct inode *inode, struct file *filp)  

printk("misc01 has not been open yet!\n");  

return -1;  

}  ssize_t misc01_read(struct file *filp, char *buf,  

size_t count, loff_t fpos)  

ssize_t misc01_write(struct file *filp, char *buf,  

size_t count, loff_t fpos)  

int misc01_ioctl(struct inode *inode, struct file *filp,  

unsigned int cmd, unsigned long arg)    /

struct file_operations fops =   

;  struct miscdevice dev =   

;  int setup_misc01(void)    /

static

int __init misc01_init(void)  

static

void __exit misc01_exit(void)    /

module_init(misc01_init);  

module_exit(misc01_exit);  

makefile檔案

[html]view plain

copy

print?

#makefile  

obj-m   :=  misc01.o  

pwd     :=  $(shell pwd)  

k_dir   :=  /lib/modules/$(shell uname -r)/build  

all:  

$(make) -c $(k_dir) m=$(pwd) modules  

clean:  

$(make) -c $(k_dir) m=$(pwd) clean  

test:misc01_test.o  

gcc -o $@ lt;  

misc01_test.c檔案

[cpp]view plain

copy

print?

#include 

#include 

#include 

#include 

#include 

/int main(int argc, char **argv)  

printf("open /dev/misc01_node ok!\n");  

if (ioctl(fd, 6) != 0)  

else

printf("ioctl ok!\n");  

close(fd);  

return 0;  

LED驅動 misc裝置驅動例項

作為misc裝置驅動的乙個例項,我選擇最簡單的led的驅動。下面簡要記錄下led驅動的編寫和實驗過程。1 建立資料夾led 2 在led資料夾下編寫led驅動程式leds.c include include include include include include include includ...

字元裝置驅動之LED 混雜裝置驅動(misc)

misc led.c include include include include include include include include include include include static volatile unsigned long gpfcon volatile unsig...

Linux雜項裝置驅動框架

首先是標頭檔案定義 include include include include 以下是一些file operations中提供的一些函式,這些函式用於給應用層提供介面,以此來調動裝置。static int filename open struct inode my indoe,struct fi...