Linux核心混雜裝置驅動

2021-08-15 07:02:43 字數 2066 閱讀 3424

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裝置。這樣做的好處,節約主裝置號,將某些裝置用鍊錶的形式鏈結在一起,最後通過查詢次裝...