API GUIDE / Bus Monitor / LL
G32S10 Bus Monitor LL 接口
LL 层接口:功能说明: 判断通道序号是否在 0~`7` 范围内。
1. LL 与基础辅助接口规范
1.1 基础辅助接口
1.1.1 ll_bus_monitor_is_channel_valid
bool ll_bus_monitor_is_channel_valid(uint32_t channel);
功能说明:
判断通道序号是否在 0~`7` 范围内。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel | uint32_t | 输入 | Bus Monitor 通道序号 |
返回值表:
| 返回值 | 说明 |
|---|---|
true | 通道序号合法 |
false | 通道序号非法 |
1.1.2 ll_bus_monitor_is_channel_mask_valid
bool ll_bus_monitor_is_channel_mask_valid(uint32_t channel_mask);
功能说明: 判断通道 bitmask 是否非空且仅包含 bit0~bit7。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel_mask | uint32_t | 输入 | 通道 bitmask,bit0bit7 对应 CH0CH7 |
返回值表:
| 返回值 | 说明 |
|---|---|
true | bitmask 非空且仅包含有效通道 bit |
false | bitmask 为空或包含无效通道 bit |
1.1.3 ll_bus_monitor_channel_mask_from_index
uint32_t ll_bus_monitor_channel_mask_from_index(uint32_t channel);
功能说明: 根据通道序号生成对应 bitmask;通道非法时返回 0。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel | uint32_t | 输入 | Bus Monitor 通道序号 |
返回值表:
| 返回值 | 说明 |
|---|---|
BIT(channel) | 通道合法时返回对应通道 bitmask |
0 | 通道非法 |
1.1.4 ll_bus_monitor_is_axi_channel
bool ll_bus_monitor_is_axi_channel(uint32_t channel);
功能说明: 判断通道是否为 AXI 通道。CH0~CH4、CH7 为 AXI 通道。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel | uint32_t | 输入 | Bus Monitor 通道序号 |
返回值表:
| 返回值 | 说明 |
|---|---|
true | 通道为 AXI 通道 |
false | 通道不是 AXI 通道,或通道序号非法 |
1.1.5 ll_bus_monitor_is_ahb_channel
bool ll_bus_monitor_is_ahb_channel(uint32_t channel);
功能说明: 判断通道是否为 AHB 通道。CH5、CH6 为 AHB 通道。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel | uint32_t | 输入 | Bus Monitor 通道序号 |
返回值表:
| 返回值 | 说明 |
|---|---|
true | 通道为 AHB 通道 |
false | 通道不是 AHB 通道,或通道序号非法 |
1.2 带宽监测控制接口
1.2.1 ll_bus_monitor_set_auto_mode
void ll_bus_monitor_set_auto_mode(uint32_t channel_mask);
功能说明:
将指定通道配置为自动停止模式,对应 CH_FUN_CTRL.CHn_FUN_MODE = 0。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel_mask | uint32_t | 输入 | 待配置通道 bitmask,调用方需保证仅包含 bit0~bit7 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码;LL 不校验 channel_mask |
1.2.2 ll_bus_monitor_set_manual_mode
void ll_bus_monitor_set_manual_mode(uint32_t channel_mask);
功能说明:
将指定通道配置为手动停止模式,对应 CH_FUN_CTRL.CHn_FUN_MODE = 1。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel_mask | uint32_t | 输入 | 待配置通道 bitmask,调用方需保证仅包含 bit0~bit7 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码;LL 不校验 channel_mask |
1.2.3 ll_bus_monitor_enable_channels
void ll_bus_monitor_enable_channels(uint32_t channel_mask);
功能说明:
启动指定通道带宽监测,对应 CH_FUN_CTRL.CHn_FUN_EN = 1。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel_mask | uint32_t | 输入 | 待启动通道 bitmask,调用方需保证仅包含 bit0~bit7 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码;LL 不校验 channel_mask |
1.2.4 ll_bus_monitor_disable_channels
void ll_bus_monitor_disable_channels(uint32_t channel_mask);
功能说明:
停止指定通道带宽监测,对应 CH_FUN_CTRL.CHn_FUN_EN = 0。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel_mask | uint32_t | 输入 | 待停止通道 bitmask,调用方需保证仅包含 bit0~bit7 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码;LL 不校验 channel_mask |
1.2.5 ll_bus_monitor_clear_channels
void ll_bus_monitor_clear_channels(uint32_t channel_mask);
功能说明:
清除指定通道带宽监测计数器,对应 CH_FUN_CTRL.CHn_FUN_CLR = 1。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel_mask | uint32_t | 输入 | 待清除通道 bitmask,调用方需保证仅包含 bit0~bit7 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码;LL 不校验 channel_mask |
1.2.6 ll_bus_monitor_set_clk_threshold
void ll_bus_monitor_set_clk_threshold(uint32_t channel, uint32_t threshold);
功能说明:
设置单个通道自动停止阈值,对应 CH_CLK_THRES[n]。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel | uint32_t | 输入 | Bus Monitor 通道序号,调用方需保证为 0~`7` |
threshold | uint32_t | 输入 | 自动停止阈值 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码;LL 不校验 channel |
1.3 带宽监测中断接口
1.3.1 ll_bus_monitor_enable_done_irq
void ll_bus_monitor_enable_done_irq(uint32_t channel_mask);
功能说明:
使能指定通道 done 中断,对应 CH_INT_CTRL.CHn_INT_EN = 1。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel_mask | uint32_t | 输入 | 待使能中断通道 bitmask,调用方需保证仅包含 bit0~bit7 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码;LL 不校验 channel_mask |
1.3.2 ll_bus_monitor_disable_done_irq
void ll_bus_monitor_disable_done_irq(uint32_t channel_mask);
功能说明:
关闭指定通道 done 中断,对应 CH_INT_CTRL.CHn_INT_EN = 0。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel_mask | uint32_t | 输入 | 待关闭中断通道 bitmask,调用方需保证仅包含 bit0~bit7 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码;LL 不校验 channel_mask |
1.3.3 ll_bus_monitor_clear_done_irq
void ll_bus_monitor_clear_done_irq(uint32_t channel_mask);
功能说明:
清除指定通道 done 中断状态,对应 CH_INT_CTRL.CHn_INT_CLR = 1。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel_mask | uint32_t | 输入 | 待清除中断状态通道 bitmask,调用方需保证仅包含 bit0~bit7 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码;LL 不校验 channel_mask |
1.3.4 ll_bus_monitor_get_done_status
uint32_t ll_bus_monitor_get_done_status(void);
功能说明:
读取 CH_INT_STATE.CHn_CNT_DONE 状态 bitmask。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
| 无 | - | - | 无 |
返回值表:
| 返回值 | 说明 |
|---|---|
uint32_t | done 状态 bitmask,bit0bit7 对应 CH0CH7 |
1.4 计数读取接口
1.4.1 ll_bus_monitor_get_val_clk_num
uint32_t ll_bus_monitor_get_val_clk_num(uint32_t channel);
功能说明:
读取单个通道 VAL_CLK_NUM[n]。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel | uint32_t | 输入 | Bus Monitor 通道序号,调用方需保证为 0~`7` |
返回值表:
| 返回值 | 说明 |
|---|---|
uint32_t | VAL_CLK_NUM[n] 原始寄存器值 |
1.4.2 ll_bus_monitor_get_wval_hit_num
uint32_t ll_bus_monitor_get_wval_hit_num(uint32_t channel);
功能说明:
读取单个通道 WVAL_HIT_NUM[n]。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel | uint32_t | 输入 | Bus Monitor 通道序号,调用方需保证为 0~`7` |
返回值表:
| 返回值 | 说明 |
|---|---|
uint32_t | WVAL_HIT_NUM[n] 原始寄存器值 |
1.4.3 ll_bus_monitor_get_rval_hit_num
uint32_t ll_bus_monitor_get_rval_hit_num(uint32_t channel);
功能说明:
读取单个通道 RVAL_HIT_NUM[n]。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel | uint32_t | 输入 | Bus Monitor 通道序号,调用方需保证为 0~`7` |
返回值表:
| 返回值 | 说明 |
|---|---|
uint32_t | RVAL_HIT_NUM[n] 原始寄存器值 |
1.5 Debug LL 接口
1.5.1 ll_bus_monitor_enable_debug
void ll_bus_monitor_enable_debug(void);
功能说明:
使能 debug 模式,对应 DBG_TRANS_EN.DEBUG_EN = 1。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
| 无 | - | - | 无 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码 |
1.5.2 ll_bus_monitor_disable_debug
void ll_bus_monitor_disable_debug(void);
功能说明:
关闭 debug 模式,对应 DBG_TRANS_EN.DEBUG_EN = 0。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
| 无 | - | - | 无 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码 |
1.5.3 ll_bus_monitor_get_debug_enable
bool ll_bus_monitor_get_debug_enable(void);
功能说明: 读取当前 debug 使能状态。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
| 无 | - | - | 无 |
返回值表:
| 返回值 | 说明 |
|---|---|
true | debug 模式已使能 |
false | debug 模式未使能 |
1.5.4 ll_bus_monitor_set_debug_threshold
void ll_bus_monitor_set_debug_threshold(uint32_t channel, uint32_t threshold);
功能说明:
设置单个通道 debug 超时阈值,对应 DBG_THRES[n]。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel | uint32_t | 输入 | Bus Monitor 通道序号,调用方需保证为 0~`7` |
threshold | uint32_t | 输入 | Debug 超时阈值 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码;LL 不校验 channel |
1.5.5 ll_bus_monitor_set_debug_addr_start
void ll_bus_monitor_set_debug_addr_start(uint32_t channel, uint32_t addr_start);
功能说明:
设置单个通道 debug 地址范围最小值,对应 DBG_ADDR_START[n]。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel | uint32_t | 输入 | Bus Monitor 通道序号,调用方需保证为 0~`7` |
addr_start | uint32_t | 输入 | Debug 地址范围最小值 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码;LL 不校验 channel |
1.5.6 ll_bus_monitor_set_debug_addr_end
void ll_bus_monitor_set_debug_addr_end(uint32_t channel, uint32_t addr_end);
功能说明:
设置单个通道 debug 地址范围最大值,对应 DBG_ADDR_END[n]。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel | uint32_t | 输入 | Bus Monitor 通道序号,调用方需保证为 0~`7` |
addr_end | uint32_t | 输入 | Debug 地址范围最大值 |
返回值表:
| 返回值 | 说明 |
|---|---|
| 无 | 接口不返回状态码;LL 不校验 channel |
1.5.7 ll_bus_monitor_get_debug_channel_raw
uint32_t ll_bus_monitor_get_debug_channel_raw(uint32_t channel);
功能说明:
读取单个通道 debug 原始寄存器值,对应 DBG_DDRC_CHn。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
channel | uint32_t | 输入 | Bus Monitor 通道序号,调用方需保证为 0~`7` |
返回值表:
| 返回值 | 说明 |
|---|---|
uint32_t | DBG_DDRC_CHn 原始寄存器值 |
1.5.8 ll_bus_monitor_get_debug_sort_raw
uint32_t ll_bus_monitor_get_debug_sort_raw(void);
功能说明:
读取 DBG_SORT 原始值。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
| 无 | - | - | 无 |
返回值表:
| 返回值 | 说明 |
|---|---|
uint32_t | DBG_SORT 原始寄存器值 |
1.5.9 ll_bus_monitor_get_debug_system0_raw
uint32_t ll_bus_monitor_get_debug_system0_raw(void);
功能说明:
读取 DBG_SYSTEM_0 原始值。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
| 无 | - | - | 无 |
返回值表:
| 返回值 | 说明 |
|---|---|
uint32_t | DBG_SYSTEM_0 原始寄存器值 |
1.5.10 ll_bus_monitor_get_debug_system1_raw
uint32_t ll_bus_monitor_get_debug_system1_raw(void);
功能说明:
读取 DBG_SYSTEM_1 原始值。
参数表:
| 参数 | 类型 | 方向 | 说明 |
|---|---|---|---|
| 无 | - | - | 无 |
返回值表:
| 返回值 | 说明 |
|---|---|
uint32_t | DBG_SYSTEM_1 原始寄存器值 |
2. 寄存器映射与位域约定
2.1 寄存器映射
| 名称 | RW | 复位值 | 偏移地址 | 说明 |
|---|---|---|---|---|
CH_FUN_CTRL | RW | 0x00000000 | 0x100 | 通道带宽监测功能控制 |
CH_INT_CTRL | RW | 0x00000000 | 0x104 | 通道 done 中断控制 |
CH_INT_STATE | R | 0x00000000 | 0x108 | 通道 done 状态 |
CH_CLK_THRES[n] | RW | 0x00000000 | 0x110 + n * 4 | 自动停止阈值 |
VAL_CLK_NUM[n] | R | 0x00000000 | 0x140 + n * 4 | 周期计数值 |
WVAL_HIT_NUM[n] | R | 0x00000000 | 0x160 + n * 4 | 写传输计数值 |
RVAL_HIT_NUM[n] | R | 0x00000000 | 0x180 + n * 4 | 读传输计数值 |
DBG_TRANS_EN | RW | 0x00000000 | 0x1B0 | Debug 总使能 |
DBG_DDRC_CHn | R | 0x???????? | 0x1C0 + n * 4 | 通道 debug 状态,n=0~7 |
DBG_SORT | R | 0x0??????? | 0x1E0 | 挂死通道顺序 |
DBG_SYSTEM_0 | R | 0x???????? | 0x1F0 | 系统 debug 状态 0 |
DBG_SYSTEM_1 | R | 0x???????? | 0x1F4 | 系统 debug 状态 1 |
DBG_THRES[n] | RW | 0x00000000 | 0x200 + n * 4 | Debug 超时阈值 |
DBG_ADDR_START[n] | RW | 0x00000000 | 0x220 + n * 4 | Debug 地址范围起始 |
DBG_ADDR_END[n] | RW | 0xFFFFFFFF | 0x240 + n * 4 | Debug 地址范围结束 |
2.2 CH_FUN_CTRL 位域
| 位 | 名称 | 说明 |
|---|---|---|
| 31:24 | Reserved | 保留,读为 0 |
| 23:16 | CHn_FUN_CLR | 每个通道的带宽计数清除,1 表示清除 |
| 15:8 | CHn_FUN_MODE | 每个通道的带宽监测模式,0 自动停止,1 手动停止 |
| 7:0 | CHn_FUN_EN | 每个通道的带宽监测使能,1 表示启用 |
2.3 CH_INT_CTRL 与 CH_INT_STATE 位域
| 寄存器 | 位 | 名称 | 说明 |
|---|---|---|---|
CH_INT_CTRL | 31:16 | Reserved | 保留,读为 0 |
CH_INT_CTRL | 15:8 | CHn_INT_CLR | 每个通道 done 中断清除,1 表示清除 |
CH_INT_CTRL | 7:0 | CHn_INT_EN | 每个通道 done 中断使能,1 表示启用 |
CH_INT_STATE | 31:8 | Reserved | 保留,读为 0 |
CH_INT_STATE | 7:0 | CHn_CNT_DONE | 每个通道自动计数完成状态 |
2.4 AXI debug 状态位域
AXI 通道 CH0~CH4、CH7 的 DBG_DDRC_CHn 使用以下位域:
| 位 | 名称 | 说明 |
|---|---|---|
| 31:20 | Reserved | 保留,读为 0 |
| 19 | TIMEOUT_WR | 写数据超出阈值无法响应 |
| 18:11 | MISMATCH_ID | 写数据量与写命令数据量不匹配时记录的 AXI ID |
| 10 | MISMATCH_WR | 写数据量与写命令数据量不匹配 |
| 9 | EXCEED_RANGE_RD | 读地址超出配置范围 |
| 8 | EXCEED_RANGE_WR | 写地址超出配置范围 |
| 7 | EXCEED_4K_RD | 读传输跨 4K 边界 |
| 6 | EXCEED_4K_WR | 写传输跨 4K 边界 |
| 5 | BUSY_WR | 写传输未完成 |
| 4 | BUSY_RD | 读传输未完成 |
| 3 | RREADY | 读传输 ready 信号 |
| 2 | RVALID | 读传输 valid 信号 |
| 1 | WREADY | 写传输 ready 信号 |
| 0 | WVALID | 写传输 valid 信号 |
2.5 AHB debug 状态位域
AHB 通道 CH5、CH6 的 DBG_DDRC_CHn 使用以下位域:
| 位 | 名称 | 说明 |
|---|---|---|
| 31:8 | Reserved | 保留,读为 0 |
| 7 | TIMEOUT_WR | 传输超出阈值无法响应 |
| 6 | EXCEED_RANGE | 传输地址超出配置范围 |
| 5 | EXCEED_4K | 传输跨 4K 边界 |
| 4 | MISMATCH_FLAG | 实际数据量与命令数据量不匹配 |
| 3 | TRANS_BUSY | AHB 传输未完成 |
| 2 | HREADY | AHB ready 信号 |
| 1:0 | HTRANS | AHB trans 信号 |