8 #include <gpiointerrupt.h> 10 #include <contiki-conf.h> 12 extern uint8_t __bss_start__[];
13 extern uint8_t __bss_end__[];
14 extern uint32_t __isr_vector[];
18 extern int main(
void);
23 uint8_t *m = __bss_start__;
24 while(m < __bss_end__) {
30 enable_fault_exceptions(
void)
33 MPU_RegionInit_TypeDef flashInit = MPU_INIT_FLASH_DEFAULT;
34 MPU_RegionInit_TypeDef sramInit = MPU_INIT_SRAM_DEFAULT;
35 MPU_RegionInit_TypeDef peripheralInit = MPU_INIT_PERIPHERAL_DEFAULT;
39 MPU_ConfigureRegion(&flashInit);
40 MPU_ConfigureRegion(&sramInit);
41 MPU_ConfigureRegion(&peripheralInit);
42 MPU_Enable(MPU_CTRL_PRIVDEFENA);
44 SCB->SHCSR |= (SCB_SHCSR_MEMFAULTENA_Msk | SCB_SHCSR_BUSFAULTENA_Msk
45 | SCB_SHCSR_USGFAULTENA_Msk);
53 CMU_OscillatorEnable(cmuOsc_LFRCO,
true,
true);
54 CMU_OscillatorEnable(cmuOsc_LFXO,
false,
false);
57 CMU_ClockSelectSet(cmuClock_LFA, cmuSelect_LFRCO);
58 CMU_ClockSelectSet(cmuClock_LFB, cmuSelect_LFRCO);
59 CMU_ClockEnable(cmuClock_CORELE,
true);
63 CMU_ClockSelectSet(cmuClock_HF, cmuSelect_HFRCO);
64 CMU_HFRCOBandSet(cmuHFRCOBand_1MHz);
67 #ifdef EFM32_DEBUG_SWO 68 static void setupSWO(
void)
71 CMU->HFPERCLKEN0 |= CMU_HFPERCLKEN0_GPIO;
73 GPIO->ROUTE |= GPIO_ROUTE_SWOPEN;
74 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY) || defined(_EFM32_LEOPARD_FAMILY) 76 GPIO->ROUTE = (GPIO->ROUTE & ~(_GPIO_ROUTE_SWLOCATION_MASK)) | GPIO_ROUTE_SWLOCATION_LOC0;
79 GPIO->P[5].MODEL &= ~(_GPIO_P_MODEL_MODE2_MASK);
80 GPIO->P[5].MODEL |= GPIO_P_MODEL_MODE2_PUSHPULL;
83 GPIO->ROUTE = (GPIO->ROUTE & ~(_GPIO_ROUTE_SWLOCATION_MASK)) | GPIO_ROUTE_SWLOCATION_LOC1;
85 GPIO->P[2].MODEH &= ~(_GPIO_P_MODEH_MODE15_MASK);
86 GPIO->P[2].MODEH |= GPIO_P_MODEH_MODE15_PUSHPULL;
89 CMU->OSCENCMD = CMU_OSCENCMD_AUXHFRCOEN;
91 while(!(CMU->STATUS & CMU_STATUS_AUXHFRCORDY));
94 CoreDebug->DHCSR |= 1;
95 CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
98 DWT->CTRL = 0x400113FF;
104 ITM->LAR = 0xC5ACCE55;
108 CMU->HFPERCLKEN0 &= ~CMU_HFPERCLKEN0_GPIO;
117 "ldr r3, =__isr_vector;" 122 SCB->VTOR = (uint32_t)__isr_vector;
125 NVIC_SetPriority(PendSV_IRQn, 0xFF);
128 enable_fault_exceptions();
132 CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
133 DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
135 #ifdef EFM32_DEBUG_SWO 149 _xassert(
const char *file,
int lineno)
151 printf(
"Assertion failed: file %s, line %d.\n", file, lineno);
161 printf(
"UIP: %s\r\n", msg);
172 HardFault_Handler(
void)
178 UsageFault_Handler(
void)
184 MemManage_Handler(
void)
190 BusFault_Handler(
void)
__attribute__((always_inline)) static inline void swint_enable_indirect_adapter(swint_state_t *state)
Header file for the EVE clock management framework.