Basic definitions for the Cortex-M common module. More...
Basic definitions for the Cortex-M common module.
When ever you want to do something hardware related, that is accessing MCUs registers, just include this file. It will then make sure that the MCU specific headers are included.
Definition in file cpu.h.
Include dependency graph for cpu.h:Go to the source code of this file.
| #define | STACK_CANARY_WORD (0xE7FEE7FEu) |
| Interrupt stack canary value. | |
| #define | PROVIDES_PM_SET_LOWEST |
| All Cortex-m-based CPUs provide pm_set_lowest. | |
| #define | CORTEXM_SCB_CPACR_FPU_ACCESS_FULL (0x00f00000) |
| Pattern to write into the co-processor Access Control Register to allow full FPU access. | |
| void | cortexm_init (void) |
| Initialize Cortex-M specific core parts of the CPU. | |
| static void | cortexm_init_fpu (void) |
| Initialize Cortex-M FPU. | |
| void | cortexm_init_isr_priorities (void) |
| Initialize Cortex-M interrupt priorities. | |
| void | cortexm_init_misc (void) |
| Initialize Cortex-M misc functions. | |
| static uintptr_t | cpu_get_caller_pc (void) |
| Returns the current content of the link register (lr) | |
| static void | cortexm_sleep_until_event (void) |
| Put the CPU into the 'wait for event' sleep mode. | |
| static void | cortexm_sleep (int deep) |
Put the CPU into (deep) sleep mode, using the WFI instruction. | |
| static void | cortexm_isr_end (void) |
| Trigger a conditional context scheduler run / context switch. | |
| static void | cpu_jump_to_image (uint32_t image_address) |
| Jumps to another image in flash. | |
| bool | cpu_check_address (volatile const char *address) |
| Checks is memory address valid or not. | |
| #define CORTEXM_SCB_CPACR_FPU_ACCESS_FULL (0x00f00000) |
Pattern to write into the co-processor Access Control Register to allow full FPU access.
Used in the cortexm_init_fpu inline function below.
| #define PROVIDES_PM_SET_LOWEST |
| #define STACK_CANARY_WORD (0xE7FEE7FEu) |
| void cortexm_init | ( | void | ) |
Initialize Cortex-M specific core parts of the CPU.
cortexm_init calls, in a default order, cortexm_init_fpu, cortexm_init_isr_priorities, and cortexm_init_misc. Also performs other default initialisations, including ones which you may or may not want.
Unless you have special requirements (like nRF52 with SD has), it is sufficient to call just cortexm_init and the cortexm_init_* functions do not need to (and should not) be called separately. If you have conflicting requirements, you may want to have a look cpu/nrft/cpu.c for an example of a non-default approach.
|
inlinestatic |
Initialize Cortex-M FPU.
Called from cpu/nrf52/cpu.c, since it cannot use the whole cortexm_init due to conflicting requirements.
Defined here as a static inline function to allow all callers to optimise this away if the FPU is not used.
| void cortexm_init_isr_priorities | ( | void | ) |
Initialize Cortex-M interrupt priorities.
Called from cpu/nrf52/cpu.c, since it cannot use the whole cortexm_init due to conflicting requirements.
Define CPU_CORTEXM_INIT_SUBFUNCTIONS to make this function publicly available.
| void cortexm_init_misc | ( | void | ) |
Initialize Cortex-M misc functions.
Called from cpu/nrf52/cpu.c, since it cannot use the whole cortexm_init due to conflicting requirements.
Define CPU_CORTEXM_INIT_SUBFUNCTIONS to make this function publicly available.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
| bool cpu_check_address | ( | volatile const char * | address | ) |
Checks is memory address valid or not.
This function can be used to check for memory size, peripherals availability, etc.
| [in] | address | Address to check |
|
inlinestatic |