linux驱动
文章平均质量分 90
jiushimanya
这个作者很懒,什么都没留下…
展开
-
字符驱动设备3(虚拟地址映射)
内核中有两套虚拟地址映射方法:动态和静态 静态映射:内核移植时以代码的形式硬编码,如果需要改变需要更改源代码后重新编译内核,内核启动时建立静态映射表, 内 核关机时销毁,中间一直有效。 动态映射:驱动程序根据需要随时动态建立映射,使用、销毁映射,映射的短期的 动态映射和静态映射是可以同时使用的。 静态映射好处是效率高,坏处是始终占用虚拟地址空间; ...原创 2018-08-30 17:07:14 · 237 阅读 · 0 评论 -
字符设备驱动3(新接口)
驱动注册接口: 老接口:register_chardev(); 新接口:register_char_region(注册设备号)/alloc_chrdev_region+cdev(申请分配一个设备号) cdev结构体:在cdev.h文件中struct cdev { struct kobject kobj; struct module *owner; const st...原创 2018-08-31 10:41:11 · 164 阅读 · 0 评论 -
字符驱动设备4(led驱动框架)
led驱动相关文件在drivers/leds目录下,led-class.c led-core.c两个文件是内核开发者提供的,leds-xxx.c是设备驱动开发者提供的。 leds-24xx.c通过调用led_classdev_register来完成驱动注册的,该函数是在led_class.c中定义的。 led驱动框架中内核开发者实现的部分主要是在led-class.c中,led_class.c...原创 2018-08-31 15:57:17 · 202 阅读 · 0 评论 -
字符设备驱动6(misc杂散类设备)
杂散类设备是为了让驱动开发者给一些不好分类的设备归到一个类里面,防止需要建立的类太多。有了类才能用udev自动添加设备。misc主设备号是10。 misc源码框架本身也是一个模块,内核启动时可以自动加载。在misc.c文件中,已经通过class_create和register_chrdev(老的注册设备接口)创建了类,并注册了杂散类字符设备,主设备号是10。开放了misc_register接口注...原创 2018-09-04 15:17:38 · 222 阅读 · 0 评论 -
字符设备驱动1
常用的模块操作命令 (1)lsmod(list module,将模块列表显示),功能是打印出当前内核中已经安装的模块列表 (2)insmod(install module,安装模块),功能是向当前内核中去安装一个模块,用法是insmod xxx.ko (3)modinfo(module information,模块信息),功能是打印出一个内核模块的自带信息。,用法是modinfo xxx.k...原创 2018-08-30 15:03:06 · 185 阅读 · 0 评论 -
字符设备驱动2(添加应用程序来调用驱动)
应用程序是通过主次设备号来寻找对应的在内核中维护的file_operations结构体,从而操作相应的设备。 驱动设备文件的创建: 设备号=主设备号+次设备号,主设备号表示种类,次设备号表示第几个。默认次设备号是0,使用ls -l可以查看该设备的主次设备号. mknod来创建主次设备号mknod dev/xxx c 主设备号 次设备号(C表示...原创 2018-08-30 15:34:47 · 395 阅读 · 0 评论 -
字符设备驱动5(platform总线设备,后面的总结比较实用)
设备驱动模型的底层架构 kobject (1)定义在linux/kobject.h中 (2)各种对象最基本单元,提供一些公用型服务如:对象引用计数、维护对象链表、对象上锁、对用户空间的表示 (3)设备驱动模型中的各种对象其内部都会包含一个kobject (4)地位相当于面向对象体系架构中的总基类 、kobj_type (1)很多书中简称为ktype,每一个kobject都需要绑定一个...原创 2018-09-03 16:07:45 · 791 阅读 · 0 评论