diff --git a/cm_backtrace/cm_backtrace.c b/cm_backtrace/cm_backtrace.c index 5cec284..ab2019b 100644 --- a/cm_backtrace/cm_backtrace.c +++ b/cm_backtrace/cm_backtrace.c @@ -147,44 +147,44 @@ static const char * const print_info[] = { [PRINT_MMAR] = "The memory management fault occurred address is %08x", [PRINT_BFAR] = "The bus fault occurred address is %08x", #elif (CMB_PRINT_LANGUAGE == CMB_PRINT_LANGUAGE_CHINESE) - [PRINT_MAIN_STACK_CFG_ERROR] = "错误:无法获取主栈信息,请检查主栈的相关配置", - [PRINT_FIRMWARE_INFO] = "固件名称:%s,硬件版本号:%s,软件版本号:%s", - [PRINT_ASSERT_ON_THREAD] = "在线程(%s)中发生断言", - [PRINT_ASSERT_ON_HANDLER] = "在中断或裸机环境下发生断言", - [PRINT_THREAD_STACK_INFO] = "=========== 线程堆栈信息 ===========", - [PRINT_MAIN_STACK_INFO] = "============ 主堆栈信息 ============", - [PRINT_THREAD_STACK_OVERFLOW] = "错误:线程栈(%08x)发生溢出", - [PRINT_MAIN_STACK_OVERFLOW] = "错误:主栈(%08x)发生溢出", - [PRINT_CALL_STACK_INFO] = "查看更多函数调用栈信息,请运行:addr2line -e %s%s -a -f %.*s", - [PRINT_CALL_STACK_ERR] = "获取函数调用栈失败", - [PRINT_FAULT_ON_THREAD] = "在线程(%s)中发生错误异常", - [PRINT_FAULT_ON_HANDLER] = "在中断或裸机环境下发生错误异常", - [PRINT_REGS_TITLE] = "========================= 寄存器信息 =========================", - [PRINT_HFSR_VECTBL] = "发生硬错误,原因:取中断向量时出错", - [PRINT_MFSR_IACCVIOL] = "发生存储器管理错误,原因:企图从不允许访问的区域取指令", - [PRINT_MFSR_DACCVIOL] = "发生存储器管理错误,原因:企图从不允许访问的区域读、写数据", - [PRINT_MFSR_MUNSTKERR] = "发生存储器管理错误,原因:出栈时企图访问不被允许的区域", - [PRINT_MFSR_MSTKERR] = "发生存储器管理错误,原因:入栈时企图访问不被允许的区域", - [PRINT_MFSR_MLSPERR] = "发生存储器管理错误,原因:惰性保存浮点状态时发生错误", - [PRINT_BFSR_IBUSERR] = "发生总线错误,原因:指令总线错误", - [PRINT_BFSR_PRECISERR] = "发生总线错误,原因:精确的数据总线错误", - [PRINT_BFSR_IMPREISERR] = "发生总线错误,原因:不精确的数据总线错误", - [PRINT_BFSR_UNSTKERR] = "发生总线错误,原因:出栈时发生错误", - [PRINT_BFSR_STKERR] = "发生总线错误,原因:入栈时发生错误", - [PRINT_BFSR_LSPERR] = "发生总线错误,原因:惰性保存浮点状态时发生错误", - [PRINT_UFSR_UNDEFINSTR] = "发生用法错误,原因:企图执行未定义指令", - [PRINT_UFSR_INVSTATE] = "发生用法错误,原因:试图切换到 ARM 状态", - [PRINT_UFSR_INVPC] = "发生用法错误,原因:无效的异常返回码", - [PRINT_UFSR_NOCP] = "发生用法错误,原因:企图执行协处理器指令", - [PRINT_UFSR_UNALIGNED] = "发生用法错误,原因:企图执行非对齐访问", - [PRINT_UFSR_DIVBYZERO0] = "发生用法错误,原因:企图执行除 0 操作", - [PRINT_DFSR_HALTED] = "发生调试错误,原因:NVIC 停机请求", - [PRINT_DFSR_BKPT] = "发生调试错误,原因:执行 BKPT 指令", - [PRINT_DFSR_DWTTRAP] = "发生调试错误,原因:数据监测点匹配", - [PRINT_DFSR_VCATCH] = "发生调试错误,原因:发生向量捕获", - [PRINT_DFSR_EXTERNAL] = "发生调试错误,原因:外部调试请求", - [PRINT_MMAR] = "发生存储器管理错误的地址:%08x", - [PRINT_BFAR] = "发生总线错误的地址:%08x", + [PRINT_MAIN_STACK_CFG_ERROR] = "閿欒锛氭棤娉曡幏鍙栦富鏍堜俊鎭紝璇锋鏌ヤ富鏍堢殑鐩稿叧閰嶇疆", + [PRINT_FIRMWARE_INFO] = "鍥轰欢鍚嶇О锛%s锛岀‖浠剁増鏈彿锛%s锛岃蒋浠剁増鏈彿锛%s", + [PRINT_ASSERT_ON_THREAD] = "鍦ㄧ嚎绋(%s)涓彂鐢熸柇瑷", + [PRINT_ASSERT_ON_HANDLER] = "鍦ㄤ腑鏂垨瑁告満鐜涓嬪彂鐢熸柇瑷", + [PRINT_THREAD_STACK_INFO] = "=========== 绾跨▼鍫嗘爤淇℃伅 ===========", + [PRINT_MAIN_STACK_INFO] = "============ 涓诲爢鏍堜俊鎭 ============", + [PRINT_THREAD_STACK_OVERFLOW] = "閿欒锛氱嚎绋嬫爤(%08x)鍙戠敓婧㈠嚭", + [PRINT_MAIN_STACK_OVERFLOW] = "閿欒锛氫富鏍(%08x)鍙戠敓婧㈠嚭", + [PRINT_CALL_STACK_INFO] = "鏌ョ湅鏇村鍑芥暟璋冪敤鏍堜俊鎭紝璇疯繍琛岋細addr2line -e %s%s -a -f %.*s", + [PRINT_CALL_STACK_ERR] = "鑾峰彇鍑芥暟璋冪敤鏍堝け璐", + [PRINT_FAULT_ON_THREAD] = "鍦ㄧ嚎绋(%s)涓彂鐢熼敊璇紓甯", + [PRINT_FAULT_ON_HANDLER] = "鍦ㄤ腑鏂垨瑁告満鐜涓嬪彂鐢熼敊璇紓甯", + [PRINT_REGS_TITLE] = "========================= 瀵勫瓨鍣ㄤ俊鎭 =========================", + [PRINT_HFSR_VECTBL] = "鍙戠敓纭敊璇紝鍘熷洜锛氬彇涓柇鍚戦噺鏃跺嚭閿", + [PRINT_MFSR_IACCVIOL] = "鍙戠敓瀛樺偍鍣ㄧ鐞嗛敊璇紝鍘熷洜锛氫紒鍥句粠涓嶅厑璁歌闂殑鍖哄煙鍙栨寚浠", + [PRINT_MFSR_DACCVIOL] = "鍙戠敓瀛樺偍鍣ㄧ鐞嗛敊璇紝鍘熷洜锛氫紒鍥句粠涓嶅厑璁歌闂殑鍖哄煙璇汇佸啓鏁版嵁", + [PRINT_MFSR_MUNSTKERR] = "鍙戠敓瀛樺偍鍣ㄧ鐞嗛敊璇紝鍘熷洜锛氬嚭鏍堟椂浼佸浘璁块棶涓嶈鍏佽鐨勫尯鍩", + [PRINT_MFSR_MSTKERR] = "鍙戠敓瀛樺偍鍣ㄧ鐞嗛敊璇紝鍘熷洜锛氬叆鏍堟椂浼佸浘璁块棶涓嶈鍏佽鐨勫尯鍩", + [PRINT_MFSR_MLSPERR] = "鍙戠敓瀛樺偍鍣ㄧ鐞嗛敊璇紝鍘熷洜锛氭儼鎬т繚瀛樻诞鐐圭姸鎬佹椂鍙戠敓閿欒", + [PRINT_BFSR_IBUSERR] = "鍙戠敓鎬荤嚎閿欒锛屽師鍥狅細鎸囦护鎬荤嚎閿欒", + [PRINT_BFSR_PRECISERR] = "鍙戠敓鎬荤嚎閿欒锛屽師鍥狅細绮剧‘鐨勬暟鎹荤嚎閿欒", + [PRINT_BFSR_IMPREISERR] = "鍙戠敓鎬荤嚎閿欒锛屽師鍥狅細涓嶇簿纭殑鏁版嵁鎬荤嚎閿欒", + [PRINT_BFSR_UNSTKERR] = "鍙戠敓鎬荤嚎閿欒锛屽師鍥狅細鍑烘爤鏃跺彂鐢熼敊璇", + [PRINT_BFSR_STKERR] = "鍙戠敓鎬荤嚎閿欒锛屽師鍥狅細鍏ユ爤鏃跺彂鐢熼敊璇", + [PRINT_BFSR_LSPERR] = "鍙戠敓鎬荤嚎閿欒锛屽師鍥狅細鎯版т繚瀛樻诞鐐圭姸鎬佹椂鍙戠敓閿欒", + [PRINT_UFSR_UNDEFINSTR] = "鍙戠敓鐢ㄦ硶閿欒锛屽師鍥狅細浼佸浘鎵ц鏈畾涔夋寚浠", + [PRINT_UFSR_INVSTATE] = "鍙戠敓鐢ㄦ硶閿欒锛屽師鍥狅細璇曞浘鍒囨崲鍒 ARM 鐘舵", + [PRINT_UFSR_INVPC] = "鍙戠敓鐢ㄦ硶閿欒锛屽師鍥狅細鏃犳晥鐨勫紓甯歌繑鍥炵爜", + [PRINT_UFSR_NOCP] = "鍙戠敓鐢ㄦ硶閿欒锛屽師鍥狅細浼佸浘鎵ц鍗忓鐞嗗櫒鎸囦护", + [PRINT_UFSR_UNALIGNED] = "鍙戠敓鐢ㄦ硶閿欒锛屽師鍥狅細浼佸浘鎵ц闈炲榻愯闂", + [PRINT_UFSR_DIVBYZERO0] = "鍙戠敓鐢ㄦ硶閿欒锛屽師鍥狅細浼佸浘鎵ц闄 0 鎿嶄綔", + [PRINT_DFSR_HALTED] = "鍙戠敓璋冭瘯閿欒锛屽師鍥狅細NVIC 鍋滄満璇锋眰", + [PRINT_DFSR_BKPT] = "鍙戠敓璋冭瘯閿欒锛屽師鍥狅細鎵ц BKPT 鎸囦护", + [PRINT_DFSR_DWTTRAP] = "鍙戠敓璋冭瘯閿欒锛屽師鍥狅細鏁版嵁鐩戞祴鐐瑰尮閰", + [PRINT_DFSR_VCATCH] = "鍙戠敓璋冭瘯閿欒锛屽師鍥狅細鍙戠敓鍚戦噺鎹曡幏", + [PRINT_DFSR_EXTERNAL] = "鍙戠敓璋冭瘯閿欒锛屽師鍥狅細澶栭儴璋冭瘯璇锋眰", + [PRINT_MMAR] = "鍙戠敓瀛樺偍鍣ㄧ鐞嗛敊璇殑鍦板潃锛%08x", + [PRINT_BFAR] = "鍙戠敓鎬荤嚎閿欒鐨勫湴鍧锛%08x", #else #error "CMB_PRINT_LANGUAGE defined error in 'cmb_cfg.h'" #endif @@ -217,7 +217,11 @@ void cm_backtrace_init(const char *firmware_name, const char *hardware_ver, cons strncpy(hw_ver, hardware_ver, CMB_NAME_MAX); strncpy(sw_ver, software_ver, CMB_NAME_MAX); +<<<<<<< HEAD #if defined(__CC_ARM) +======= +#if defined(__CC_ARM) || defined(__CLANG_ARM) +>>>>>>> fb2ce800e341910fdfc3e4b5081a9f4655da530f main_stack_start_addr = (uint32_t)&CSTACK_BLOCK_START(CMB_CSTACK_BLOCK_NAME); main_stack_size = (uint32_t)&CSTACK_BLOCK_END(CMB_CSTACK_BLOCK_NAME) - main_stack_start_addr; code_start_addr = (uint32_t)&CODE_SECTION_START(CMB_CODE_SECTION_NAME);