API GUIDE / Bus Monitor / OVERVIEW
G32S10 Bus Monitor API 概述
模块概述:本文档定义 G32S10 SDK Bus Monitor 模块的正式接口,覆盖以下两层:
1. 文档范围
本文档定义 G32S10 SDK Bus Monitor 模块的正式接口,覆盖以下两层:
HAL Bus Monitor:面向 BSP、性能统计和异常诊断模块的功能级接口LL Bus Monitor:面向寄存器与位操作的低层接口
2. 分层关系
Application / BSP / Diagnosis / Profiling | v HAL Bus Monitor | v LL Bus Monitor | v Bus Monitor Registers
分层职责如下:
HAL Bus Monitor封装带宽监测、自动/手动停止、done IRQ callback 和 debug 快照读取
维护参数合法性、通道类型约束和统一返回码
提供便于上层使用的计数结果、带宽计算辅助与 debug 状态结构体
LL Bus Monitor提供寄存器位级访问入口
不维护软件状态,不做复杂业务语义判断
bus_monitor_regs.h定义 Bus Monitor 基地址、寄存器结构体布局、通道数量和位域 mask
3. 资源模型与公开类型
3.1 通道类型
typedef enum {
HAL_BUS_MONITOR_CHANNEL_TYPE_AXI = 0,
HAL_BUS_MONITOR_CHANNEL_TYPE_AHB,
} hal_bus_monitor_channel_type_t;通道类型由 hal_bus_monitor_decode_debug_channel() 自动填入hal_bus_monitor_debug_channel_status_t.type:
AXI 通道使用
detail.axiAHB 通道使用
detail.ahb
HAL 不提供单独查询通道类型的 API;上层若需静态判断,可按本节通道表或使用 LLll_bus_monitor_is_axi_channel()、ll_bus_monitor_is_ahb_channel()。
4. 当前实现约束与行为说明
4.1 Debug 功能通过 Kconfig 维护
debug 寄存器访问和解码 API 始终可用;
hal_bus_monitor_regs_dump()是可选 debug helper。寄存器 dump 仅在
CONFIG_SDK_ENABLE_DEBUG_HELPERS=y和CONFIG_BUS_MONITOR_ENABLE_DEBUG_HELPERS=y时输出,否则返回IM_ERR_UNSUPPORTED。debug 捕获现场应优先以
hal_bus_monitor_read_debug_snapshot()的 raw 值保存,再按需解码。
4.2 Debug 快照应在复位释放后尽早读取
规格书建议 watchdog 复位或 pprst 复位后读取 debug 信息。
Debug 信息锁存在 Bus Monitor 内部寄存器中。
复位释放后应第一时间读取
DBG_DDRC_CHn、DBG_SORT、DBG_SYSTEM_0/1,并同时记录复位原因和时间。
4.3 LL 接口不做参数保护
LL 接口默认调用方已保证 channel、channel_mask 和地址范围合法。
HAL 接口负责参数检查并返回
IM_ERR_INVALID_PARAM、IM_ERR_NOT_READY或IM_ERR_BUSY。LL 的 clear helper 对 W1C 字段执行
0 -> 1 -> 0脉冲;调用返回后 clear 位保持为 0。
5. 推荐关注的错误码
| 错误码 | 含义 |
|---|---|
IM_OK | 操作成功 |
IM_ERR_INVALID_PARAM | 输入参数非法,或参数组合不满足接口约束 |
IM_ERR_NOT_READY | handle、通道或 callback 尚未就绪 |
IM_ERR_BUSY | 唯一实例已被占用、通道正在采样、auto-stop done IRQ 尚未处理完,或 debug 已使能 |
IM_ERR_UNSUPPORTED | 所请求的可选 debug helper 未由 Kconfig 启用 |