中断延迟测试(Interrupt Latency Test)
用于测量HRTOS从中断触发到进入ISR执行之间的时间延迟,用于评估实时性能。
机制定义
Interrupt Latency = 中断触发 → ISR第一条指令执行
延迟组成模型
Interrupt Latency = Detection Delay + CPU Response + Context Save + Vector Jump + ISR Entry
测试流程
1. 触发外部中断信号
2. CPU响应中断请求
3. 记录时间戳T1
4. ISR入口执行记录T2
5. 计算 T2 - T1
演示代码
#include
volatile unsigned int t1, t2, latency;
/* 外部中断 */
void ISR_Handler(void)
{
t2 = os_get_tick(); // 进入ISR时间
latency = t2 - t1;
os_news_send1(0, latency);
}
/* 模拟触发 */
void trigger_interrupt(void)
{
t1 = os_get_tick(); // 触发前时间
os_soft_interrupt(); // 软件触发中断
}
void system_init(void)
{
os_interrupt_init();
}
void main(void)
{
system_init();
while(1)
{
trigger_interrupt();
os_wait1(10);
}
}
API接口映射
用于控制中断触发与时间测量的核心接口。
实时性意义
中断延迟是RTOS实时能力的上限指标,它决定系统是否具备确定性响应能力, 是评估硬实时系统等级的核心标准。
系统意义
中断延迟是实时系统最关键指标之一,直接决定系统响应能力上限。