我在裸机ARM C代码中有一个中断,每秒发生几次,该中断需要执行大量计算。 我希望能够检测出这些计算是否花费了太多的CPU时间(当下一次发生时,当前中断尚未结束)。
我已经尝试过这种算法,但是它不起作用:
obj = 42
print(type(obj) is int)
您知道为什么它不起作用,以及我可以使用哪种更好的策略?在ARM C / assembly中有实现它的特定方法吗?
EDIT:工作负载是用户可配置的,因此它的目标是在处理量过多时发出警报,而不是崩溃或创建错误的结果。当负载过高时,中断将返回而不是处理事情,因此它可以保持中断的节奏,而不会累积越来越多的延迟
答案 0 :(得分:0)
一种方法是测量完成中断处理与开始后续中断之间的时间。这意味着您无需尝试检测“过载”情况,而是可以衡量出接近极限的程度。
如果您有一个空闲线程,则也可以尝试在该线程中(相对于计时器)计算进度,这意味着您可以避免在异常代码中添加任何开销。在这里,只有在有空闲周期进行测量时,您才可以测量空闲时间。