30
30
extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit ;
31
31
extern uint8_t Image$$RW_IRAM2$$ZI$$Base [];
32
32
extern uint8_t Image$$RW_IRAM2$$ZI$$Limit [];
33
+ extern uint8_t Image$$TCM_OVERLAY$$ZI$$Base [];
34
+ extern uint8_t Image$$TCM_OVERLAY$$ZI$$Limit [];
33
35
extern uint8_t Image$$RW_DRAM2$$ZI$$Base [];
34
36
extern uint8_t Image$$RW_DRAM2$$ZI$$Limit [];
35
37
#define __bss_sram_start__ Image$$RW_IRAM2$$ZI$$Base
36
38
#define __bss_sram_end__ Image$$RW_IRAM2$$ZI$$Limit
39
+ #define __bss_dtcm_start__ Image$$TCM_OVERLAY$$ZI$$Base
40
+ #define __bss_dtcm_end__ Image$$TCM_OVERLAY$$ZI$$Limit
37
41
#define __bss_dram_start__ Image$$RW_DRAM2$$ZI$$Base
38
42
#define __bss_dram_end__ Image$$RW_DRAM2$$ZI$$Limit
43
+ #define __stackp Image$$ARM_LIB_STACK$$ZI$$Limit
39
44
40
45
#elif defined (__ICCARM__ )
41
46
@@ -50,15 +55,20 @@ void __iar_data_init_app(void)
50
55
__bss_start__ = (uint8_t * )__section_begin (".ram.bss" );
51
56
__bss_end__ = (uint8_t * )__section_end (".ram.bss" );
52
57
}
58
+ #define __stackp CSTACK$$Limit
53
59
54
60
#else
55
61
56
62
extern uint32_t __StackTop ;
63
+ extern uint32_t __StackLimit ;
57
64
extern uint8_t __bss_sram_start__ [];
58
65
extern uint8_t __bss_sram_end__ [];
66
+ extern uint8_t __bss_dtcm_start__ [];
67
+ extern uint8_t __bss_dtcm_end__ [];
59
68
extern uint8_t __bss_dram_start__ [];
60
69
extern uint8_t __bss_dram_end__ [];
61
70
71
+ #define __stackp __StackTop
62
72
#endif
63
73
64
74
extern VECTOR_Func NewVectorTable [];
@@ -161,20 +171,6 @@ void TRAP_HardFaultHandler_Patch(void)
161
171
}
162
172
#endif
163
173
164
- // Override original Interrupt Vector Table
165
- void TRAP_OverrideTable (uint32_t stackp )
166
- {
167
- // Set MSP
168
- __set_MSP (stackp );
169
-
170
- // Override NMI Handler
171
- NewVectorTable [2 ] = (VECTOR_Func ) TRAP_NMIHandler ;
172
-
173
- #if defined ( __ICCARM__ )
174
- NewVectorTable [3 ] = (VECTOR_Func ) TRAP_HardFaultHandler_Patch ;
175
- #endif
176
- }
177
-
178
174
extern _LONG_CALL_ void * __rtl_memset_v1_00 (void * m , int c , size_t n );
179
175
// Image2 Entry Function
180
176
void PLAT_Start (void )
@@ -190,18 +186,18 @@ void PLAT_Start(void)
190
186
__rtl_memset_v1_00 ((void * )__bss_start__ , 0 , __bss_end__ - __bss_start__ );
191
187
#else
192
188
__rtl_memset_v1_00 ((void * )__bss_sram_start__ , 0 , __bss_sram_end__ - __bss_sram_start__ );
189
+ __rtl_memset_v1_00 ((void * )__bss_dtcm_start__ , 0 , __bss_dtcm_end__ - __bss_dtcm_start__ );
193
190
__rtl_memset_v1_00 ((void * )__bss_dram_start__ , 0 , __bss_dram_end__ - __bss_dram_start__ );
194
191
#endif
195
192
196
- #if defined (__CC_ARM )
197
- TRAP_OverrideTable ((uint32_t )& Image$$ARM_LIB_STACK$$ZI$$Limit );
198
- #elif defined (__ICCARM__ )
199
- TRAP_OverrideTable ((uint32_t )& CSTACK$$Limit );
200
- #elif defined (__GNUC__ )
201
- TRAP_OverrideTable ((uint32_t )& __StackTop );
202
- #else
203
- TRAP_OverrideTable (0x1FFFFFFC );
193
+ // Set MSP
194
+ __set_MSP ((uint32_t )& __stackp - 0x100 );
195
+ // Overwrite vector table
196
+ NewVectorTable [2 ] = (VECTOR_Func ) TRAP_NMIHandler ;
197
+ #if defined ( __ICCARM__ )
198
+ NewVectorTable [3 ] = (VECTOR_Func ) TRAP_HardFaultHandler_Patch ;
204
199
#endif
200
+
205
201
extern HAL_TIMER_OP_EXT HalTimerOpExt ;
206
202
__rtl_memset_v1_00 ((void * )& HalTimerOpExt , 0 , sizeof (HalTimerOpExt ));
207
203
__rtl_memset_v1_00 ((void * )& HalTimerOp , 0 , sizeof (HalTimerOp ));
0 commit comments