RT_Insight 是基于 RT-Thread 内核的系统事件洞察组件,核心功能是通过注册 RT-Thread 系统钩子函数,实时记录线程调度、ISR 进出、内核对象操作(信号量 / 互斥锁 / 队列等)、定时器回调等关键事件,并结合 DWT(数据观察点与跟踪单元)提供纳秒级高精度时间戳,最终通过 RT-Tunnel 组件传输事件数据,助力嵌入式开发者快速定位系统卡顿、线程竞争、定时器异常等问题。
-
全场景事件覆盖
:注册 RT-Thread 全量核心钩子,自动记录以下事件:
- 线程调度(线程切换、挂起 / 恢复);
- ISR 生命周期(中断进入 / 退出,自动获取 IRQ ID);
- 内核对象操作(信号量 / 互斥锁 / 事件 / 邮箱 / 队列的获取 / 释放 / 尝试获取);
- 定时器回调(定时器进入 / 退出)。
-
高精度时间戳:基于 DWT cycle counter 实现纳秒级时间戳,事件时间精度可达 CPU 时钟周期级(需配置正确的
BOARD_SYSTICK_FREQ_IN_HZ)。 -
事件安全缓存:内置
TEMP_BUFFER_SIZE(默认 64)临时缓冲区,当 RT-Tunnel 忙时自动缓存事件,避免数据丢失,后续自动重试写入。 -
依赖 RT-Tunnel 传输:事件数据通过 RT-Tunnel 组件传输(隧道 ID 固定为
0x52544953,即 "RTIS"),兼容 RT-Tunnel 的线程安全传输机制。 -
Shell 快速初始化:提供
RT_Insight_Init命令,通过 RT-Thread Shell 一键初始化组件,无需手动调用接口。 -
清晰错误日志:初始化失败(如 RT-Tunnel 获取失败、隧道配置错误)时输出明确日志,便于问题定位。
- CPU_freq:设置设置为 MCU 实际的主频,确保时间戳计算准确。
RT_Insight 需在 RT-Tunnel 初始化后启动,推荐初始化顺序:
- 初始化 RT-Tunnel:确保
RT_Tunnel_Init先执行(通常自动初始化); - 初始化 RT_Insight:调用
RT_Insight_Init分配隧道并初始化insight功能;
确保 RT-Tunnel 已启用,且 TUNNEL_NUM 至少为 1