diff --git a/ChangeLog b/ChangeLog index 2dc2160..d249e1c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2017-11-20 NIIBE Yutaka + * example-led: Update using stack-def.h. + * chopstx-cortex-m.c [__ARM_ARCH_6M__] (chx_sched): Fix. 2017-11-18 NIIBE Yutaka diff --git a/example-led/sample.c b/example-led/sample.c index f346676..7e7bcff 100644 --- a/example-led/sample.c +++ b/example-led/sample.c @@ -72,14 +72,17 @@ blk (void *arg) #define PRIO_BLK 2 #endif -extern uint8_t __process1_stack_base__[], __process1_stack_size__[]; -extern uint8_t __process2_stack_base__[], __process2_stack_size__[]; +#define STACK_MAIN +#define STACK_PROCESS_1 +#define STACK_PROCESS_2 +#include "stack-def.h" -#define STACK_ADDR_PWM ((uint32_t)__process1_stack_base__) -#define STACK_SIZE_PWM ((uint32_t)__process1_stack_size__) -#define STACK_ADDR_BLK ((uint32_t)__process2_stack_base__) -#define STACK_SIZE_BLK ((uint32_t)__process2_stack_size__) +#define STACK_ADDR_PWM ((uint32_t)process1_base) +#define STACK_SIZE_PWM (sizeof process1_base) + +#define STACK_ADDR_BLK ((uint32_t)process2_base) +#define STACK_SIZE_BLK (sizeof process2_base) int diff --git a/example-led/sample.ld b/example-led/sample.ld index 42a765d..a9be67f 100644 --- a/example-led/sample.ld +++ b/example-led/sample.ld @@ -1,12 +1,6 @@ /* * ST32F0 memory setup. */ -__main_stack_size__ = 0x0100; /* Idle+Exception handlers */ -__process0_stack_size__ = 0x0100; /* Main program */ -__process1_stack_size__ = 0x0100; /* first thread program */ -__process2_stack_size__ = 0x0100; /* second thread program */ -__process3_stack_size__ = 0x0100; /* third thread program */ - MEMORY { flash0 : org = 0x08000000, len = 4k @@ -87,34 +81,15 @@ SECTIONS KEEP(*(.bss.startup.*)) } > ram - .process_stack : + .stacks (NOLOAD) : { . = ALIGN(8); - __process3_stack_base__ = .; - . += __process3_stack_size__; + *(.main_stack) + *(.process_stack.0) + *(.process_stack.1) + *(.process_stack.2) + *(.process_stack.3) . = ALIGN(8); - __process3_stack_end__ = .; - __process2_stack_base__ = .; - . += __process2_stack_size__; - . = ALIGN(8); - __process2_stack_end__ = .; - __process1_stack_base__ = .; - . += __process1_stack_size__; - . = ALIGN(8); - __process1_stack_end__ = .; - __process0_stack_base__ = .; - . += __process0_stack_size__; - . = ALIGN(8); - __process0_stack_end__ = .; - } > ram - - .main_stack : - { - . = ALIGN(8); - __main_stack_base__ = .; - . += __main_stack_size__; - . = ALIGN(8); - __main_stack_end__ = .; } > ram .data : diff --git a/example-led/sample.ld.m3 b/example-led/sample.ld.m3 index 842ba86..57ddb83 100644 --- a/example-led/sample.ld.m3 +++ b/example-led/sample.ld.m3 @@ -1,12 +1,6 @@ /* * ST32F103 memory setup. */ -__main_stack_size__ = 0x0100; /* Idle+Exception handlers */ -__process0_stack_size__ = 0x0100; /* Main program */ -__process1_stack_size__ = 0x0100; /* first thread program */ -__process2_stack_size__ = 0x0100; /* second thread program */ -__process3_stack_size__ = 0x0100; /* third thread program */ - MEMORY { flash0 : org = 0x08000000, len = 4k @@ -78,34 +72,14 @@ SECTIONS _etext = .; _textdata = _etext; - .process_stack : + .stacks (NOLOAD) : { + *(.main_stack) + *(.process_stack.0) + *(.process_stack.1) + *(.process_stack.2) + *(.process_stack.3) . = ALIGN(8); - __process3_stack_base__ = .; - . += __process3_stack_size__; - . = ALIGN(8); - __process3_stack_end__ = .; - __process2_stack_base__ = .; - . += __process2_stack_size__; - . = ALIGN(8); - __process2_stack_end__ = .; - __process1_stack_base__ = .; - . += __process1_stack_size__; - . = ALIGN(8); - __process1_stack_end__ = .; - __process0_stack_base__ = .; - . += __process0_stack_size__; - . = ALIGN(8); - __process0_stack_end__ = .; - } > ram - - .main_stack : - { - . = ALIGN(8); - __main_stack_base__ = .; - . += __main_stack_size__; - . = ALIGN(8); - __main_stack_end__ = .; } > ram .data :