1.1混雜裝置驅動特點:
本質上還是一類字元裝置,在驅動軟體上,混雜裝置的主裝置號已經由核心指定主裝置號為10;
各個混雜裝置個體通過次裝置號來區分;
1.2linux核心描述混雜裝置的資料結構 struct miscdevice
;作用:描述混雜裝置
成員:minor:混雜裝置對應的次裝置號,切記主裝置號
由核心指定為10,一般指定為巨集misc_dynamic_minor,
表明讓核心來幫你分配乙個次裝置號
name:裝置檔名,並且裝置檔案由核心自動幫你建立
fops:指向混雜裝置的硬體操作方法
1.3實現乙個混雜裝置驅動的程式設計步驟: 1.定義初始化混雜裝置物件
struct miscdevice led_misc =
;2.向核心註冊混雜裝置物件,一旦註冊完畢,核心就有乙個真是的混雜裝置驅動
misc_register (&led_misc);
3.從核心解除安裝混雜裝置物件
misc_deregister(&led_misc);
利用混雜裝置程式設計思想來實現led驅動
實施步驟:
1.mkdir /opt/drivers/day05/2.0
2.cd /opt/drivers/day05/2.0
3.vim led_drv.c
4.vim led_test.c
5.vim makefile
6.make
7.arm-linux-gcc -o led_test led_test.c
8.cp led_test led_drv.ko /opt/rootfs
arm:
1.insmod led_drv.ko
2.ls /dev/myled -lh //檢視主,次裝置號的資訊
3../led_test
#include #include #include //struct miscdevice
#include //strcut file_operations
#include #include #include //copy_*
//宣告描述led硬體相關的資料結構
struct led_resource ;
//定義初始化led硬體資訊
static struct led_resource led_info = ,
[1] =
};//定義開關命令字
#define led_on 0x100001
#define led_off 0x100002
static long led_ioctl(struct file *file,
unsigned int cmd,
unsigned long arg)
return 0;
}//定義初始化硬體操作的方法
static struct file_operations led_fops = ;
//定義初始化混雜裝置物件
static struct miscdevice led_misc = ;
static int led_init(void)
return 0;
}static void led_exit(void)
//解除安裝混雜裝置物件
misc_deregister(&led_misc);
}module_init(led_init);
module_exit(led_exit);
module_license("gpl");
#include #include #include #include #define led_on 0x100001
#define led_off 0x100002
int main(void)
//write->...->呼叫led_write
while (1)
//關閉裝置
//close->...->呼叫led_close
close(fd);
return 0;
}
Linux核心混雜裝置驅動程式設計框架
struct miscdevice 向核心註冊乙個混雜裝置 misc register 註冊的混雜裝置物件位址 從核心解除安裝混雜裝置 misc deregister 混雜裝置物件位址 int main 採用輪詢方式獲取狀態 while 1 close fd return 0 include inc...
linux混雜裝置驅動
在linux系統中,存在一類字元裝置,它們擁有相同的主裝置號 10 但次裝置號不同,我 們稱這類裝置為混雜裝置 miscdevice 所有的 混雜裝置形成乙個鍊錶,對裝置訪問時核心根據 次裝置號查詢到相應的混雜裝置。linux中使用struct miscdevice來描述乙個混雜裝置。struct ...
Linux 混雜裝置驅動模型
混雜裝置miscdevice是字元裝置的一種,它們共享乙個主裝置號misc major 即10 但次裝置號不同,所有的miscdevice裝置形成了乙個鍊錶,對裝置訪問時核心根據次裝置號查詢對應的miscdevice裝置。這樣做的好處,節約主裝置號,將某些裝置用鍊錶的形式鏈結在一起,最後通過查詢次裝...