字符设备驱动开发教学课件电子教案.pptx
《字符设备驱动开发教学课件电子教案.pptx》由会员分享,可在线阅读,更多相关《字符设备驱动开发教学课件电子教案.pptx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、5.2 字符设备驱动开发Internet+Education Solutions第5章 Linux驱动开发技术5.2 字符设备驱动开发EducationSolutions目录ContentsInternet+中断按键驱动开发ADC设备驱动开发PWM设备驱动开发开发实践8:57 / 4中断按键驱动开发电话铃响看书看书接电话中断概念中断是指微处理器在执行某段程序的过程中,由于某种原因,暂时中止原程序的执行,转去执行相应的处理程序,执行完后再回来继续执行原程序的过程。8:57 / 5中断的响应过程中断按键驱动开发1 中断源发出中断请求。2 判断微处理器是否允许中断,以及该中断源是否被屏蔽。3 优先权
2、排队。4 状态微处理器执行完当前指令或当前指令无法执行完,则立即停止当前程序,保护断点地址和微处理器当前,转入相应的中断服务程序。5 执行中断服务程序。6 恢复被保护的状态,执行中断返回指令回到被中断的程序或转入其他程序。8:57 / 6中断的作用中断按键驱动开发微处理器与外设并行工作,解决了微处理器速度快、外设速度慢的矛盾。实时处理。故障处理。实现人机交互。8:57 / 7Linux中断机制由三部分组成:Linux中断驱动开发 内核自身初始化过程中对中断处理器制初始化,例如中断的数据结构以及中断请求等。中断子系统初始化 中断整体处理过程。中断或异常处理 为设备驱动提供API,例如注册,释放和
3、激活等。中断API8:57 / 8中断子系统初始化Linux中断驱动开发 第一个过程在内核引导过程。 第二个过程内核在初始化自身的start_kernal函数中使用trap_init初始化系统保留中断向量,使用init_IRQ完成其余中断向量初始化。中断描述符表(IDT)初始化 init_IRQ调用pre_intr_init_hook,进而最终调用init_ISA_irqs初始化中断控制器以及每个IRQ线的中断请求队列。中断请求队列初始化8:57 / 9异常处理过程中断控制器处理主要有5个步骤:中断请求 中断相应 优先级比较提交中断向量 中断结束CPU处理流程主要有6个步骤:进入中断或异常服务
4、程序执行。如果是中断则关闭可屏蔽中断 如果是异常将异常代码压入堆栈特权级发生变化,进行堆栈切换 特权检查 通过IDTR寄存器找到IDT 确定中断或异常的中断向量 中断控制器IRQINTRCPUIDT中断服务程序或异常NMI8:57 / 10中断编程函数 int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id)申请中断函数 void free_irq(unsigned int irq, void *dev_id)释放IRQ8
5、:57 / 11input输入子系统结构USBPS/2SerialIuput CoreKeyboardHanderConsoleSubsystemKeyboardHanderUserspace(/dev/input/mouseX)(/dev/input/mice)JoystickHandlerEventHandlerUserspace(/dev/input/jsX) Userspace(/dev/input/eventX) DriversHanders8:57 / 12input输入子系统上层(输入事件驱动层)中层(输入核心层)下层(输入设备驱动层)8:57 / 13输入子系统相关函数设备注册
6、 int input_register_device(struct input_dev *dev)初始化 set_bit(EV_KEY,button_dev.evbit)报告事件 void input_report_key (struct input_dev *dev, unsigned int code, int value)void input_report_rel (struct input_dev *dev, unsigned int code, int value)void input_report_abs (struct input_dev *dev, unsigned int c
7、ode, int value)报告结束 input_sync(input_dev)8:57 / 14ADC接口介绍模/数转换器(Analog-to-Digital Converter,ADC)也称为A/D转换器,是一种能够将连续变化的模拟信号转换为离散的数字信号的器件。数字信号输出可能会使用不同的编码结构,通常会使用二进制编码来表示,3位电压转换原理表:8:57 / 15ADC设备驱动开发A/D转换器的信号采样率 模拟信号在时域上是连续的,通过A/D转换器可以将它转换为时间上离散的一系列数字信号。这要求定义有一个参数来表示对模拟信号采样速率,这个采样速率称为转换器的采样率(Sampling R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符 设备 驱动 开发 教学 课件 电子 教案
限制150内