Skip to content

Commit b28f710

Browse files
authored
Merge pull request #1918 from ARM-software/master
[BEETLE] Enable RTOS on Beetle
2 parents 6167f23 + f8d7a76 commit b28f710

File tree

6 files changed

+61
-62
lines changed

6 files changed

+61
-62
lines changed

hal/targets/cmsis/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/startup_BEETLE.s

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -26,28 +26,7 @@
2626
;*/
2727

2828

29-
; <h> Stack Configuration
30-
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
31-
; </h>
32-
33-
Stack_Size EQU 0x00000400
34-
35-
AREA STACK, NOINIT, READWRITE, ALIGN=3
36-
Stack_Mem SPACE Stack_Size
37-
__initial_sp
38-
39-
40-
; <h> Heap Configuration
41-
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
42-
; </h>
43-
44-
Heap_Size EQU 0x00000C00
45-
46-
AREA HEAP, NOINIT, READWRITE, ALIGN=3
47-
__heap_base
48-
Heap_Mem SPACE Heap_Size
49-
__heap_limit
50-
29+
__initial_sp EQU 0x20020000 ; Top of RAM
5130

5231
PRESERVE8
5332
THUMB
@@ -286,31 +265,4 @@ TRNG_Handler
286265

287266
ALIGN
288267

289-
290-
; User Initial Stack & Heap
291-
292-
IF :DEF:__MICROLIB
293-
294-
EXPORT __initial_sp
295-
EXPORT __heap_base
296-
EXPORT __heap_limit
297-
298-
ELSE
299-
300-
IMPORT __use_two_region_memory
301-
EXPORT __user_initial_stackheap
302-
303-
__user_initial_stackheap PROC
304-
LDR R0, = Heap_Mem
305-
LDR R1, =(Stack_Mem + Stack_Size)
306-
LDR R2, = (Heap_Mem + Heap_Size)
307-
LDR R3, = Stack_Mem
308-
BX LR
309-
ENDP
310-
311-
ALIGN
312-
313-
ENDIF
314-
315-
316268
END
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* PackageLicenseDeclared: Apache-2.0
3+
* Copyright (c) 2015 ARM Limited
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
#ifdef __cplusplus
19+
extern "C" {
20+
#endif
21+
22+
#include <rt_misc.h>
23+
#include <stdint.h>
24+
25+
/* Get RW_IRAM1 from scatter definition */
26+
extern char Image$$RW_IRAM1$$ZI$$Limit[];
27+
28+
extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
29+
uint32_t beetle_zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
30+
uint32_t beetle_sp_limit = __current_sp();
31+
32+
/* beetle_zi_limit has to be 8-byte aligned */
33+
beetle_zi_limit = (beetle_zi_limit + 7) & ~0x7;
34+
35+
struct __initial_stackheap r;
36+
r.heap_base = beetle_zi_limit;
37+
r.heap_limit = beetle_sp_limit;
38+
return r;
39+
}
40+
41+
#ifdef __cplusplus
42+
}
43+
#endif

hal/targets/cmsis/TARGET_ARM_SSG/TARGET_BEETLE/systick_timer.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ static uint32_t clock;
3030
#define SYSTICK_MAX_RELOAD 0xFFFFFFFF
3131
#define SYSTICK_DIVIDER_US (SystemCoreClock/1000000)
3232

33-
void SysTick_Handler(void)
33+
void SysTick_IRQ_Handler(void)
3434
{
3535
MyTicks++;
3636
#if 0
@@ -60,6 +60,10 @@ void SysTick_Initialize(void)
6060
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk
6161
| SysTick_CTRL_ENABLE_Msk
6262
| SysTick_CTRL_TICKINT_Msk;
63+
64+
/* Register the Interrupt */
65+
NVIC_SetVector(SysTick_IRQn, (uint32_t)SysTick_IRQ_Handler);
66+
NVIC_EnableIRQ(SysTick_IRQn);
6367
}
6468

6569
/*

rtos/rtx/TARGET_CORTEX_M/RTX_CM_lib.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ osThreadDef_t os_thread_def_main = {(os_pthread)pre_main, osPriorityNormal, 1U,
495495
#elif defined(TARGET_STM32L152RC)
496496
#define INITIAL_SP (0x20008000UL)
497497

498-
#elif defined(TARGET_EFM32GG_STK3700)
498+
#elif defined(TARGET_EFM32GG_STK3700) || defined(TARGET_BEETLE)
499499
#define INITIAL_SP (0x20020000UL)
500500

501501
#elif defined(TARGET_EFM32HG_STK3400)

rtos/rtx/TARGET_CORTEX_M/RTX_Conf_CM.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
|| defined(TARGET_STM32F103RB) || defined(TARGET_LPC824) || defined(TARGET_STM32F302R8) || defined(TARGET_STM32F334R8) || defined(TARGET_STM32F334C8) \
6565
|| defined(TARGET_STM32L031K6) || defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) || defined(TARGET_STM32L073RZ) || defined(TARGET_STM32F072RB) || defined(TARGET_STM32F091RC) || defined(TARGET_NZ32_SC151) \
6666
|| defined(TARGET_SSCI824) || defined(TARGET_STM32F030R8) || defined(TARGET_STM32F070RB) \
67-
|| defined(TARGET_EFM32HG_STK3400) || defined(TARGET_MCU_NRF51822)
67+
|| defined(TARGET_EFM32HG_STK3400) || defined(TARGET_MCU_NRF51822) || defined(TARGET_BEETLE)
6868
# define OS_TASKCNT 6
6969
# else
7070
# error "no target defined"
@@ -102,7 +102,7 @@
102102
# define OS_MAINSTKSIZE 128
103103
# elif defined(TARGET_STM32F334R8) || defined(TARGET_STM32F303RE) || defined(TARGET_STM32F303K8) || defined(TARGET_STM32F334C8) \
104104
|| defined(TARGET_STM32L031K6) || defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) || defined(TARGET_STM32L073RZ) \
105-
|| defined(TARGET_EFM32HG_STK3400)
105+
|| defined(TARGET_EFM32HG_STK3400) || defined(TARGET_BEETLE)
106106
# define OS_MAINSTKSIZE 112
107107
# elif defined(TARGET_MCU_NRF51822)
108108
# define OS_MAINSTKSIZE 512
@@ -188,7 +188,7 @@
188188
# elif defined(TARGET_LPC824) || defined(TARGET_SSCI824)
189189
# define OS_CLOCK 30000000
190190

191-
# elif defined(TARGET_STM32F100RB)
191+
# elif defined(TARGET_STM32F100RB) || defined(TARGET_BEETLE)
192192
# define OS_CLOCK 24000000
193193

194194
# elif defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM) || defined(TARGET_K64F) || defined(TARGET_K22F)

tools/tests.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@
715715
"NUCLEO_L031K6", "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "DISCO_L476VG", "NUCLEO_L476RG",
716716
"DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
717717
"EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
718-
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE"],
718+
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE", "ARM_BEETLE_SOC"],
719719
},
720720
{
721721
"id": "RTOS_2", "description": "Mutex resource lock",
@@ -731,7 +731,7 @@
731731
"DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG",
732732
"NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
733733
"EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
734-
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE"],
734+
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE", "ARM_BEETLE_SOC"],
735735
},
736736
{
737737
"id": "RTOS_3", "description": "Semaphore resource lock",
@@ -747,7 +747,7 @@
747747
"DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG",
748748
"NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
749749
"EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
750-
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE"],
750+
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE", "ARM_BEETLE_SOC"],
751751
},
752752
{
753753
"id": "RTOS_4", "description": "Signals messaging",
@@ -762,7 +762,7 @@
762762
"DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG",
763763
"NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
764764
"EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
765-
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE"],
765+
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE", "ARM_BEETLE_SOC"],
766766
},
767767
{
768768
"id": "RTOS_5", "description": "Queue messaging",
@@ -777,7 +777,7 @@
777777
"DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
778778
"NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
779779
"EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
780-
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE"],
780+
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE", "ARM_BEETLE_SOC"],
781781
},
782782
{
783783
"id": "RTOS_6", "description": "Mail messaging",
@@ -792,7 +792,7 @@
792792
"DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
793793
"NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
794794
"EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
795-
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE"],
795+
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE", "ARM_BEETLE_SOC"],
796796
},
797797
{
798798
"id": "RTOS_7", "description": "Timer",
@@ -809,7 +809,7 @@
809809
"DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
810810
"NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
811811
"EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
812-
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE"],
812+
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE", "ARM_BEETLE_SOC"],
813813
},
814814
{
815815
"id": "RTOS_8", "description": "ISR (Queue)",
@@ -824,7 +824,7 @@
824824
"DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
825825
"NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
826826
"EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
827-
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE"],
827+
"NRF51822", "NRF51_DK", "NRF51_MICROBIT", "SEEED_TINY_BLE", "ARM_BEETLE_SOC"],
828828
},
829829
{
830830
"id": "RTOS_9", "description": "SD File write-read",

0 commit comments

Comments
 (0)