6 #include <contiki-conf.h> 7 #include <debug-uart.h> 10 extern uint8_t __bss_start__[];
11 extern uint8_t __bss_end__[];
12 extern uint32_t __isr_vector[];
13 extern void (*__preinit_array_start []) (void);
14 extern void (*__preinit_array_end []) (void);
15 extern void (*__init_array_start []) (void);
16 extern void (*__init_array_end []) (void);
20 extern int main(
void);
25 uint8_t *m = __bss_start__;
26 while(m < __bss_end__) {
32 enable_fault_exceptions(
void)
35 MPU_RegionInit_TypeDef flashInit = MPU_INIT_FLASH_DEFAULT;
36 MPU_RegionInit_TypeDef sramInit = MPU_INIT_SRAM_DEFAULT;
37 MPU_RegionInit_TypeDef peripheralInit = MPU_INIT_PERIPHERAL_DEFAULT;
41 MPU_ConfigureRegion(&flashInit);
42 MPU_ConfigureRegion(&sramInit);
43 MPU_ConfigureRegion(&peripheralInit);
44 MPU_Enable(MPU_CTRL_PRIVDEFENA);
46 SCB->SHCSR |= (SCB_SHCSR_MEMFAULTENA_Msk | SCB_SHCSR_BUSFAULTENA_Msk
47 | SCB_SHCSR_USGFAULTENA_Msk);
56 #ifdef NRF52_ENABLE_SWO 57 static void setupSWO(
void)
59 NRF_CLOCK->TRACECONFIG |= (CLOCK_TRACECONFIG_TRACEMUX_Serial << CLOCK_TRACECONFIG_TRACEMUX_Pos);
60 NRF_P0->PIN_CNF[18] = (GPIO_PIN_CNF_DRIVE_H0H1 << GPIO_PIN_CNF_DRIVE_Pos)
61 | (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos)
62 | (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos);
66 static void libc_init(
void)
68 unsigned Index, Count;
70 Count = __preinit_array_end - __preinit_array_start;
71 for (Index = 0; Index < Count; Index++)
72 __preinit_array_start[Index]();
74 Count = __init_array_end - __init_array_start;
75 for (Index = 0; Index < Count; Index++)
76 __init_array_start[Index]();
84 "ldr r3, =__isr_vector;" 92 NVIC_SetPriority(PendSV_IRQn, 0xFF);
94 #ifdef NRF52_ENABLE_SWO 103 enable_fault_exceptions();
109 if (CoreDebug->DHCSR & CoreDebug_DHCSR_C_DEBUGEN_Msk)
115 _xassert(
const char *file,
int lineno)
119 printf(
"Assertion failed: file %s, line %d.\n", file, lineno);
122 if (CoreDebug->DHCSR & CoreDebug_DHCSR_C_DEBUGEN_Msk)
129 printf(
"UIP: %s\r\n", msg);
137 " ldr r0, =%[cdbg] \n" 138 " ldr r0, [r0, %[dhcsr]]\n" 139 " lsls r0, r0, #31\n" 143 " b NVIC_SystemReset\n" 145 : [cdbg]
"X" (CoreDebug)
146 , [dhcsr]
"J" (offsetof(CoreDebug_Type, DHCSR))
151 HardFault_Handler(
void)
170 " ldr r1, [r0,#24] \n" 171 " ldr r0, =%[cdbg] \n" 172 " ldr r0, [r0, %[dhcsr]]\n" 173 " lsls r0, r0, #31\n" 177 " b NVIC_SystemReset\n" 179 : [cdbg]
"X" (CoreDebug)
180 , [dhcsr]
"J" (offsetof(CoreDebug_Type, DHCSR))
185 UsageFault_Handler(
void)
204 " ldr r1, [r0,#24] \n" 205 " ldr r0, =%[cdbg] \n" 206 " ldr r0, [r0, %[dhcsr]]\n" 207 " lsls r0, r0, #31\n" 211 " b NVIC_SystemReset\n" 213 : [cdbg]
"X" (CoreDebug)
214 , [dhcsr]
"J" (offsetof(CoreDebug_Type, DHCSR))
219 MemManage_Handler(
void)
222 " ldr r0, =%[cdbg] \n" 223 " ldr r0, [r0, %[dhcsr]]\n" 224 " lsls r0, r0, #31\n" 228 " b NVIC_SystemReset\n" 230 : [cdbg]
"X" (CoreDebug)
231 , [dhcsr]
"J" (offsetof(CoreDebug_Type, DHCSR))
236 BusFault_Handler(
void)
239 " ldr r0, =%[cdbg] \n" 240 " ldr r0, [r0, %[dhcsr]]\n" 241 " lsls r0, r0, #31\n" 245 " b NVIC_SystemReset\n" 247 : [cdbg]
"X" (CoreDebug)
248 , [dhcsr]
"J" (offsetof(CoreDebug_Type, DHCSR))
Driver of the nRF52 non-volatile RAM.
void nvram_init(void)
Name: nvram_init Initialize the NVRAM module.
__attribute__((always_inline)) static inline void swint_enable_indirect_adapter(swint_state_t *state)
Header file for the EVE clock management framework.
Header file for the EVE microsecond-scale work scheduling.