创客学院Linux驱动开发
文章平均质量分 92
华清远见的创客学院的Linux驱动开发教程讲解
big__C
小白
展开
-
Linux驱动开发之字符设备驱动
目录字符设备驱动开发框架申请设备号和创建文件结点申请设备号创建设备结点在驱动中实现文件IO的接口,让应用程序可以调用文件IO用户控制驱动和驱动控制硬件方式用户空间和内核空间的数据交互用户操作驱动与控制外设的关系通过驱动操控LED灯字符设备驱动开发框架开发字符设备驱动的要素: 必须有一个设备号,用于在众多设备驱动中进行区分。 用户必须知道设备驱动对应的设备结点(设备文件,在Linux中所有设备都是文件)。 对设备操作其实就是对文件进行操作,应用空间中操作open(),read()…的时候原创 2020-09-07 00:07:25 · 721 阅读 · 1 评论 -
Linux驱动开发之按键驱动(1)--------- 阻塞和非阻塞模型
目录一,按键驱动的初级编写框架1,获取中断号2,申请中断3,实现字符设备驱动框架4,驱动中将硬件所产生的数据传递给用户利用阻塞和非阻塞IO模型实现按键驱动1,阻塞2,非阻塞中断框架模型一,按键驱动的初级编写框架1,获取中断号[ 1 ] 宏定义:(在2.6内核或者之前的内核没有支持设备树的情况下使用的)在没有设备树的内核中,中断号定义为宏IRQ_EINT (中断号)[ 2 ] 在设备树文件中添加结点信息:设备树文件通常放在目录/arch/arm/boot/dts/中,看soc的型号区分,原创 2020-09-07 23:10:28 · 354 阅读 · 0 评论 -
Linux驱动开发之按键驱动(2)--------- 多路复用和异步信号通知模型
目录原创 2020-09-08 14:42:51 · 208 阅读 · 0 评论 -
Linux驱动开发之按键驱动(3)--------- 中断下半部的实现方法
目录中断上下文中断下半部的实现方法1.tasklet的实现2.工作队列workqueue的实现中断上下文************中断下半部的实现方法1.中断下半部的实现方法:softirq:处理比较快,但是内核级别的机制,需要修改整个内核源码,不常用tasklet:内部实际调用了softirqwork queue:工作队列,使用方法类似tasklet2.tasklet和work queue实现的基本逻辑1.tasklet的实现struct tasklet_struct{原创 2020-09-08 15:31:43 · 489 阅读 · 0 评论 -
Linux驱动开发之BUS总线编程
目录一,设备驱动模型1.Linux设备驱动模型的由来2.设备驱动模型框架二,BUS总线模型编程1.总线对象2.device对象3.driver对象4.device对象和driver对象匹配一,设备驱动模型1.Linux设备驱动模型的由来首先回顾设备驱动编写的一般流程【1】实现入口函数module_init()和模块卸载函数module_exit();【2】申请设备号,register_chrdev(); -----> (与内核相关)【3】利用udev/mdev机制创建设备文件结点cl原创 2020-09-09 00:07:14 · 674 阅读 · 0 评论 -
Linux驱动开发之platform总线编程
目录一,为什么有平台总线二,平台总线三元素1.总线对象platform_bus2.platform_device对象3.platform_driver对象三,编写代码:一个能在多平台下使用的led驱动1.platform_device2.platform_driver3.应用程序编写一,为什么有平台总线【1】用于平台升级,比如三星的:2410,2440,6410,S5pv210,4412…硬件平台升级的时候,部分模块的控制方式基本上类似的,但是不同平台模块的地址是不一样的。【2】比如GPIO的控制原创 2020-09-09 22:43:35 · 431 阅读 · 0 评论 -
Linux驱动开发之Input子系统(1)------- 输入子系统的简单开发
目录一,输入子系统的作用与框架1.什么是输入设备2.输入子系统的作用3.输入子系统的框架二,最简单的输入子系统的编程一,输入子系统的作用与框架1.什么是输入设备按键/keyboardmousetouchscreen:gt811,ft56xx…游戏杆…有多个输入设备需要驱动的时候,如果不考虑输入子系统,则每个设备驱动每次都要编写大量重复代码,而多个输入设备的特点都是获取数据之后上报给用户,所以内核把这部分同用代码编写好,将差异化的代码(即各个输入设备获取数据,操作硬件的方式)留给驱动原创 2020-09-10 20:15:31 · 549 阅读 · 0 评论 -
Linux驱动开发之input子系统(2)------- 输入子系统的分层分析
目录分层分析1.input核心层:input.c2.input handler层:evdev.c3.input device层:(自己写的simple_input.c)4.分层分析框架分层分析1.input核心层:input.c【1】模块入口:subsys_initcall(input_init);module_exit(input_exit);【2】input_init主要实现的功能1.注册类,类似于class_create()class_register(&inpu原创 2020-09-12 22:40:39 · 261 阅读 · 0 评论