Skip to content

Commit

Permalink
Update memory/stack definitions.
Browse files Browse the repository at this point in the history
  • Loading branch information
mikaelpatel committed Feb 6, 2017
1 parent 6bcc26c commit 6c15bab
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 25 deletions.
27 changes: 13 additions & 14 deletions Scheduler.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/**
* @file Scheduler.cpp
* @version 1.3
* @version 1.4
*
* @section License
* Copyright (C) 2015-2017, Mikael Patel
Expand All @@ -20,32 +20,31 @@
#include <Arduino.h>

// Configuration: SRAM and heap handling
#if defined(TEENSYDUINO) && defined(__MK20DX256__)
#if defined(TEENSYDUINO)
#undef ARDUINO_ARCH_AVR
#define TEENSY_ARCH_ARM
#if defined(__MK20DX256__)
#define RAMEND 0x20008000

#elif defined(TEENSYDUINO) && defined(__MK64FX512__)
#undef ARDUINO_ARCH_AVR
#define TEENSY_ARCH_ARM
#elif defined(__MK64FX512__)
#define RAMEND 0x20020000

#elif defined(TEENSYDUINO) && defined(__MK66FX1M0__)
#undef ARDUINO_ARCH_AVR
#define TEENSY_ARCH_ARM
#elif defined(__MK66FX1M0__)
#define RAMEND 0x20030000
#endif

#elif defined(ARDUINO_ARCH_AVR)
extern int __heap_start, *__brkval;
extern char* __malloc_heap_end;
extern size_t __malloc_margin;

#elif defined(ARDUINO_ARCH_SAM) && !defined(RAMEND)
#elif defined(ARDUINO_ARCH_SAM)
#if !defined(RAMEND)
#define RAMEND 0x20088000

#elif defined(ARDUINO_ARCH_SAMD) && !defined(RAMEND)
#endif
#elif defined(ARDUINO_ARCH_SAMD)
#if !defined(RAMEND)
#define RAMEND 0x20008000
#endif
#endif

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

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

// Initiate task with given functions and stack top
Expand Down
26 changes: 16 additions & 10 deletions Scheduler.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/**
* @file Scheduler.h
* @version 1.3
* @version 1.4
*
* @section License
* Copyright (C) 2015-2017, Mikael Patel
Expand Down Expand Up @@ -76,7 +76,7 @@ class SchedulerClass {
/**
* Return minimum remaining stack in bytes for running task.
* The value depends on executed function call depth and interrupt
* service routines during the execution sofar.
* service routines during the execution (so far).
* @return bytes
*/
static size_t stack();
Expand All @@ -102,13 +102,24 @@ class SchedulerClass {
const uint8_t* stack; //!< Task stack top.
};

#if defined(TEENSYDUINO) && (defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__))
#if defined(TEENSYDUINO)
/** Default stack size and stack max. */
static const size_t DEFAULT_STACK_SIZE = 512;
#if defined(__MK20DX256__)
/** Teensy 3.2: 64 Kbyte. */
static const size_t STACK_MAX = 16384;
#elif defined(__MK64FX512__)
/** Teensy 3.5: 192 Kbyte. */
static const size_t STACK_MAX = 49152;
#elif defined(__MK66FX1M0__)
/** Teensy 3.6: 256 Kbyte. */
static const size_t STACK_MAX = 65536;
#else
#error "Scheduler.h: Teensy board not supported"
#endif

#elif defined(ARDUINO_ARCH_AVR)
/** Default stack size. */
/** Default stack size. Stack max dynamically checked against heap end. */
static const size_t DEFAULT_STACK_SIZE = 128;

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

#elif defined(ARDUINO_ARCH_ESP8266)
/** Default stack size and stack max. */
static const size_t DEFAULT_STACK_SIZE = 512;
static const size_t STACK_MAX = 32768;

#else
#error "Scheduler.h: board not supported"
#error "Scheduler.h: Arduino board not supported"
#endif

/** Main task. */
Expand Down
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=Simple Scheduler
version=1.2.3
version=1.2.4
author=Mikael Patel
maintainer=Mikael Patel <[email protected]>
sentence=Scheduler for simple multi-tasking.
Expand Down

0 comments on commit 6c15bab

Please sign in to comment.