Skip to content

Commit 6c15bab

Browse files
committed
Update memory/stack definitions.
1 parent 6bcc26c commit 6c15bab

File tree

3 files changed

+30
-25
lines changed

3 files changed

+30
-25
lines changed

Scheduler.cpp

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* @file Scheduler.cpp
3-
* @version 1.3
3+
* @version 1.4
44
*
55
* @section License
66
* Copyright (C) 2015-2017, Mikael Patel
@@ -20,32 +20,31 @@
2020
#include <Arduino.h>
2121

2222
// Configuration: SRAM and heap handling
23-
#if defined(TEENSYDUINO) && defined(__MK20DX256__)
23+
#if defined(TEENSYDUINO)
2424
#undef ARDUINO_ARCH_AVR
2525
#define TEENSY_ARCH_ARM
26+
#if defined(__MK20DX256__)
2627
#define RAMEND 0x20008000
27-
28-
#elif defined(TEENSYDUINO) && defined(__MK64FX512__)
29-
#undef ARDUINO_ARCH_AVR
30-
#define TEENSY_ARCH_ARM
28+
#elif defined(__MK64FX512__)
3129
#define RAMEND 0x20020000
32-
33-
#elif defined(TEENSYDUINO) && defined(__MK66FX1M0__)
34-
#undef ARDUINO_ARCH_AVR
35-
#define TEENSY_ARCH_ARM
30+
#elif defined(__MK66FX1M0__)
3631
#define RAMEND 0x20030000
32+
#endif
3733

3834
#elif defined(ARDUINO_ARCH_AVR)
3935
extern int __heap_start, *__brkval;
4036
extern char* __malloc_heap_end;
4137
extern size_t __malloc_margin;
4238

43-
#elif defined(ARDUINO_ARCH_SAM) && !defined(RAMEND)
39+
#elif defined(ARDUINO_ARCH_SAM)
40+
#if !defined(RAMEND)
4441
#define RAMEND 0x20088000
45-
46-
#elif defined(ARDUINO_ARCH_SAMD) && !defined(RAMEND)
42+
#endif
43+
#elif defined(ARDUINO_ARCH_SAMD)
44+
#if !defined(RAMEND)
4745
#define RAMEND 0x20008000
4846
#endif
47+
#endif
4948

5049
// Stack magic pattern
5150
const uint8_t MAGIC = 0xa5;
@@ -107,7 +106,7 @@ bool SchedulerClass::start(func_t taskSetup, func_t taskLoop, size_t stackSize)
107106
// Adjust stack top for next task allocation
108107
s_top += stackSize;
109108

110-
// Fill stack with magic pattern to allow detect of stack depth
109+
// Fill stack with magic pattern to allow detect of stack usage
111110
memset(stack - stackSize, MAGIC, stackSize - sizeof(task_t));
112111

113112
// Initiate task with given functions and stack top

Scheduler.h

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* @file Scheduler.h
3-
* @version 1.3
3+
* @version 1.4
44
*
55
* @section License
66
* Copyright (C) 2015-2017, Mikael Patel
@@ -76,7 +76,7 @@ class SchedulerClass {
7676
/**
7777
* Return minimum remaining stack in bytes for running task.
7878
* The value depends on executed function call depth and interrupt
79-
* service routines during the execution sofar.
79+
* service routines during the execution (so far).
8080
* @return bytes
8181
*/
8282
static size_t stack();
@@ -102,13 +102,24 @@ class SchedulerClass {
102102
const uint8_t* stack; //!< Task stack top.
103103
};
104104

105-
#if defined(TEENSYDUINO) && (defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__))
105+
#if defined(TEENSYDUINO)
106106
/** Default stack size and stack max. */
107107
static const size_t DEFAULT_STACK_SIZE = 512;
108+
#if defined(__MK20DX256__)
109+
/** Teensy 3.2: 64 Kbyte. */
108110
static const size_t STACK_MAX = 16384;
111+
#elif defined(__MK64FX512__)
112+
/** Teensy 3.5: 192 Kbyte. */
113+
static const size_t STACK_MAX = 49152;
114+
#elif defined(__MK66FX1M0__)
115+
/** Teensy 3.6: 256 Kbyte. */
116+
static const size_t STACK_MAX = 65536;
117+
#else
118+
#error "Scheduler.h: Teensy board not supported"
119+
#endif
109120

110121
#elif defined(ARDUINO_ARCH_AVR)
111-
/** Default stack size. */
122+
/** Default stack size. Stack max dynamically checked against heap end. */
112123
static const size_t DEFAULT_STACK_SIZE = 128;
113124

114125
#elif defined(ARDUINO_ARCH_SAM)
@@ -121,13 +132,8 @@ class SchedulerClass {
121132
static const size_t DEFAULT_STACK_SIZE = 512;
122133
static const size_t STACK_MAX = 16384;
123134

124-
#elif defined(ARDUINO_ARCH_ESP8266)
125-
/** Default stack size and stack max. */
126-
static const size_t DEFAULT_STACK_SIZE = 512;
127-
static const size_t STACK_MAX = 32768;
128-
129135
#else
130-
#error "Scheduler.h: board not supported"
136+
#error "Scheduler.h: Arduino board not supported"
131137
#endif
132138

133139
/** Main task. */

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=Simple Scheduler
2-
version=1.2.3
2+
version=1.2.4
33
author=Mikael Patel
44
maintainer=Mikael Patel <[email protected]>
55
sentence=Scheduler for simple multi-tasking.

0 commit comments

Comments
 (0)