测试linux中断延迟时间的程序代码

测试linux中断延迟时间的程序代码,第1张

在中断服务程序中翻转一个GPIO的输出状态,用示波器测量此GPIO的输出波形并且测量频率,这个是测量中断调用频度的。 如果要测量中断的处理时间,则可以在进入中断服务程序时设置GPIO状态,退出时再设回来,用示波器可测量执行时间。

linux的每个中断,都有一个action的链表,每个action对应一个处理函数和参数指针。

一个共享的中断,action列表中的内容都会执行。

如果是独享的中断,中断的标志位()会相应置位,无法再次申请该中断。

申请的时候使用IRQF_标志说明中断的类型。IRQF_SHARED表示一个共享的中断。

read会不会被中断或者挂起?

会,这可要看底层驱动的实现

如果要加临界区,应该用什么函数?

用信号量,

sem_init():初始化

sem_wait():临界区前调用

临界区

sem_post();临界区后调用

其实用法大体上和加锁没有多大的区别

主要区别在于,ISR位于内核空间中,并且必须考虑到整个计算机在执行过程中被冻结。这意味着他们可以中断任何进程,以及内核中的任何事物。他们也"停止世界"。处理中断时,将不会发生其他任何事情。因此,如果中断处理程序等待某事,则计算机将冻结。如果中断处理程序进入循环,则唯一的选择是重新引导计算机。 ISR很难正确解决。关于它们有很多理论,在linux上,它们有上半部分和下半部分,具有各种优先级处理

以上就是关于测试linux中断延迟时间的程序代码全部的内容,包括:测试linux中断延迟时间的程序代码、Linux系统怎么使用技巧处理共享中断、弱弱滴问一下 linux应用程序里的读写read/write(fd,buf,sizeof buf),该read会不会被中断或者挂起等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10058498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存