fix hardfault backtrace support for iccarm
This commit is contained in:
@@ -76,43 +76,28 @@ __PORT__ void port_standby_mode_enter(void)
|
||||
#endif
|
||||
|
||||
#if TOS_CFG_FAULT_BACKTRACE_EN > 0u
|
||||
|
||||
__PORT__ void port_fault_diagnosis(void)
|
||||
{
|
||||
k_fault_log_writer("fault diagnosis is not supported in CORTEX M0\n");
|
||||
}
|
||||
|
||||
/*------------------ RealView Compiler -----------------*/
|
||||
/* V5 */
|
||||
#if defined(__CC_ARM)
|
||||
|
||||
__PORT__ __ASM__ void HardFault_Handler(void)
|
||||
{
|
||||
IMPORT fault_backtrace
|
||||
|
||||
MOV r0, lr
|
||||
TST lr, #0x04
|
||||
ITE EQ
|
||||
MRSEQ r1, MSP
|
||||
MRSNE r1, PSP
|
||||
BL fault_backtrace
|
||||
}
|
||||
|
||||
/*------------------ ARM Compiler V6 -------------------*/
|
||||
#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
|
||||
|
||||
__PORT__ void __NAKED__ HardFault_Handler(void)
|
||||
{
|
||||
__ASM__ __VOLATILE__ (
|
||||
"MOV r0, lr\n\t"
|
||||
"TST lr, #0x04\n\t"
|
||||
"ITE EQ\n\t"
|
||||
"MRSEQ r1, MSP\n\t"
|
||||
"MRSNE r1, PSP\n\t"
|
||||
"BL fault_backtrace\n\t"
|
||||
"MOVS r1, #0x04\n\t"
|
||||
"TST r0, r1\n\t"
|
||||
"BEQ _LD_MSP\n\t"
|
||||
"MRS r1, PSP\n\t"
|
||||
"B _EXIT\n"
|
||||
"_LD_MSP:\n\t"
|
||||
"MRS r1, MSP\n"
|
||||
"_EXIT:\n\t"
|
||||
"LDR r2, =fault_backtrace\n\t"
|
||||
"BX r2\n\t"
|
||||
);
|
||||
}
|
||||
|
||||
#endif /* ARMCC VERSION */
|
||||
|
||||
#endif /* TOS_CFG_FAULT_BACKTRACE_EN */
|
||||
|
||||
|
@@ -93,43 +93,28 @@ __PORT__ void port_standby_mode_enter(void)
|
||||
#endif
|
||||
|
||||
#if TOS_CFG_FAULT_BACKTRACE_EN > 0u
|
||||
|
||||
__PORT__ void port_fault_diagnosis(void)
|
||||
{
|
||||
k_fault_log_writer("fault diagnosis is not supported in CORTEX M0+\n");
|
||||
}
|
||||
|
||||
/*------------------ RealView Compiler -----------------*/
|
||||
/* V5 */
|
||||
#if defined(__CC_ARM)
|
||||
|
||||
__PORT__ __ASM__ void HardFault_Handler(void)
|
||||
{
|
||||
IMPORT fault_backtrace
|
||||
|
||||
MOV r0, lr
|
||||
TST lr, #0x04
|
||||
ITE EQ
|
||||
MRSEQ r1, MSP
|
||||
MRSNE r1, PSP
|
||||
BL fault_backtrace
|
||||
}
|
||||
|
||||
/*------------------ ARM Compiler V6 -------------------*/
|
||||
#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
|
||||
|
||||
__PORT__ void __NAKED__ HardFault_Handler(void)
|
||||
{
|
||||
__ASM__ __VOLATILE__ (
|
||||
"MOV r0, lr\n\t"
|
||||
"TST lr, #0x04\n\t"
|
||||
"ITE EQ\n\t"
|
||||
"MRSEQ r1, MSP\n\t"
|
||||
"MRSNE r1, PSP\n\t"
|
||||
"BL fault_backtrace\n\t"
|
||||
"MOVS r1, #0x04\n\t"
|
||||
"TST r0, r1\n\t"
|
||||
"BEQ _LD_MSP\n\t"
|
||||
"MRS r1, PSP\n\t"
|
||||
"B _EXIT\n"
|
||||
"_LD_MSP:\n\t"
|
||||
"MRS r1, MSP\n"
|
||||
"_EXIT:\n\t"
|
||||
"LDR r2, =fault_backtrace\n\t"
|
||||
"BX r2\n\t"
|
||||
);
|
||||
}
|
||||
|
||||
#endif /* ARMCC VERSION */
|
||||
|
||||
#endif /* TOS_CFG_FAULT_BACKTRACE_EN */
|
||||
|
||||
|
@@ -244,25 +244,6 @@ __PORT__ void port_fault_diagnosis(void)
|
||||
port_fault_do_diagnosis(®s);
|
||||
}
|
||||
|
||||
/*------------------ RealView Compiler -----------------*/
|
||||
/* V5 */
|
||||
#if defined(__CC_ARM)
|
||||
|
||||
__PORT__ __ASM__ void HardFault_Handler(void)
|
||||
{
|
||||
IMPORT fault_backtrace
|
||||
|
||||
MOV r0, lr
|
||||
TST lr, #0x04
|
||||
ITE EQ
|
||||
MRSEQ r1, MSP
|
||||
MRSNE r1, PSP
|
||||
BL fault_backtrace
|
||||
}
|
||||
|
||||
/*------------------ ARM Compiler V6 -------------------*/
|
||||
#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
|
||||
|
||||
__PORT__ void __NAKED__ HardFault_Handler(void)
|
||||
{
|
||||
__ASM__ __VOLATILE__ (
|
||||
@@ -271,11 +252,10 @@ __PORT__ void __NAKED__ HardFault_Handler(void)
|
||||
"ITE EQ\n\t"
|
||||
"MRSEQ r1, MSP\n\t"
|
||||
"MRSNE r1, PSP\n\t"
|
||||
"BL fault_backtrace\n\t"
|
||||
"LDR r2, =fault_backtrace\n\t"
|
||||
"BX r2\n\t"
|
||||
);
|
||||
}
|
||||
|
||||
#endif /* ARMCC VERSION */
|
||||
|
||||
#endif /* TOS_CFG_FAULT_BACKTRACE_EN */
|
||||
|
||||
|
@@ -227,25 +227,6 @@ __PORT__ void port_fault_diagnosis(void)
|
||||
port_fault_do_diagnosis(®s);
|
||||
}
|
||||
|
||||
/*------------------ RealView Compiler -----------------*/
|
||||
/* V5 */
|
||||
#if defined(__CC_ARM)
|
||||
|
||||
__PORT__ __ASM__ void HardFault_Handler(void)
|
||||
{
|
||||
IMPORT fault_backtrace
|
||||
|
||||
MOV r0, lr
|
||||
TST lr, #0x04
|
||||
ITE EQ
|
||||
MRSEQ r1, MSP
|
||||
MRSNE r1, PSP
|
||||
BL fault_backtrace
|
||||
}
|
||||
|
||||
/*------------------ ARM Compiler V6 -------------------*/
|
||||
#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
|
||||
|
||||
__PORT__ void __NAKED__ HardFault_Handler(void)
|
||||
{
|
||||
__ASM__ __VOLATILE__ (
|
||||
@@ -254,11 +235,10 @@ __PORT__ void __NAKED__ HardFault_Handler(void)
|
||||
"ITE EQ\n\t"
|
||||
"MRSEQ r1, MSP\n\t"
|
||||
"MRSNE r1, PSP\n\t"
|
||||
"BL fault_backtrace\n\t"
|
||||
"LDR r2, =fault_backtrace\n\t"
|
||||
"BX r2\n\t"
|
||||
);
|
||||
}
|
||||
|
||||
#endif /* ARMCC VERSION */
|
||||
|
||||
#endif /* TOS_CFG_FAULT_BACKTRACE_EN */
|
||||
|
||||
|
@@ -93,30 +93,12 @@ __PORT__ void port_standby_mode_enter(void)
|
||||
#endif
|
||||
|
||||
#if TOS_CFG_FAULT_BACKTRACE_EN > 0u
|
||||
|
||||
__PORT__ void port_fault_diagnosis(void)
|
||||
{
|
||||
k_fault_log_writer("fault diagnosis is not supported in CORTEX M23\n");
|
||||
}
|
||||
|
||||
/*------------------ RealView Compiler -----------------*/
|
||||
/* V5 */
|
||||
#if defined(__CC_ARM)
|
||||
|
||||
__PORT__ __ASM__ void HardFault_Handler(void)
|
||||
{
|
||||
IMPORT fault_backtrace
|
||||
|
||||
MOV r0, lr
|
||||
TST lr, #0x04
|
||||
ITE EQ
|
||||
MRSEQ r1, MSP
|
||||
MRSNE r1, PSP
|
||||
BL fault_backtrace
|
||||
}
|
||||
|
||||
/*------------------ ARM Compiler V6 -------------------*/
|
||||
#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
|
||||
|
||||
__PORT__ void __NAKED__ HardFault_Handler(void)
|
||||
{
|
||||
__ASM__ __VOLATILE__ (
|
||||
@@ -125,11 +107,10 @@ __PORT__ void __NAKED__ HardFault_Handler(void)
|
||||
"ITE EQ\n\t"
|
||||
"MRSEQ r1, MSP\n\t"
|
||||
"MRSNE r1, PSP\n\t"
|
||||
"BL fault_backtrace\n\t"
|
||||
"LDR r2, =fault_backtrace\n\t"
|
||||
"BX r2\n\t"
|
||||
);
|
||||
}
|
||||
|
||||
#endif /* ARMCC VERSION */
|
||||
|
||||
#endif /* TOS_CFG_FAULT_BACKTRACE_EN */
|
||||
|
||||
|
@@ -61,7 +61,7 @@ void NMI_Handler(void)
|
||||
/**
|
||||
* @brief This function handles Hard fault interrupt.
|
||||
*/
|
||||
void HardFault_Handler(void)
|
||||
void xHardFault_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN HardFault_IRQn 0 */
|
||||
|
||||
|
@@ -1169,6 +1169,9 @@
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\..\arch\arm\arm-v7m\common\tos_cpu.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\..\arch\arm\arm-v7m\common\tos_fault.c</name>
|
||||
</file>
|
||||
</group>
|
||||
<group>
|
||||
<name>kernel</name>
|
||||
|
@@ -37,5 +37,7 @@
|
||||
|
||||
#define TOS_CFG_TIMER_AS_PROC 1u
|
||||
|
||||
#define TOS_CFG_FAULT_BACKTRACE_EN 1u
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -82,7 +82,7 @@ void NMI_Handler(void)
|
||||
/**
|
||||
* @brief This function handles Hard fault interrupt.
|
||||
*/
|
||||
void HardFault_Handler(void)
|
||||
void HardFault_Handlerx(void)
|
||||
{
|
||||
/* USER CODE BEGIN HardFault_IRQn 0 */
|
||||
|
||||
|
@@ -66,7 +66,7 @@
|
||||
</option>
|
||||
<option>
|
||||
<name>OGLastSavedByProductVersion</name>
|
||||
<state>8.30.1.17146</state>
|
||||
<state>8.32.1.18618</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>GeneralEnableMisra</name>
|
||||
@@ -215,12 +215,12 @@
|
||||
<name>ICCARM</name>
|
||||
<archiveVersion>2</archiveVersion>
|
||||
<data>
|
||||
<version>34</version>
|
||||
<version>35</version>
|
||||
<wantNonLocal>1</wantNonLocal>
|
||||
<debug>1</debug>
|
||||
<option>
|
||||
<name>CCDefines</name>
|
||||
<state></state>
|
||||
<state>STM32L073xx</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCPreprocFile</name>
|
||||
@@ -329,7 +329,7 @@
|
||||
</option>
|
||||
<option>
|
||||
<name>OutputFile</name>
|
||||
<state></state>
|
||||
<state>$FILE_BNAME$.o</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCLibConfigHeader</name>
|
||||
@@ -345,7 +345,15 @@
|
||||
</option>
|
||||
<option>
|
||||
<name>CCIncludePath2</name>
|
||||
<state></state>
|
||||
<state>$PROJ_DIR$\..\..\BSP\Inc</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\arch\arm\arm-v7m\common\include</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\arch\arm\arm-v7m\cortex-m0+\iccarm</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\kernel\core\include</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\osal\cmsis_os</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\platform\vendor_bsp\st\CMSIS\Device\ST\STM32L0xx\Include</state>
|
||||
<state>$PROJ_DIR$\..\..\TOS_CONFIG</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\platform\vendor_bsp\st\STM32L0xx_HAL_Driver\Inc</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\platform\vendor_bsp\st\CMSIS\Core\Include</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCStdIncCheck</name>
|
||||
@@ -463,6 +471,10 @@
|
||||
<name>IccRTTI2</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>OICompilerExtraOption</name>
|
||||
<state>1</state>
|
||||
</option>
|
||||
</data>
|
||||
</settings>
|
||||
<settings>
|
||||
@@ -519,7 +531,7 @@
|
||||
</option>
|
||||
<option>
|
||||
<name>ADefines</name>
|
||||
<state></state>
|
||||
<state>STM32L073xx</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>AList</name>
|
||||
@@ -611,7 +623,16 @@
|
||||
</option>
|
||||
<option>
|
||||
<name>AUserIncludes</name>
|
||||
<state></state>
|
||||
<state>$PROJ_DIR$\..\..\TOS_CONFIG</state>
|
||||
<state>$PROJ_DIR$\..\..\BSP\Inc</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\arch\arm\arm-v7m\common\include</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\arch\arm\arm-v7m\cortex-m0+\iccarm</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\kernel\core\include</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\osal\cmsis_os</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\platform\vendor_bsp\st\CMSIS\Device\ST\STM32L0xx\Include</state>
|
||||
<state>$PROJ_DIR$\..\..\TOS_CONFIG</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\platform\vendor_bsp\st\STM32L0xx_HAL_Driver\Inc</state>
|
||||
<state>$PROJ_DIR$\..\..\..\..\platform\vendor_bsp\st\CMSIS\Core\Include</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>AExtraOptionsCheckV2</name>
|
||||
@@ -683,7 +704,7 @@
|
||||
<name>ILINK</name>
|
||||
<archiveVersion>0</archiveVersion>
|
||||
<data>
|
||||
<version>21</version>
|
||||
<version>22</version>
|
||||
<wantNonLocal>1</wantNonLocal>
|
||||
<debug>1</debug>
|
||||
<option>
|
||||
@@ -764,7 +785,7 @@
|
||||
</option>
|
||||
<option>
|
||||
<name>IlinkIcfFile</name>
|
||||
<state>lnk0t.icf</state>
|
||||
<state>$TOOLKIT_DIR$\config\linker\ST\stm32l073xZ.icf</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>IlinkIcfFileSlave</name>
|
||||
@@ -824,7 +845,7 @@
|
||||
</option>
|
||||
<option>
|
||||
<name>IlinkProgramEntryLabel</name>
|
||||
<state></state>
|
||||
<state>__iar_program_start</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>DoFill</name>
|
||||
@@ -997,7 +1018,11 @@
|
||||
</option>
|
||||
<option>
|
||||
<name>IlinkTrustzoneImportLibraryOut</name>
|
||||
<state>###Unitialized###</state>
|
||||
<state>TencentOS_tiny_import_lib.o</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>OILinkExtraOption</name>
|
||||
<state>1</state>
|
||||
</option>
|
||||
</data>
|
||||
</settings>
|
||||
@@ -1141,6 +1166,9 @@
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\..\arch\arm\arm-v7m\common\tos_cpu.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\..\arch\arm\arm-v7m\common\tos_fault.c</name>
|
||||
</file>
|
||||
</group>
|
||||
<group>
|
||||
<name>tos/cmsis-os</name>
|
||||
|
@@ -1298,6 +1298,9 @@
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\..\arch\arm\arm-v7m\common\tos_cpu.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\..\arch\arm\arm-v7m\common\tos_fault.c</name>
|
||||
</file>
|
||||
</group>
|
||||
<group>
|
||||
<name>tos/cmsis-os</name>
|
||||
|
@@ -33,5 +33,7 @@
|
||||
|
||||
#define TOS_CFG_TIMER_AS_PROC 1u
|
||||
|
||||
#define TOS_CFG_FAULT_BACKTRACE_EN 1u // 配置TencentOS tiny是否开启异常栈回溯功能
|
||||
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user