Mem Monitor
Mem Monitor 是硬件级内存访问监控模块。配置监控地址范围(起始+结束地址)和监控模式(读/写),当 CPU 访问落入该范围时硬件触发中断并调用用户回调。
核心用途:调试阶段定位内存越界、野指针、栈溢出等问题——硬件捕获异常访问并记录触发地址。
头文件清单
接口清单
接口名称 功能简述 uapi_mem_monitor_init 初始化MEM_Monitor模块 uapi_mem_monitor_deinit 去初始化MEM_Monitor模块 uapi_mem_monitor_enable 使能指定的MEM_Monitor通道 uapi_mem_monitor_disable 去使能指定的MEM_Monitor通道 uapi_mem_monitor_set_section 设置监控地址段及工作模式
Functions
uapi_mem_monitor_init
头文件清单
功能说明
- 初始化MEM_Monitor驱动模块,完成硬件资源申请与寄存器配置
- 调用前须确保MEM_Monitor硬件时钟已使能
- 重复调用可能导致初始化状态异常,需先调用uapi_mem_monitor_deinit()去初始化后再重新初始化
前置条件
- MEM_Monitor硬件时钟已使能
- 尚未初始化或已通过uapi_mem_monitor_deinit()去初始化
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 执行成功 初始化成功 Other 其他错误码,参考errcode_t 执行失败
uapi_mem_monitor_deinit
头文件清单
功能说明
- 去初始化MEM_Monitor驱动模块,释放已申请的硬件资源
- 调用后所有MEM_Monitor通道将被禁用,回调函数不再触发
- 需在模块已初始化状态下调用,否则操作无效
前置条件
- 模块已通过uapi_mem_monitor_init()初始化完成
uapi_mem_monitor_enable
头文件清单
功能说明
- 使能指定索引的MEM_Monitor通道,并注册中断回调函数
- 当被监控的内存地址段发生读/写访问时,触发回调通知
- 同一通道重复使能会覆盖先前注册的回调函数
前置条件
- 模块已通过uapi_mem_monitor_init()初始化完成
- 已通过uapi_mem_monitor_set_section()配置监控地址段及工作模式
入参
名称 参数类型 详细说明 约束取值范围 monitor mem_monitor_t MEM_Monitor通道索引 由mem_monitor_porting.h定义 callback uapi_mem_monitor_callback_t MEM_Monitor中断回调函数 非NULL,参考uapi_mem_monitor_callback_t
uapi_mem_monitor_disable
头文件清单
功能说明
- 去使能指定索引的MEM_Monitor通道,停止监控并取消中断触发
- 调用后该通道不再响应内存访问事件
- 对未使能的通道调用此接口无效果
前置条件
- 模块已通过uapi_mem_monitor_init()初始化完成
入参
名称 参数类型 详细说明 约束取值范围 monitor mem_monitor_t MEM_Monitor通道索引 由mem_monitor_porting.h定义
uapi_mem_monitor_set_section
头文件清单
功能说明
- 设置指定MEM_Monitor通道的监控地址段及工作模式
- 配置后需调用uapi_mem_monitor_enable()使能通道方可生效
- 监控地址段由起始地址、结束地址及地址段编号共同确定
前置条件
- 模块已通过uapi_mem_monitor_init()初始化完成
- config指针不为NULL,且指向的内存空间已申请成功
入参
名称 参数类型 详细说明 约束取值范围 monitor mem_monitor_t MEM_Monitor通道索引 由mem_monitor_porting.h定义 config mem_monitor_config_t * 监控配置参数 非NULL,参考mem_monitor_config_t
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 执行成功 配置成功 Other 其他错误码,参考errcode_t 执行失败
Type definitions
uapi_mem_monitor_callback_t
使用说明:用于uapi_mem_monitor_enable的回调注册,当被监控内存地址段发生读/写访问时触发,参数addr为触发监控的地址,参数mode为触发时的读写模式。
Enumerations
mem_monitor_mode_t
typedef enum mem_monitor_mode {
MEM_MONITOR_MODE_READ = 1, /*!< MEM_Monitor mode: read mode. */
MEM_MONITOR_MODE_WRITE /*!< MEM_Monitor mode: write mode. */
} mem_monitor_mode_t;
枚举成员 取值 描述 MEM_MONITOR_MODE_READ 1 监控读模式 MEM_MONITOR_MODE_WRITE 2 监控写模式
Structures
mem_monitor_config_t
typedef struct mem_monitor_config {
mem_monitor_section_t section; /*!< Address section for memory monitoring. */
uint32_t addr_start; /*!< Monitoring start address. */
uint32_t addr_end; /*!< Monitoring end address. */
mem_monitor_mode_t mode; /*!< Memory monitoring mode. */
} mem_monitor_config_t;
成员说明:
成员名称 数据类型 描述 section mem_monitor_section_t 内存监控地址段编号 addr_start uint32_t 监控起始地址 addr_end uint32_t 监控结束地址 mode mem_monitor_mode_t 内存监控模式,参考mem_monitor_mode_t