中断延迟测试(ISR → Task Latency)
测量HRTOS从中断触发到任务响应之间的系统级延迟(事件驱动模型)。
机制定义
Latency = ISR触发 → event投递 → task唤醒 → task执行
测试模型
ISR只负责事件投递
任务负责统计与处理
负载任务用于模拟调度压力
相关 API(v2)
事件初始化
ISR事件投递
事件等待
时间系统
执行流程
IRQ → ISR → os_event_set_from_isr → Scheduler → Task Wake → Measurement
演示代码
#include "hrtos.h"
sbit LED_ISR = P1^0;
sbit LED_TASK = P1^1;
sbit LED_LOAD = P1^2;
#define EVENT_IRQ 1
static u16 isr_cnt = 0;
static u16 task_cnt = 0;
/* =========================
* ISR(极简)
* ========================= */
void INT0_ISR(void)
{
isr_cnt++;
LED_ISR = ~LED_ISR;
os_event_set_from_isr(EVENT_IRQ);
}
/* =========================
* 响应任务(测延迟点)
* ========================= */
void response_task(void)
{
while(1)
{
os_event_wait(EVENT_IRQ, 0);
task_cnt++;
LED_TASK = ~LED_TASK;
}
}
/* =========================
* 负载任务(压力测试)
* ========================= */
void load_task(void)
{
volatile u16 i;
while(1)
{
LED_LOAD = ~LED_LOAD;
for(i = 0; i < 20000; i++);
}
}
/* =========================
* 系统入口
* ========================= */
void hrtos_main(void)
{
os_event_init(EVENT_IRQ);
IT0 = 1;
EX0 = 1;
os_task_create(INT0_ISR, 1, 9, 5);
os_task_create(response_task, 2, 5, 5);
os_task_create(load_task, 3, 3, 5);
}
系统意义
该测试用于评估 HRTOS 在不同负载下的调度延迟稳定性,是实时系统性能验证核心指标。