什么是中断顶半部和底半部 ? (部分记忆)背
上半部: 上半部就是 中断处理函数 ,那些处理过程比较快,不会占用很长时间的处理就可以放在上半部完成。
下半部: 如果中断处理过程比较耗时,那么就将这些比较耗时的代码提出来,交给下半部去执行,这样中断处理函数就会快进快出。
Linux 内核将中断分为上半部和下半部的主要目的? 1. 就是实现中断处理函数的快进快出,那些对时间敏感、执行速度快的操作可以放到中断处理函数中,也就是上半部。 2. 剩下的所有工作都可以放到下半部去执行,比如在上半部将数据拷贝到内存中,关于数据的具体处理 就可以放到下半部去执行。
这里有一些可以借鉴的参考点:
1. 如果要处理的内容 不希望被其他中断打断 ,那么可以放到上半部。
2. 如果要处理的任务对 时间敏感 ,可以放到上半部。
3. 如果要处理的任务与 硬件有关 ,可以放到上半部 。
4. 除了上述三点以外的其他任务,优先考虑放到 下半部 。
举个例子,如果我们需要通过 adc 的值计算某个物理量的,那么几个
计算的过程可能是比较费时的。 因此,从adcdat0寄存器读取数值应该放在中断上半部。 计算物理量的过程应该放在中断下半部,即read函数中