前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统中断实时性测试方法

系统中断实时性测试方法

作者头像
bigmagic
发布2021-02-07 16:13:33
2.3K0
发布2021-02-07 16:13:33
举报
文章被收录于专栏:嵌入式iot

系统中断实时性测试方法

1.概述

对于嵌入式系统来说,中断的响应时间在时序要求非常严格的情况下十分的重要,所以必须要能够找到中断测试的方法。本文主要介绍两种常用中断测试方法的理论。

2.中断做了什么?

如果需要测试中断响应时间,那么必须要理解为什么会有中断响应时间,以及到底测试的是什么数据?

对于处理器来说,当设置了外部中断,从理论上分析,应该系统会从立即正常运行程序的状态转到中断处理程序的状态,从而调用中断处理函数去执行具体的中断程序。当中断处理完成后,又恢复到之前运行程序的状态中去执行。

而上下文则是当前的线程的执行状态,更加准确的说就是处理器相关的寄存器。比如对于cortex-m系列处理器来说,则保存R0~R15和xPSR寄存器。然后通过SP的偏移将寄存器压入栈内存中。然后跳转到具体的中断处理函数中。中断处理完成后则恢复现场,也就是将栈内存中的数据又写回寄存器中。此时又可以从打断的地方开始执行了,这就是一个中断处理过程的基本流程。

而系统的中断响应时间指的是什么?

由于处理器的设计,响应时间无法完全的做的立即进入中断处理函数,而此时从中断的产生,到中断函数处理的这个过程就是中断响应时间,文字描述就是硬件响应+硬件压栈+软件压栈。

3.那么这段时间该如何测试?

中断测试的办法,目前我可以想到的有两种,第一种就是PWM中断引脚测试法,第二种则是定时器法。下面分别描述这两种办法的思路。

示波器测试法

首先用示波器通道1输入一个固定频率的方波,然后示波器通道2接到一个测试的gpio上。

其测试方法是当pin1输入一个方波接到mcu的引脚上,并写程序设置pin1为中断上升沿(或下降沿),pin2则最开始为低电平,当到中断处理入口时,设置为高电平。那么示波器上显示如下的图形则可以得出中断响应时间。

由于上升沿中断产生后,pin2通道二中断处理时,会将硬件gpio拉高,此时只需要测试两者之间的时间即可。

计时器测试法

该测试技巧在于使用芯片内部的两个定时器进行测量。原理上是开启两个计数器,一个是向上递增的计数器,另外一个是向下递减的计数器。递减的计数器当一直递减到0时,产生中断。

暂时定义为这两个定时器为timer1和timer2。

在某一个时间点,同时设置timer1倒计时2s,并且记录此时timer的计数1,cnt1。当2s倒计时后,中断响应,此时硬件在做处理,执行到实际的中断处理后,在最开始的代码处记录下timer2的计数cnt2。于是可以得到中断响应时间应该为

代码语言:javascript
复制
cnt2-cnt1-2s

当然,这个倒计时可以根据具体的情况进行调节。

4.小结

从测量芯片的中断响应时间上,具体的硬件可能会有一些差异,有些芯片可以之间通过中断向量找到中断产生的原因,而有些中断处理则是统一入口处理,然后通过读取寄存器来判定异常或者中断产生的原因,这样的中断处理效率也会下降,上文的中断测试方法只是提供一种通用的思路解决办法,具体的芯片的处理流程则需要自己去设定中断响应时间的测试策略。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式IoT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系统中断实时性测试方法
    • 1.概述
      • 2.中断做了什么?
        • 3.那么这段时间该如何测试?
          • 示波器测试法
          • 计时器测试法
        • 4.小结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档