中断子系统

概述

请先阅读中断基础

  • Linux嵌入式中断不可嵌套

  • 分为硬件中断和软件中断

    • 硬件中断

      cpu每执行一条指令的时候,就会检查是否有硬件中断发生,当发生硬件中断的时候,根据硬件中断号,跳转到指定地址去执行

      ../../_images/image-20221205094706968.png

      • 保存现场,关中断

      • 会跳到指定的地址去执行硬件中断的回调函数,此时分为上半部和下半部分

        ../../_images/image-20221205094038515.png

      • 当上半部执行完毕的时候就打开了中断,恢复现场,下半部就靠cpu调度处理一些非紧急的事情,此时的下半部有可能被新的中断打断。

        • 假如中断A在上半部执行的时候又发生了中断A,那么只有当A执行到下半部的时候(此时已经打开了中断),才会再次进入A中断的上半部,而不是直接把A中断信号给丢弃了

    • 软件中断

      处理时机

      ../../_images/image-20221205094950647.png

      • 当有硬件中断发生时候,硬件中断执行完后,顺便检查下是有够软件中断发生

      • 当在cpu的节拍中,比如每10ms就检查下是否有软件中断发生

  • 下半部处理机制参见02.Linux驱动开发基础

    1. 软中断

    2. tasklet

    3. work queue工作队列

    4. 新技术threaded irq

Linux中断系统中重要数据结构