一、硬件中断和软件中断区别
- 硬件中断由外设产生(键盘、鼠标、时钟);软件中断执行中断指令产生的,是仅仅由当前运行的进程产生,通常是对一些I/O的请求,软中断仅与内核相联系, 而内核主要负责对需要运行的任何其他进程进行调度,软中断不会直接中断CPU, 也只有当前正在运行的代码(或进程)才会产生软中断. 软中断是一种需要内核为正在运行的进程去做一些事情(通常为I/O)的请求
- 硬件中断的中断号是由中断控制器提供的, 软中断的中断号由指令直接指出, 无需使用中断控制器
- 硬件中断是可屏蔽的, 软中断不可屏蔽
- 硬件中断处理程序要确保它能快速地完成任务, 这样程序执行时才不会等待较长时间, 称为上半部;软中断处理硬中断未完成的工作, 是一种推后执行的机制, 属于下半部;
二、软件中断
HWI是通过硬件中断触发的,而软件中断是由在工程中的SWI函数触发的。软件中断提供了在硬件中断和TSKs中间的一个优先级级别。 SWIs handle threads subject to time constraints that preclude them from being run as tasks(翻译不好,不好意思),但是它们对时间的要求并不像中断服务程序ISR那么严格。像HWI的一样,SWI的线程运行时也要和别人竞争。软件中断应该在调度一些执行期限为100 microseconds 或更多的事件中使用。SWIs允许HWIs将一些相对不是很关键的处理任务推给一个低优先级线程,减少CPU在一个中断服务程序中所花的时间,在这个中断服务程序中,别的HWI将被disable(where other HWIs can be disabled)。
used to defer hardware interrupt servicing to less restrictive(用于推迟硬件中断服务的限制)
硬件中断是上半部分,软件中断是下半部分,抢占调度(preemptive schedule)
软件中断和硬件中断状态机
BIOS优先级调度:
硬件中断:用于收集数据组合成帧或者buffer,执行最小过程;软件中断:处理每一个buffer中的数据集;Idle: 当没有实时事件激活时运行;硬件中断抢占软件中断,新数据通过帧数据处理不被继承。
同优先级先进先出原则
调度问题:ISR中断过程中post一个较高优先级的SWi_b,导致运行中必须先处理SWi_b
解决方法:在HWI时先禁止调度,HWI完成后恢复调度
软件中断SWi的有条件触发API函数:
运行API汇总
三、硬件中断
这是在DSP环境中发生的、由对外部异步的事件的反应而触发的一种中断。一个HWI funciton(也叫做中断服务例程或是ISR)会在一个硬件中断触发后执行来运行一个关键的进程,这个进程必需在一个强制的期限内执行完。HWI是在DSP/BIOS程序中拥有最高优先级的一批线程。由于DSP芯片以200MHz的频率在运行,而它是要被需要以接近200kHz的频率运行的进程所使用的,所以HWI需要在2~100microsecond(百万分之一秒)的期限内完成。对于更快的DSP,HWI应该为那部分更高的频率运行着的、有着更短运行期限的进程所使用
ISR抢占控制循环,通过中断句柄控制循环处理标志位置位。
中断服务调度内容:
硬件中断的API函数汇总:
参考:
软硬中断区别: https://blog.csdn.net/dela_/article/details/52751388