如何维护给做网站的客户,商标设计怎么收费,分页wordpress,网站建设drwhcm需要板子一起学习的可以这里购买#xff08;含资料#xff09;#xff1a;点击跳转 一、混杂设备
混杂设备也叫杂项设备#xff0c;是对普通的字符设备(struct cdev)的一种封装,设计目的就是为了简化字符设备驱动设计的流程。具有以下特点#xff1a;
1) 主设备号为10含资料点击跳转 一、混杂设备
混杂设备也叫杂项设备是对普通的字符设备(struct cdev)的一种封装,设计目的就是为了简化字符设备驱动设计的流程。具有以下特点
1) 主设备号为10次备号不同。 2) 大大简化cdev的设计流程。 3) 混杂设备与普通的字符设备在使用上并没有区别。 二、查看系统的混杂设备
[rootGEC6818 /proc]#cat devices ---- 查看设备
Character devices: ---字符设备1 mem5 /dev/tty5 /dev/console5 /dev/ptmx5 ttyprintk10 misc -----数字为主设备号字符串为设备名字:混杂设备13 input14 sound21 sg29 fb81 video4linux86 ch89 i2c108 ppp116 alsa128 ptm136 pts153 spi
Block devices: ---块设备259 blkext7 loop8 sd11 sr65 sd66 sd67 sd68 sd69 sd70 sd71 sd[rootGEC6818 /proc]#cat misc ---查看系统的混杂设备42 network_throughput43 memory_throughput44 network_latency45 cpu_dma_latency46 xt_qtaguid47 alarm48 log_system49 log_radio50 log_events51 log_main52 ashmem53 binder54 uhid236 device-mapper130 watchdog55 hdmi-cec56 nxp-scaler223 uinput57 keychord[rootGEC6818 /dev]#ls -lcrw-rw---- 1 root root 10, 50 Jan 1 1970 log_eventscrw-rw---- 1 root root 10, 51 Jan 1 1970 log_maincrw-rw---- 1 root root 10, 49 Jan 1 1970 log_radiocrw-rw---- 1 root root 10, 48 Jan 1 1970 log_systemcrw-rw---- 1 root root 10, 237 Jan 1 1970 loop-control
//主设备号为10则表示为混杂设备依据次设备号来区分各个设备,各个设备并没有直接联系
三、混杂设备的驱动设计流程
1、普通字符设备驱动流程
驱动程序的设计框架三个阶段 创建一个字符设备 --- struct cdev 创建一个文件操作集 申请设备号 字始化设备 设置加入到内核 ------------------------------ 创建一个class 创建一个device -----得到该设备的文件 ----该文件提供给应用层来访问 -------------------------- 申请物理内存区 ---- request_mem_region ioremap ---- 得到物理设备基址的虚拟的起始地址 得到相应物理地址的虚拟地址并来访问硬件 2、混杂设备驱动设计流程(struct miscdevice)
1) 定义一个混杂设备
#include linux/miscdevice.h
static struct miscdevice led_misc {.name gec6818_led_drv, //设备文件的名字.fops gec6818led_fops, //文件操作集.minor MISC_DYNAMIC_MINOR, // 设置次设备号MISC_DYNAMIC_MINOR --- 表示由系统动态分配一个次设备号
};
2) 定义一个文件操作集
static const struct file_operations gec6818led_fops {.owner THIS_MODULE,.unlocked_ioctl gec6818_led_ioctl,.open gec6818_led_open,.release gec6818_led_release,
};
3) 注册混杂设备到内核中
int misc_register(struct miscdevice * misc)
参数说明struct miscdevice * ---- 混杂设备对象返回值成功0失败负数
4)从内核中注销混杂设备
int misc_deregister(struct miscdevice *misc)
觉得有帮助的话打赏一下呗。。