zoukankan      html  css  js  c++  java
  • linux驱动编写之中断处理

    一、中断

    1、概念

          学过单片机的应该非常清楚中断的概念,也就是CPU在正常执行程序过程中,出现了突发事件(中断事件),于是CPU暂停当前程序的执行,转去处理突发事件。处理完毕后,CPU又返回被中断的程序位置继续执行。

    2、处理流程

          单片机的中断处理程序相对简单,包含中断源的配置和中断服务程序的编写。中断源配置包含中断源类型、触发方式、优先级等内容;中断服务程序包含服务历程、中断标志位清楚等内容。

         linux中断程序,以特有的操作系统linux为基本平台,实现了其特有的中断程序处理方式,为开发者也提供了一套开发流程。但是,无论系统怎么封装,这套流程与单片机的中断处理流程差别不大,主要包含中断源的配置和中断服务程序的编写。涉及到的主要函数有:

      request_irq()    申请中断

      free_irq()      释放中断

      irq_interrupt()    中断服务

    二、中断编程

    1、申请中断

     int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *name, void *dev_id)
    • irq         申请的硬件中断号
    • handler      中断处理函数,回调函数
    • irqflags      触发方式、工作方式
    • name    中断名称,在cat /proc/interrupts中可以看到此名称
    • dev_id       一般设置为这个设备的设备结构体或者NULL

    2、释放中断

    void free_irq(unsigned int irq, void *dev_id)

    3、中断服务

    typedef irqreturn_t (*irq_handler_t)(int, void *);

      中断服务程序,输入参数有两个,分别是中断号irq和dev_id,返回参数类型irqreturn_t。

    参考博客:   Linux设备驱动中断机制

  • 相关阅读:
    Nginx编译参数详细注释(解释)(转载)
    linux 下开机同步时间
    115转存代码
    清除linux下history命令
    【python学习1】编写猜数字的小游戏
    对深层嵌套的代码进行重构
    JS对JSON的操作总结
    调程序的小女孩(感谢安徒生)(转)
    区块链资料
    aws创建实例 通过密钥登录后 更改root账号密码 创建普通账户 开放ssh密码登录 关闭root账号登录
  • 原文地址:https://www.cnblogs.com/amanlikethis/p/6882882.html
Copyright © 2011-2022 走看看