From 859d1a830362bfddfb4a1bf7ea6379c62f8e776e Mon Sep 17 00:00:00 2001 From: armink Date: Tue, 27 Dec 2016 15:27:27 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E3=80=90=E5=AE=8C=E5=96=84=E3=80=91?= =?UTF-8?q?=E6=95=85=E9=9A=9C=E5=A4=84=E7=90=86=E5=9B=9E=E8=B0=83=E7=9A=84?= =?UTF-8?q?=E6=B1=87=E7=BC=96=E6=96=87=E4=BB=B6=EF=BC=9B=202=E3=80=81?= =?UTF-8?q?=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91Keil=20=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E4=B8=8B=E6=97=A0=E6=B3=95=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: armink --- cm_backtrace/cm_backtrace.c | 8 +-- cm_backtrace/cmb_def.h | 4 +- cm_backtrace/cmb_fault.s | 54 --------------------- cm_backtrace/fault_handler/gcc/cmb_fault.s | 45 +++++++++++++++++ cm_backtrace/fault_handler/iar/cmb_fault.s | 46 ++++++++++++++++++ cm_backtrace/fault_handler/keil/cmb_fault.s | 47 ++++++++++++++++++ 6 files changed, 144 insertions(+), 60 deletions(-) delete mode 100644 cm_backtrace/cmb_fault.s create mode 100644 cm_backtrace/fault_handler/gcc/cmb_fault.s create mode 100644 cm_backtrace/fault_handler/iar/cmb_fault.s create mode 100644 cm_backtrace/fault_handler/keil/cmb_fault.s diff --git a/cm_backtrace/cm_backtrace.c b/cm_backtrace/cm_backtrace.c index dfb1900..789906d 100644 --- a/cm_backtrace/cm_backtrace.c +++ b/cm_backtrace/cm_backtrace.c @@ -195,10 +195,10 @@ void cm_backtrace_init(const char *firmware_name, const char *hardware_ver, cons strncpy(sw_ver, software_ver, CMB_NAME_MAX); #if defined(__CC_ARM) - main_stack_start_addr = (uint32_t)&CODE_SECTION_START(CMB_CODE_SECTION_NAME); - main_stack_size = (uint32_t)&CODE_SECTION_END(CMB_CODE_SECTION_NAME) - main_stack_start_addr; - code_start_addr = (uint32_t)&CSTACK_BLOCK_START(CMB_CSTACK_BLOCK_NAME); - code_size = (uint32_t)&CSTACK_BLOCK_END(CMB_CSTACK_BLOCK_NAME) - code_start_addr; + 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); + code_size = (uint32_t)&CODE_SECTION_END(CMB_CODE_SECTION_NAME) - code_start_addr; //TODO ´ý²âÊÔ #elif defined(__ICCARM__) main_stack_start_addr = (uint32_t)__section_begin(CMB_CSTACK_BLOCK_NAME); diff --git a/cm_backtrace/cmb_def.h b/cm_backtrace/cmb_def.h index e826110..aa4fd44 100644 --- a/cm_backtrace/cmb_def.h +++ b/cm_backtrace/cmb_def.h @@ -259,7 +259,7 @@ if (!(EXPR)) \ /* ELF(Executable and Linking Format) file extension name for each compiler */ #if defined(__CC_ARM) - #define CMB_ELF_FILE_EXTENSION_NAME ".o" + #define CMB_ELF_FILE_EXTENSION_NAME ".axf" #elif defined(__ICCARM__) #define CMB_ELF_FILE_EXTENSION_NAME ".out" #elif defined(__GNUC__) @@ -314,7 +314,7 @@ if (!(EXPR)) \ bx lr } static __inline __asm uint32_t __get_SP(void) { - mrs r0, sp + mov r0, sp bx lr } #elif defined(__ICCARM__) diff --git a/cm_backtrace/cmb_fault.s b/cm_backtrace/cmb_fault.s deleted file mode 100644 index 8f60059..0000000 --- a/cm_backtrace/cmb_fault.s +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of the CmBacktrace Library. - * - * Copyright (c) 2016, Armink, - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * 'Software'), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Function: Fault handler by assembly - * Created on: 2016-12-16 - */ - -#if defined(__GNUC__) - -#elif defined(__CC_ARM) || defined(__ICCARM__) - -#endif - - SECTION .text:CODE(2) - THUMB - REQUIRE8 - PRESERVE8 - -#if 1 -; NOTE: If use this file's HardFault_Handler, please comments the HardFault_Handler code on other file. - IMPORT cm_backtrace_fault - EXPORT HardFault_Handler - -HardFault_Handler: - MOV r0, lr ; get lr - MOV r1, sp ; get stack pointer (current is MSP) - BL cm_backtrace_fault - -Fault_loop - BL Fault_loop ;while(1) -#endif - - END diff --git a/cm_backtrace/fault_handler/gcc/cmb_fault.s b/cm_backtrace/fault_handler/gcc/cmb_fault.s new file mode 100644 index 0000000..85f9b4a --- /dev/null +++ b/cm_backtrace/fault_handler/gcc/cmb_fault.s @@ -0,0 +1,45 @@ +;/* +; * This file is part of the CmBacktrace Library. +; * +; * Copyright (c) 2016, Armink, +; * +; * Permission is hereby granted, free of charge, to any person obtaining +; * a copy of this software and associated documentation files (the +; * 'Software'), to deal in the Software without restriction, including +; * without limitation the rights to use, copy, modify, merge, publish, +; * distribute, sublicense, and/or sell copies of the Software, and to +; * permit persons to whom the Software is furnished to do so, subject to +; * the following conditions: +; * +; * The above copyright notice and this permission notice shall be +; * included in all copies or substantial portions of the Software. +; * +; * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +; * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +; * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +; * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +; * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +; * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +; * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +; * +; * Function: Fault handler by GCC assembly code +; * Created on: 2016-12-16 +; */ + +.syntax unified +.thumb +.text + +; NOTE: If use this file's HardFault_Handler, please comments the HardFault_Handler code on other file. + IMPORT cm_backtrace_fault + EXPORT HardFault_Handler + +HardFault_Handler: + MOV r0, lr ; get lr + MOV r1, sp ; get stack pointer (current is MSP) + BL cm_backtrace_fault + +Fault_Loop + BL Fault_Loop ;while(1) + + END diff --git a/cm_backtrace/fault_handler/iar/cmb_fault.s b/cm_backtrace/fault_handler/iar/cmb_fault.s new file mode 100644 index 0000000..0d75d53 --- /dev/null +++ b/cm_backtrace/fault_handler/iar/cmb_fault.s @@ -0,0 +1,46 @@ +;/* +; * This file is part of the CmBacktrace Library. +; * +; * Copyright (c) 2016, Armink, +; * +; * Permission is hereby granted, free of charge, to any person obtaining +; * a copy of this software and associated documentation files (the +; * 'Software'), to deal in the Software without restriction, including +; * without limitation the rights to use, copy, modify, merge, publish, +; * distribute, sublicense, and/or sell copies of the Software, and to +; * permit persons to whom the Software is furnished to do so, subject to +; * the following conditions: +; * +; * The above copyright notice and this permission notice shall be +; * included in all copies or substantial portions of the Software. +; * +; * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +; * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +; * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +; * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +; * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +; * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +; * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +; * +; * Function: Fault handler by EWARM assembly code +; * Created on: 2016-12-16 +; */ + + SECTION .text:CODE(2) + THUMB + REQUIRE8 + PRESERVE8 + +; NOTE: If use this file's HardFault_Handler, please comments the HardFault_Handler code on other file. + IMPORT cm_backtrace_fault + EXPORT HardFault_Handler + +HardFault_Handler: + MOV r0, lr ; get lr + MOV r1, sp ; get stack pointer (current is MSP) + BL cm_backtrace_fault + +Fault_Loop + BL Fault_Loop ;while(1) + + END diff --git a/cm_backtrace/fault_handler/keil/cmb_fault.s b/cm_backtrace/fault_handler/keil/cmb_fault.s new file mode 100644 index 0000000..3cd8cdc --- /dev/null +++ b/cm_backtrace/fault_handler/keil/cmb_fault.s @@ -0,0 +1,47 @@ +;/* +; * This file is part of the CmBacktrace Library. +; * +; * Copyright (c) 2016, Armink, +; * +; * Permission is hereby granted, free of charge, to any person obtaining +; * a copy of this software and associated documentation files (the +; * 'Software'), to deal in the Software without restriction, including +; * without limitation the rights to use, copy, modify, merge, publish, +; * distribute, sublicense, and/or sell copies of the Software, and to +; * permit persons to whom the Software is furnished to do so, subject to +; * the following conditions: +; * +; * The above copyright notice and this permission notice shall be +; * included in all copies or substantial portions of the Software. +; * +; * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +; * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +; * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +; * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +; * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +; * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +; * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +; * +; * Function: Fault handler by MDK-ARM assembly code +; * Created on: 2016-12-16 +; */ + + AREA |.text|, CODE, READONLY, ALIGN=2 + THUMB + REQUIRE8 + PRESERVE8 + +; NOTE: If use this file's HardFault_Handler, please comments the HardFault_Handler code on other file. + IMPORT cm_backtrace_fault + EXPORT HardFault_Handler + +HardFault_Handler PROC + MOV r0, lr ; get lr + MOV r1, sp ; get stack pointer (current is MSP) + BL cm_backtrace_fault + +Fault_Loop + BL Fault_Loop ;while(1) + ENDP + + END