# RT-Insight 软件包 ## 简介 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 初始化后启动,推荐初始化顺序: 1. **初始化 RT-Tunnel**:确保 `RT_Tunnel_Init` 先执行(通常自动初始化); 2. **初始化 RT_Insight**:调用 `RT_Insight_Init` 分配隧道并初始化insight功能; ## 注意 确保 RT-Tunnel 已启用,且 `TUNNEL_NUM` 至少为 1