找回密码
 注册
关于网站域名变更的通知
查看: 281|回复: 1
打印 上一主题 下一主题

研究 linux 内核 - 中断

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-10-12 15:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
研究 linux 内核 - 中断, S  ?' ~5 t0 j# p+ r& _. f

$ y/ A9 ^' O) N% d: F5 j
1 ^4 F- b4 l& q- B& [3 M# D! g
$ |# C8 C- k+ M2 t! H
1,还是惯例,本节将用一个小例子来说明中断的工作原理和过程以及如何在驱动中使用中断。6 B" r" v$ N4 G
& P. f/ \. n& k; o
2,说在前面
5 o  d' }4 t9 y9 d1》中断和异常是有区别的。异常是一种同步中断。上一节说到的系统调用使用的内核陷入就是异常(软中断)。9 Y4 z3 V4 L( J- H
2》中断的实现需要硬件的支持,比如要让硬件工程师把设备的某个引脚连接到CPU的跟中断相关的某个引脚。
2 p+ r9 t. \+ N6 k, x3》中断比较特殊,不能占用太多时间,所以有必要把需要处理很多事情的ISR分成中断上下文,上文负责必须的处理,剩下的交给下文。
, c# W& K/ W! K2 D4》中断处理程序不能重入,如果你确定没有SMP情况,可以暂时不加竞争保护措施。  n) F7 N# L/ V9 e/ J

- J1 y6 R  V7 T9 I0 B3,中断,先参考下图,图中只有一个键盘,现在假设还有一个鼠标和键盘共用一根中断线。" A* g1 U  }) }/ g
1》 你按下键盘上的一个键,这时硬件会产生一个电信号' A% x: v: h: K1 b/ ]3 A
2》这个电信号传给中断控制器1 X6 h; u4 G6 A: b$ ?0 Q9 l, M$ m
3》中断控制器产生一个电信号,给CPU的某个引脚
2 e# }+ J3 a+ o0 v+ J  k" r. n! t! s, c4》CPU发现这个引脚的电信号,PC(程序计数器)指向对应的地址8 I; m+ ~, ?4 A4 `& m
' I9 n9 }4 d+ Z* {1 m
好硬件完成的工作到此为止,剩下的交给软件
1 r$ W4 F; n6 u) X, p
5》这个地址上有内核事先填充的中断向量(一般情况是一条跳转指令)  f+ b. A) n' g8 N
6》内核检查这条中断线上有没有注册中断处理程序。
  I3 [+ i0 V5 p/ U# m' {7》如果没有,中断返回。
- X; \7 k: |# m/ u  d0 q8》如果有,依次运行这条中断线上注册的所有中断处理函数。
  F7 n5 D0 A4 l8 B' q4 F& e8 X9》中断返回。& ]0 t; S+ ]* |6 Q* q, i0 p8 n1 d, h

% }  U, e6 r! z5 a. M9 g2 ^- \4,在驱动程序中如何使用中断* B7 `& x! ~7 Q
1》先让硬件工程师帮忙弄一根中断线(有时候不用)。: b' F3 M7 E; E7 A( \9 d, o# `+ k
2》向内核注册中断。其中一个参数是ISR函数指针。/ K$ s' R! u: q) o+ c
3》实现ISR。需要注意的是,你的ISR,必须知道这次中断是不是你的设备产生的,具体如何知道,自己想办法,呵呵。, p$ U* u8 _8 N9 y# k- S# q. B

" a  ?4 i0 D1 K# U2 S6 z! O. ]3 [0 x) g1 V+ S5 W
; Q0 y& B+ V* b" A
" r7 d$ E% e( b  G/ b+ e
0 Z( l$ i5 {- E* e
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 02:00 , Processed in 0.171875 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表