#ifndef __DEBUG_H__ #define __DEBUG_H__ /* ---------------------------------------------------------------------------- */ /** * @brief 异常检测模块初始化 */ /* ---------------------------------------------------------------------------- */ void debug_init(); /* ---------------------------------------------------------------------------- */ /** * @brief 异常分析函数 */ /* ---------------------------------------------------------------------------- */ void exception_analyze(); /* ---------------------------------------------------------------------------- */ /** * @brief 根据设备名获取设备ID * * @param name: 设备名称, 如:"DBG_SPI0" * * @return: 设备ID */ /* ---------------------------------------------------------------------------- */ u32 get_dev_id(char *name); /* ---------------------------------------------------------------------------- */ /** * @brief Memory权限保护设置 * * @param idx: 保护框索引, 范围: 0 ~ 7, 目前系统默认使用0和3, 用户可用1, 2, 4, 5, 6, 7 * @param begin: Memory开始地址 * @param end: Memory结束地址 * @param inv: 0: 保护框内, 1: 保护框外 * @param format: "Cxwr0rw1rw2rw3rw", CPU:外设0:外设1:外设2:外设3, * @param ...: 外设ID号索引, 如: DBG_EQ, 见debug.h * @example1: 设置内存保护框1, 保护地址为0x200 ~ 0x400 - 1, 令该地址只可以FFT和EQ设备访问: mpu_set(1, 0x200, 0x400 - 1, 0, "0rw1rw", get_dev_id("DBG_FFT"), get_dev_id("DBG_EQ")); * @example2: 设置内存保护框2, 保护地址为0x200 ~ 0x400 - 1, 令该地址只可以cpu读写和EQ设备访问: mpu_set(2, 0x200, 0x400 - 1, 0, "Crw0rw", get_dev_id("DBG_EQ")); */ /* ---------------------------------------------------------------------------- */ void mpu_set(int idx, u32 begin, u32 end, u32 inv, const char *format, ...); /* ---------------------------------------------------------------------------- */ /** * @brief 取消指定框的mpu保护 * * @param idx: 保护框索引号 */ /* ---------------------------------------------------------------------------- */ void mpu_disable_by_index(u8 idx); /* ---------------------------------------------------------------------------- */ /** * @brief :取消所有保护框mpu保护 */ /* ---------------------------------------------------------------------------- */ void mpu_diasble(void); /* ---------------------------------------------------------------------------- */ /** * @brief flash PC范围设置为Flash外区域, 调用该接口后调用flash里的函数将触发异常 */ /* ---------------------------------------------------------------------------- */ void flash_pc_limit_disable(); /* ---------------------------------------------------------------------------- */ /** * @brief flash PC范围限制恢复为flash代码区域, 调用该接口后可调用flash里的函数 */ /* ---------------------------------------------------------------------------- */ void flash_pc_limit_enable(); #endif /* #ifndef __DEBUG_H__ */