1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
Commit Graph

205 Commits

Author SHA1 Message Date
smlng
59e299635b cppcheck: add/correct reason for cppcheck-suppress
Adding and correcting description/rational on why certain cppcheck
warnings or errors are intentionally suppressed.
2018-09-25 12:03:58 +02:00
Pekka Nikander
6aa0a48558 cpu/cortexm_common/cortexm_init: Allow piecewise calling
Refactor cortexm_init to allow bits and pieces of
   it to be called separately, while retaining the
   current API, too.  Needed for non-standard
   Cortex-M initialisation, such as with nRF52
   SoftDevice.
2018-08-28 14:07:50 +03:00
Martine Lenders
b305ee4b41 cortexm_common: Mark llvm and gnu as supported toolchains 2018-08-16 16:41:58 +02:00
Gaëtan Harter
7dad2e7096
cortexm_common/ldscript: allow defining FW_ROM_SIZE
Allow defining a specific rom length to use for linking the firmware,
_fw_rom_length, instead of the default configuration to use the whole rom from
_rom_offset to the end.

 * Add cortexm_common/Makefile.include FW_ROM_SIZE configuration
 * Add an assertion that _fw_rom_length still respects _rom_length
2018-08-11 11:34:01 +02:00
Gaëtan Harter
c84539fdb3
cortexm_common: allow defining ROM_OFFFSET in a compilation rule
Define _rom_offset with a conditional evaluated at execution time to allow
setting it in compilation rules and generate in the same make instance different
elf files with different configurations.
2018-08-11 11:33:55 +02:00
Gaëtan Harter
9103dcaeda
cortexm_common: refactor the definition test
The variables should all always be defined.
2018-08-11 11:33:52 +02:00
Gaëtan Harter
83a617261a
cortexm_common/ldscript: add _fw_rom_length variable
It will help testing if it is taken into account and for defining for outside
after.
2018-08-11 11:33:47 +02:00
Gaëtan Harter
d9db258411
cortexm_common/ldscript: re-use _rom_offset variable name
Inspired by kaspar030 version to removing the new _boot_offset variable.

cbf324a66d/cpu/cortexm_common/ldscripts/cortexm.ld
2018-08-11 11:33:39 +02:00
PeterKietzmann
20397c5b15 cortexm_common: add SRAM based PRNG seeder 2018-07-04 17:55:16 +02:00
938677cc83 cpu*: fix doxygen grouping 2018-06-11 19:12:02 +02:00
smlng
34ade00db9 cpu/cortex_common: fix indention in vector table 2018-05-24 11:26:46 +02:00
Joakim Nohlgård
77449aa592
Merge pull request #9103 from gebart/pr/cortexm-vectors-const
cortexm: const ISR vectors
2018-05-11 21:35:12 +02:00
Joakim Nohlgård
4532c348b4 cortexm_common: Adjust ldscript memory segment attributes 2018-05-09 06:44:12 +02:00
Joakim Nohlgård
b8d6bcdb07 cortexm_common: specify load segment instead of load address for .data 2018-05-09 00:41:27 +02:00
Joakim Nohlgård
f073fdb34f cortexm_common: Mark base ISR vector as const 2018-05-09 00:32:28 +02:00
c9c7cd4951 cpu: cortexm_common: use thread_yield_higher() in cortexm_isr_end() 2018-04-13 10:12:39 +02:00
Girts Folkmanis
b9744f698f cortexm_common: don't try to set MEMFAULTENA on ARMv6-M
Before this change, if one tried to build a Cortex-M0+ target that had
an MPU, compilation would fail due to missing
'SCB_SHCSR_MEMFAULTENA_Msk' in SCB structure. Cortex-M0+ is a ARMv6-M
arch (unlike most other targets that have MPU support). ARMv6-M has more
limited support for fault conditions, see ARMv6-M Architecture Reference
Manual, D3.6.2.
2018-03-12 19:57:29 -07:00
Francisco Acosta
ac9328381c cpu/cortexm_common: add NOP after WFI to avoid hardfault on stm32l152 2018-02-12 15:10:34 +01:00
99d484f336 cpu/cortexm_common: select bitarithm_lsb() by available instructions 2018-01-16 23:35:14 +01:00
32c10ae2c9 core, cpu: rename thread_start_threading() -> cpu_switch_context_exit() 2017-11-16 14:40:16 +01:00
86665b71bf cpu: adapt to COREIF_NG removal 2017-11-16 14:40:16 +01:00
f6d7e54228
Merge pull request #7739 from kYc0o/factorise_sam0_ldscripts
ld: refactor sam0 ldscripts
2017-11-13 11:36:25 +01:00
Joakim Nohlgård
e3d5a70e0c cpu/cortexm: Remove leftover _estack declarations
These are leftovers from before the Cortex-M common ISR vectors were
split into vectors_cortexm.c
2017-11-10 15:38:14 +01:00
kYc0o
d25fd647e7 cpu/cortexm_common/ldscripts: add common linker script for cortexm family 2017-11-07 15:05:43 +01:00
kYc0o
4d681ac862 cpu/cortexm_common/Makefile.include: define linker length vars if set 2017-11-07 15:05:43 +01:00
268e763d63 make: move mcuboot related stuff to makefiles/mcuboot.mk 2017-11-07 12:28:41 +01:00
3ec8126c84 cpu: cortexm: provide periph_pm for all cortexm 2017-11-06 12:01:19 +01:00
a20745b6c5 cpu: make use of Makefile.periph 2017-11-06 12:01:19 +01:00
7c9f6a4763
Merge pull request #7907 from gebart/pr/cortexm-fix-hardfault-print
cortexm_common: Correct offset for hardfault stack
2017-11-02 15:59:36 +01:00
b5b970d760 cpu: cortexm: add Makefile.features 2017-11-02 12:59:45 +01:00
Joakim Nohlgård
2f55fdcec4 cortexm_common: Correct offset for hardfault stack
The required space for the hardfault handler is defined by
HARDFAULT_HANDLER_REQUIRED_STACK_SPACE, which is given in bytes,
this length is added to &_sram to find a lower limit on the amount of
stack space that the hard fault handler can work with. The _sram
variable, was mistakenly defined as a uint32_t, which makes &_sram into
a uint32_t*, which through pointer addition, made the required space 4
times as big as it was supposed to. By changing the type of _sram to
uint8_t, the required stack space is correctly computed.

The symptom was that the hardfault handler always reported that the
stack pointer had been corrupted and it was impossible to get any useful
information from the crash text.
2017-10-30 07:08:33 +01:00
14646fb332 Merge pull request #7776 from kaspar030/fix_cortexm_vectors_lto
cpu: cortexm: fix LTO issue for shared vector table
2017-10-21 00:02:48 +02:00
96b1b76ac9 cpu: cortexm: fix LTO issue for shared vector table (see #5774) 2017-10-20 22:19:44 +02:00
167bd30453 all: fix my email address 2017-10-20 15:02:41 +02:00
Hauke Petersen
5920d99752 pm: fix weak-based default implementations
Instead of using `weak` function definitions, this PR handles
default implementations using `PROVIDES_x` defines, allowing
for cpus/pm realted modules to use their own implementations.
2017-10-16 14:27:35 +02:00
Vincent Dupont
dd49f22532 cpu/cortexm_common: use irq_disable/irq_restore 2017-10-06 17:40:47 +02:00
Hauke Petersen
3ede8e9d95 cpu: force size of CPU specific vector table 2017-09-04 15:13:43 +02:00
Hauke Petersen
1a20ef8223 cpu: unified cortex-m base interrupt vector 2017-09-04 15:13:32 +02:00
kYc0o
3b6fad4dde cpu/cortexm_common: add image headers default size 2017-07-17 14:48:30 +02:00
kYc0o
1a52c80bf4 cpu/cortexm_common/ldscripts: add multislot variables 2017-07-17 14:48:28 +02:00
smlng
692cf96297 doc: fix doxygen grouping of cpu periph drivers 2017-06-26 14:42:11 +02:00
Joakim Nohlgård
dc3aa13e90 cortexm_common: Introduce bitbanding macros 2017-06-09 05:19:13 +02:00
Hauke Petersen
fd981dff22 cpu/cortexm: set VTOR for selected M0+ CPUs 2017-06-02 11:53:59 +02:00
0fcc7d3834 cleanup: apply headerguard script output 2017-05-24 17:54:02 +02:00
Hauke Petersen
10a7486246 cpu/cortex_common: added support for Cortex-M7 2017-05-08 09:16:11 +02:00
Hauke Petersen
f875c3efc2 cpu/cortexm: s/cpu_sleep_until_.../cortexm_sle.../ 2017-05-04 13:45:11 +02:00
Vincent Dupont
f656a31e58 cpu/cortexm_common: use linker variable to initialize SCB->VTOR 2017-03-17 18:07:22 +01:00
Hauke Petersen
37d4f44379 cpus: mv vendor headers to include/vendor/. 2017-03-07 08:55:15 +01:00
Michael Andersen
a72df9f015 cpu/cortexm_common: fix periph_pm typo 2017-02-22 15:58:20 -08:00
Joakim Nohlgård
20b184604b cortexm_common: Remove atomic_arch 2017-02-08 16:23:49 +01:00
Hauke Petersen
3da9ceb705 cpu/cortexm: fixed cortexm_sleep() 2017-01-27 13:00:24 +01:00
Oleg Hahm
c5abb08316 Merge pull request #4058 from daniel-k/pr/gdb_threads_openocd
cortex_m: Add debug symbols for OpenOCD/GDB thread support
2017-01-25 17:49:42 +01:00
be7771e0b9 cpu: cortexm_common: add define for number of non-isr exceptions 2017-01-25 10:22:03 +01:00
d8f0eaf127 cpu: cortexm: fix signed<->unsigned compare 2017-01-25 10:10:47 +01:00
d1db946188 Merge pull request #6344 from haukepetersen/opt_pm_misc
pm: misc cleanup and fixes
2017-01-24 14:07:36 +01:00
Oleg Hahm
7ee7801c10 *: remove trailing underscores from header guards 2017-01-19 18:30:53 +01:00
Hauke Petersen
801eeceb59 cpu/cortexm: removed unused pm include in panic.c 2017-01-19 11:05:44 +01:00
Hauke Petersen
409516c4d2 cpu/cortexm: moved pm.c to periph/pm.c 2017-01-19 11:05:44 +01:00
079a6ec5f4 Merge pull request #6346 from haukepetersen/opt_pm_cortexmsleep
cpu/cortexm: added shared cortexm_sleep() function
2017-01-18 10:55:04 +01:00
daniel-k
9d403d95ce cortex_m: Add debug symbols for OpenOCD/GDB thread support 2017-01-16 20:50:35 +01:00
Joakim Nohlgård
8c82d9952b cortexm_common: Fix -Wsign-compare warning in cortexm_init 2017-01-16 08:55:08 +01:00
Joakim Nohlgård
2c5e1065c5 cortexm_common: Fix unused parameter warnings in mpu_configure 2017-01-16 08:55:08 +01:00
Hauke Petersen
ed5d7ac0fd cpu/cortexm: added shared cortexm_sleep() function 2017-01-13 12:26:42 +01:00
807a190e20 cpu: cortexm: adapt to periph/pm 2017-01-12 16:26:01 +01:00
ca7bf15ac4 core: panic: adapt to pariph/pm 2017-01-12 16:26:01 +01:00
0194091673 remove obsolete lpm code 2017-01-12 11:24:15 +01:00
Hauke Petersen
04b246cb01 cpu/cortexm_common: added cortexm_isr_end() function 2016-12-21 11:27:46 +01:00
Ian Martin
299a3eed3b cpu/cortexm_common: simplify ARVALID tests and fix BFARVALID test. 2016-12-01 17:18:06 -05:00
zhuoshuguo
a60fa5b8d3 cpu/cortexm_common: fix include guards. 2016-11-16 11:45:03 +01:00
0dfcefc003 cpu: cortexm_common: fix compile warning 2016-10-27 15:20:56 +02:00
Ian Martin
22b5de86a5 add mpu_stack_guard pseudomodule (just Cortex-M for now)
triggers an exception during stack overflow,
but at a cost of 32-63 bytes of RAM per thread.
2016-10-24 12:40:44 -04:00
Ian Martin
b7bd6b3479 cpu/cortexm_common: add Memory Protection Unit (MPU) driver 2016-10-19 11:12:36 -04:00
Joakim Nohlgård
11c11a5ecf Merge pull request #5727 from kaspar030/fix_panic_compile
cpu: cortexm_common: fix compile warning
2016-10-14 10:08:42 +02:00
3dfafde027 cpu: cortexm_common: fix compile warning 2016-10-07 12:06:43 +02:00
5a03f08f91 cpu: cortexm_common: compile thread_arch.c without LTO 2016-08-29 13:30:17 +02:00
0bd2805b0c cpu: cortexm_common: explicitly define isr_pendsv and isr_svc 2016-08-29 13:30:17 +02:00
Antoine Faure
31e675b359 cpu: cortex_common: Add entry point to tell gdb where to start 2016-07-23 13:27:47 +02:00
Joakim Nohlgård
5cd91bc784 cortexm: Hard fault: Try to output as much as possible even with corrupt stack 2016-07-20 13:25:23 +02:00
Joakim Nohlgård
b02e0eca47 ps: Add current stack pointer and start of stack to isr_stack ps output (DEVELHELP) 2016-07-12 10:17:49 +02:00
Joakim Nohlgård
cb19a4c709 cortexm_common: Fix isr_stack_usage
Refactor and add multiply by word size to get the usage in number of
bytes instead of in number of words.

Verified implementation by manual memory inspection in GDB.
2016-06-20 14:33:17 +02:00
Joakim Nohlgård
4c91121372 Merge pull request #5455 from locicontrols/move-stack
cortexm_common: move the stack to the bottom of RAM
2016-06-20 14:28:10 +02:00
zhuoshuguo
1cbe79a373 CPU: fix include header guards
Fix cpu/lpc2387/include/lpc2387.h
2016-06-08 16:38:20 +02:00
Martine Lenders
9b1ad7820c Merge pull request #5491 from MohmadAyman/isr_stack_usage
cpu: add capability to show stack usage of ISR
2016-06-02 12:31:06 +02:00
MohmadAyman
53df3e8b57 core: cpu: provide function to acquire ISR stack usage 2016-06-01 23:01:35 +02:00
Joakim Nohlgård
9ad9f400e6 cpu/cortexm_common: Remove register keyword from variables
register is deprecated when building C++11 code and removed in C++17,
using it will cause build failures with C++ and -Werror. The register
hint keyword is likely ignored in GCC anyway.
2016-06-01 16:12:38 +02:00
Ian Martin
87e06756a5 cortexm_common: move the stack to the bottom of RAM 2016-05-19 15:55:36 -04:00
Toon Stegen
63c0e9bec6 cortexm_common: print trapped interrupt from ipsr
The IPSR (=Interrupt Program Status Register) contains the exception
type number of the current Interrupt Service Routine. Printing this
out can be useful to detect if a certain interrupt is not implemented.
2016-04-20 11:41:13 +02:00
DipSwitch
b6140f15f3 cpu/cortex-m: Enable STKALIGN to make the Cortex-M keep the stack 8 byte aligned on 4 byte aligned stack pointers 2016-04-07 00:27:26 +02:00
c3f7186d4e unify usage of inline assembly 2016-03-31 22:23:35 +02:00
DipSwitch
64b3957323 cpu/cortexm_common: Fix cpu_sleep_until_event() 2016-03-16 00:23:50 +01:00
Joakim Nohlgård
d8b01a714c cpu/cortexm_common: Doxygen fix for cmsis_gcc.h 2016-03-14 22:16:52 +01:00
Joakim Nohlgård
61c9ba2c64 cpu/cortexm_common: Whitespace fix CMSIS header 2016-03-14 22:08:33 +01:00
Joakim Gebart
bea6cb9f15 cortexm: CMSIS: Add extern "C" to CMSIS headers 2016-03-14 22:05:57 +01:00
Joakim Nohlgård
26f43786b8 cpu/cortexm_common: Update CMSIS v4.5
Original headers unmodified from CMSIS-SP-00300-r4p5-00rel0.zip
2016-03-14 18:16:36 +01:00
6881f65f46 cpu: cortexm*: move cpu_conf.h stuff from cpu.h into cpu_conf_common.h 2016-03-05 18:20:17 +01:00
Martine Lenders
01248f0599 Merge pull request #4944 from gebart/pr/cortexm-irqn-unsigned-int
cpu/cortexm_common: use int for counter in startup IRQn loop
2016-03-04 05:40:51 +01:00
Oleg Hahm
cdd6878fca Merge pull request #4942 from gebart/pr/clang-asm
cpu/cortexm_common: Fix inline asm for ARMv6-M so that it compiles in Clang as well
2016-03-03 12:53:24 +01:00
Joakim Nohlgård
3da2c2d1c1 cpu/cortexm_common: use int for counter in startup IRQn loop 2016-03-02 10:58:59 +01:00
Joakim Nohlgård
0ae11cc9bc cpu/cortexm_common: call hard_fault_handler using bl
Fixes this error when building with Clang 3.7.1:

fatal error: error in backend: unsupported relocation on symbol
x86_64-pc-linux-gnu-clang-3.7: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 3.7.1 (tags/RELEASE_371/final)
Target: arm-none--eabi
Thread model: posix
x86_64-pc-linux-gnu-clang-3.7: note: diagnostic msg: PLEASE submit a bug report to http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, and associated run script.
x86_64-pc-linux-gnu-clang-3.7: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
x86_64-pc-linux-gnu-clang-3.7: note: diagnostic msg: /tmp/vectors_cortexm-54333e.c
x86_64-pc-linux-gnu-clang-3.7: note: diagnostic msg: /tmp/vectors_cortexm-54333e.sh
x86_64-pc-linux-gnu-clang-3.7: note: diagnostic msg:

********************
2016-03-02 10:28:10 +01:00
Joakim Nohlgård
efa5cd4066 cpu/cortexm_common: Fix inline asm for ARMv6-M so that it compiles in Clang as well
ARMv6 does not have the mov instruction, only movs
2016-03-02 10:26:55 +01:00