Skip to content

Commit 5df96fb

Browse files
committed
Merge pull request #1815 from stevew817/feature/rtos_support_efm32
[Silicon Labs] Provide RTOS support for EFM32 targets
2 parents 02b0267 + b1accd3 commit 5df96fb

File tree

12 files changed

+92
-22
lines changed

12 files changed

+92
-22
lines changed

libraries/tests/rtos/mbed/basic/main.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,19 @@
88
* and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize.
99
*/
1010
#if (defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8)) && defined(TOOLCHAIN_GCC)
11-
#define STACK_SIZE DEFAULT_STACK_SIZE/2
11+
#define STACK_SIZE DEFAULT_STACK_SIZE/2
1212
#elif (defined(TARGET_STM32F030R8) || defined(TARGET_STM32F070RB)) && defined(TOOLCHAIN_GCC)
13-
#define STACK_SIZE DEFAULT_STACK_SIZE/2
13+
#define STACK_SIZE DEFAULT_STACK_SIZE/2
1414
#elif (defined(TARGET_STM32F030R8)) && defined(TOOLCHAIN_IAR)
15-
#define STACK_SIZE DEFAULT_STACK_SIZE/2
15+
#define STACK_SIZE DEFAULT_STACK_SIZE/2
16+
#elif (defined(TARGET_EFM32ZG_STK3200) || defined(TARGET_EFM32HG_STK3400)) && !defined(TOOLCHAIN_ARM_MICRO)
17+
#define STACK_SIZE 512
18+
#elif (defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32WG_STK3800) || defined(TARGET_EFM32PG_STK3401)) && !defined(TOOLCHAIN_ARM_MICRO)
19+
#define STACK_SIZE 768
20+
#elif (defined(TARGET_EFM32GG_STK3700)) && !defined(TOOLCHAIN_ARM_MICRO)
21+
#define STACK_SIZE 1536
1622
#else
17-
#define STACK_SIZE DEFAULT_STACK_SIZE
23+
#define STACK_SIZE DEFAULT_STACK_SIZE
1824
#endif
1925

2026
void print_char(char c = '*') {

libraries/tests/rtos/mbed/isr/main.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@
1616
#define STACK_SIZE DEFAULT_STACK_SIZE/4
1717
#elif (defined(TARGET_STM32F030R8)) && defined(TOOLCHAIN_IAR)
1818
#define STACK_SIZE DEFAULT_STACK_SIZE/2
19+
#elif (defined(TARGET_EFM32ZG_STK3200) || defined(TARGET_EFM32HG_STK3400)) && !defined(TOOLCHAIN_ARM_MICRO)
20+
#define STACK_SIZE 512
21+
#elif (defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32WG_STK3800) || defined(TARGET_EFM32PG_STK3401)) && !defined(TOOLCHAIN_ARM_MICRO)
22+
#define STACK_SIZE 768
23+
#elif (defined(TARGET_EFM32GG_STK3700)) && !defined(TOOLCHAIN_ARM_MICRO)
24+
#define STACK_SIZE 1536
1925
#else
2026
#define STACK_SIZE DEFAULT_STACK_SIZE
2127
#endif

libraries/tests/rtos/mbed/mail/main.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ typedef struct {
2424
#define STACK_SIZE DEFAULT_STACK_SIZE/2
2525
#elif (defined(TARGET_STM32F030R8)) && defined(TOOLCHAIN_IAR)
2626
#define STACK_SIZE DEFAULT_STACK_SIZE/2
27+
#elif (defined(TARGET_EFM32ZG_STK3200) || defined(TARGET_EFM32HG_STK3400)) && !defined(TOOLCHAIN_ARM_MICRO)
28+
#define STACK_SIZE 512
29+
#elif (defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32WG_STK3800) || defined(TARGET_EFM32PG_STK3401)) && !defined(TOOLCHAIN_ARM_MICRO)
30+
#define STACK_SIZE 768
31+
#elif (defined(TARGET_EFM32GG_STK3700)) && !defined(TOOLCHAIN_ARM_MICRO)
32+
#define STACK_SIZE 1536
2733
#else
2834
#define STACK_SIZE DEFAULT_STACK_SIZE
2935
#endif

libraries/tests/rtos/mbed/mutex/main.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@
2626
#define STACK_SIZE DEFAULT_STACK_SIZE/2
2727
#elif defined(TARGET_STM32F303K8) && defined(TOOLCHAIN_IAR)
2828
#define STACK_SIZE DEFAULT_STACK_SIZE/2
29+
#elif (defined(TARGET_EFM32ZG_STK3200) || defined(TARGET_EFM32HG_STK3400)) && !defined(TOOLCHAIN_ARM_MICRO)
30+
#define STACK_SIZE 512
31+
#elif (defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32WG_STK3800) || defined(TARGET_EFM32PG_STK3401)) && !defined(TOOLCHAIN_ARM_MICRO)
32+
#define STACK_SIZE 768
33+
#elif (defined(TARGET_EFM32GG_STK3700)) && !defined(TOOLCHAIN_ARM_MICRO)
34+
#define STACK_SIZE 1536
2935
#else
3036
#define STACK_SIZE DEFAULT_STACK_SIZE
3137
#endif

libraries/tests/rtos/mbed/queue/main.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ typedef struct {
2424
#define STACK_SIZE DEFAULT_STACK_SIZE/4
2525
#elif (defined(TARGET_STM32F030R8)) && defined(TOOLCHAIN_IAR)
2626
#define STACK_SIZE DEFAULT_STACK_SIZE/2
27+
#elif (defined(TARGET_EFM32ZG_STK3200) || defined(TARGET_EFM32HG_STK3400)) && !defined(TOOLCHAIN_ARM_MICRO)
28+
#define STACK_SIZE 512
29+
#elif (defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32WG_STK3800) || defined(TARGET_EFM32PG_STK3401)) && !defined(TOOLCHAIN_ARM_MICRO)
30+
#define STACK_SIZE 768
31+
#elif (defined(TARGET_EFM32GG_STK3700)) && !defined(TOOLCHAIN_ARM_MICRO)
32+
#define STACK_SIZE 1536
2733
#else
2834
#define STACK_SIZE DEFAULT_STACK_SIZE
2935
#endif

libraries/tests/rtos/mbed/semaphore/main.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@
2929
#define STACK_SIZE DEFAULT_STACK_SIZE/2
3030
#elif defined(TARGET_STM32F303K8) && defined(TOOLCHAIN_IAR)
3131
#define STACK_SIZE DEFAULT_STACK_SIZE/4
32+
#elif (defined(TARGET_EFM32ZG_STK3200) || defined(TARGET_EFM32HG_STK3400)) && !defined(TOOLCHAIN_ARM_MICRO)
33+
#define STACK_SIZE 512
34+
#elif (defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32WG_STK3800) || defined(TARGET_EFM32PG_STK3401)) && !defined(TOOLCHAIN_ARM_MICRO)
35+
#define STACK_SIZE 768
36+
#elif (defined(TARGET_EFM32GG_STK3700)) && !defined(TOOLCHAIN_ARM_MICRO)
37+
#define STACK_SIZE 1536
3238
#else
3339
#define STACK_SIZE DEFAULT_STACK_SIZE
3440
#endif

libraries/tests/rtos/mbed/signals/main.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@
1515
#define STACK_SIZE DEFAULT_STACK_SIZE/4
1616
#elif (defined(TARGET_STM32F030R8)) && defined(TOOLCHAIN_IAR)
1717
#define STACK_SIZE DEFAULT_STACK_SIZE/2
18+
#elif (defined(TARGET_EFM32ZG_STK3200) || defined(TARGET_EFM32HG_STK3400)) && !defined(TOOLCHAIN_ARM_MICRO)
19+
#define STACK_SIZE 512
20+
#elif (defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32WG_STK3800) || defined(TARGET_EFM32PG_STK3401)) && !defined(TOOLCHAIN_ARM_MICRO)
21+
#define STACK_SIZE 768
22+
#elif (defined(TARGET_EFM32GG_STK3700)) && !defined(TOOLCHAIN_ARM_MICRO)
23+
#define STACK_SIZE 1536
1824
#else
1925
#define STACK_SIZE DEFAULT_STACK_SIZE
2026
#endif

rtos/rtx/TARGET_CORTEX_M/RTX_CM_lib.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,17 @@ osThreadDef_t os_thread_def_main = {(os_pthread)pre_main, osPriorityNormal, 1U,
491491
#elif defined(TARGET_STM32L152RC)
492492
#define INITIAL_SP (0x20008000UL)
493493

494+
#elif defined(TARGET_EFM32GG_STK3700)
495+
#define INITIAL_SP (0x20020000UL)
496+
497+
#elif defined(TARGET_EFM32HG_STK3400)
498+
#define INITIAL_SP (0x20002000UL)
499+
500+
#elif defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32WG_STK3800) || defined(TARGET_EFM32PG_STK3401)
501+
#define INITIAL_SP (0x20008000UL)
494502

503+
#elif defined(TARGET_EFM32ZG_STK3200)
504+
#define INITIAL_SP (0x20001000UL)
495505
#else
496506
#error "no target defined"
497507

rtos/rtx/TARGET_CORTEX_M/RTX_Conf_CM.c

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,15 @@
5151
# if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM) || defined(TARGET_LPC4330) || defined(TARGET_LPC4337) || defined(TARGET_LPC1347) || defined(TARGET_K64F) || defined(TARGET_STM32F401RE)\
5252
|| defined(TARGET_STM32F410RB) || defined(TARGET_KL46Z) || defined(TARGET_KL43Z) || defined(TARGET_STM32F407) || defined(TARGET_F407VG) || defined(TARGET_STM32F303VC) || defined(TARGET_LPC1549) || defined(TARGET_LPC11U68) \
5353
|| defined(TARGET_STM32F411RE) || defined(TARGET_STM32F405RG) || defined(TARGET_K22F) || defined(TARGET_STM32F429ZI) || defined(TARGET_STM32F401VC) || defined(TARGET_MAX32610) || defined(TARGET_MAX32600) || defined(TARGET_TEENSY3_1) \
54-
|| defined(TARGET_STM32L152RE) || defined(TARGET_STM32F446RE) || defined(TARGET_STM32F446VE) || defined(TARGET_STM32L476VG) || defined(TARGET_STM32L476RG) || defined(TARGET_STM32F469NI) || defined(TARGET_STM32F746NG) || defined(TARGET_STM32F746ZG) || defined(TARGET_STM32L152RC)
54+
|| defined(TARGET_STM32L152RE) || defined(TARGET_STM32F446RE) || defined(TARGET_STM32F446VE) || defined(TARGET_STM32L476VG) || defined(TARGET_STM32L476RG) || defined(TARGET_STM32F469NI) || defined(TARGET_STM32F746NG) || defined(TARGET_STM32F746ZG) || defined(TARGET_STM32L152RC) \
55+
|| defined(TARGET_EFM32GG_STK3700) || defined(TARGET_EFM32WG_STK3800) || defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32PG_STK3401)
5556
# define OS_TASKCNT 14
5657
# elif defined(TARGET_LPC11U24) || defined(TARGET_STM32F303RE) || defined(TARGET_STM32F303K8) || defined(TARGET_LPC11U35_401) || defined(TARGET_LPC11U35_501) || defined(TARGET_LPCCAPPUCCINO) || defined(TARGET_LPC1114) \
5758
|| defined(TARGET_LPC812) || defined(TARGET_KL25Z) || defined(TARGET_KL26Z) || defined(TARGET_KL27Z) || defined(TARGET_KL05Z) || defined(TARGET_STM32F100RB) || defined(TARGET_STM32F051R8) \
5859
|| defined(TARGET_STM32F103RB) || defined(TARGET_LPC824) || defined(TARGET_STM32F302R8) || defined(TARGET_STM32F334R8) || defined(TARGET_STM32F334C8) \
5960
|| defined(TARGET_STM32L031K6) || defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) || defined(TARGET_STM32L073RZ) || defined(TARGET_STM32F072RB) || defined(TARGET_STM32F091RC) || defined(TARGET_NZ32_SC151) \
60-
|| defined(TARGET_SSCI824) || defined(TARGET_STM32F030R8) || defined(TARGET_STM32F070RB)
61+
|| defined(TARGET_SSCI824) || defined(TARGET_STM32F030R8) || defined(TARGET_STM32F070RB) \
62+
|| defined(TARGET_EFM32HG_STK3400) || defined(TARGET_EFM32ZG_STK3200)
6163
# define OS_TASKCNT 6
6264
# else
6365
# error "no target defined"
@@ -84,14 +86,18 @@
8486
# if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM) || defined(TARGET_LPC4330) || defined(TARGET_LPC4337) || defined(TARGET_LPC1347) || defined(TARGET_K64F) || defined(TARGET_STM32F401RE)\
8587
|| defined(TARGET_STM32F410RB) || defined(TARGET_KL46Z) || defined(TARGET_KL43Z) || defined(TARGET_STM32F407) || defined(TARGET_F407VG) || defined(TARGET_STM32F303VC) || defined(TARGET_LPC1549) || defined(TARGET_LPC11U68) \
8688
|| defined(TARGET_STM32F411RE) || defined(TARGET_STM32F405RG) || defined(TARGET_K22F) || defined(TARGET_STM32F429ZI) || defined(TARGET_STM32F401VC) || defined(TARGET_MAX32610) || defined(TARGET_MAX32600) || defined(TARGET_TEENSY3_1) \
87-
|| defined(TARGET_STM32L152RE) || defined(TARGET_STM32F446RE) || defined(TARGET_STM32F446VE) || defined(TARGET_STM32L476VG) || defined(TARGET_STM32L476RG) || defined(TARGET_STM32F469NI) || defined(TARGET_STM32F746NG) || defined(TARGET_STM32F746ZG) || defined(TARGET_STM32L152RC)
89+
|| defined(TARGET_STM32L152RE) || defined(TARGET_STM32F446RE) || defined(TARGET_STM32F446VE) || defined(TARGET_STM32L476VG) || defined(TARGET_STM32L476RG) || defined(TARGET_STM32F469NI) || defined(TARGET_STM32F746NG) || defined(TARGET_STM32F746ZG) || defined(TARGET_STM32L152RC) \
90+
||defined(TARGET_EFM32GG_STK3700)
8891
# define OS_MAINSTKSIZE 256
8992
# elif defined(TARGET_LPC11U24) || defined(TARGET_LPC11U35_401) || defined(TARGET_LPC11U35_501) || defined(TARGET_LPCCAPPUCCINO) || defined(TARGET_LPC1114) \
9093
|| defined(TARGET_LPC812) || defined(TARGET_KL25Z) || defined(TARGET_KL26Z) || defined(TARGET_KL27Z) || defined(TARGET_KL05Z) || defined(TARGET_STM32F100RB) || defined(TARGET_STM32F051R8) \
9194
|| defined(TARGET_STM32F103RB) || defined(TARGET_LPC824) || defined(TARGET_STM32F302R8) || defined(TARGET_STM32F072RB) || defined(TARGET_STM32F091RC) || defined(TARGET_NZ32_SC151) \
92-
|| defined(TARGET_SSCI824) || defined(TARGET_STM32F030R8) || defined(TARGET_STM32F070RB)
95+
|| defined(TARGET_SSCI824) || defined(TARGET_STM32F030R8) || defined(TARGET_STM32F070RB) \
96+
|| defined(TARGET_EFM32WG_STK3800) || defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32PG_STK3401)
9397
# define OS_MAINSTKSIZE 128
94-
# elif defined(TARGET_STM32F334R8) || defined(TARGET_STM32F303RE) || defined(TARGET_STM32F303K8) || defined(TARGET_STM32F334C8) || defined(TARGET_STM32L031K6) || defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) || defined(TARGET_STM32L073RZ)
98+
# elif defined(TARGET_STM32F334R8) || defined(TARGET_STM32F303RE) || defined(TARGET_STM32F303K8) || defined(TARGET_STM32F334C8) \
99+
|| defined(TARGET_STM32L031K6) || defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) || defined(TARGET_STM32L073RZ) \
100+
|| defined(TARGET_EFM32HG_STK3400) || defined(TARGET_EFM32ZG_STK3200)
95101
# define OS_MAINSTKSIZE 112
96102
# else
97103
# error "no target defined"
@@ -240,6 +246,10 @@
240246
#elif defined(TARGET_STM32L152RC)
241247
# define OS_CLOCK 24000000
242248

249+
#elif defined(TARGET_EFM32)
250+
# include "clocking.h"
251+
# define OS_CLOCK REFERENCE_FREQUENCY
252+
243253
# else
244254
# error "no target defined"
245255
# endif

workspace_tools/build_travis.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,12 @@
9797
{ "target": "NRF51_DK", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
9898
{ "target": "NRF51_MICROBIT", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
9999

100-
{ "target": "EFM32ZG_STK3200", "toolchains": "GCC_ARM", "libs": ["dsp"] },
101-
{ "target": "EFM32HG_STK3400", "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
102-
{ "target": "EFM32LG_STK3600", "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
103-
{ "target": "EFM32GG_STK3700", "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
104-
{ "target": "EFM32WG_STK3800", "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
105-
{ "target": "EFM32PG_STK3401", "toolchains": "GCC_ARM", "libs": ["dsp"] },
100+
{ "target": "EFM32ZG_STK3200", "toolchains": "GCC_ARM", "libs": ["dsp", "rtos"] },
101+
{ "target": "EFM32HG_STK3400", "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb"] },
102+
{ "target": "EFM32LG_STK3600", "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb"] },
103+
{ "target": "EFM32GG_STK3700", "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb"] },
104+
{ "target": "EFM32WG_STK3800", "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb"] },
105+
{ "target": "EFM32PG_STK3401", "toolchains": "GCC_ARM", "libs": ["dsp", "rtos"] },
106106

107107
{ "target": "MAXWSNENV", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
108108
{ "target": "MAX32600MBED", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },

0 commit comments

Comments
 (0)