diff --git a/os/ports/GCC/ARMCMx/chcore_v6m.h b/os/ports/GCC/ARMCMx/chcore_v6m.h index 644f73d79..84005f162 100644 --- a/os/ports/GCC/ARMCMx/chcore_v6m.h +++ b/os/ports/GCC/ARMCMx/chcore_v6m.h @@ -66,15 +66,13 @@ * @brief Per-thread stack overhead for interrupts servicing. * @details This constant is used in the calculation of the correct working * area size. - * This value can be zero on those architecture where there is a - * separate interrupt stack and the stack space between @p intctx and - * @p extctx is known to be zero. - * @note In this port it is conservatively set to 16 because the function - * @p chSchDoReschedule() can have a stack frame, especially with - * compiler optimizations disabled. + * @note In this port this value is conservatively set to 32 because the + * function @p chSchDoReschedule() can have a stack frame, especially + * with compiler optimizations disabled. The value can be reduced + * when compiler optimizations are enabled. */ #if !defined(PORT_INT_REQUIRED_STACK) -#define PORT_INT_REQUIRED_STACK 16 +#define PORT_INT_REQUIRED_STACK 32 #endif /** diff --git a/os/ports/GCC/ARMCMx/chcore_v7m.h b/os/ports/GCC/ARMCMx/chcore_v7m.h index 407b6b571..10edcc45b 100644 --- a/os/ports/GCC/ARMCMx/chcore_v7m.h +++ b/os/ports/GCC/ARMCMx/chcore_v7m.h @@ -63,15 +63,13 @@ * @brief Per-thread stack overhead for interrupts servicing. * @details This constant is used in the calculation of the correct working * area size. - * This value can be zero on those architecture where there is a - * separate interrupt stack and the stack space between @p intctx and - * @p extctx is known to be zero. - * @note In this port it is conservatively set to 16 because the function - * @p chSchDoReschedule() can have a stack frame, especially with - * compiler optimizations disabled. + * @note In this port this value is conservatively set to 32 because the + * function @p chSchDoReschedule() can have a stack frame, especially + * with compiler optimizations disabled. The value can be reduced + * when compiler optimizations are enabled. */ #if !defined(PORT_INT_REQUIRED_STACK) -#define PORT_INT_REQUIRED_STACK 16 +#define PORT_INT_REQUIRED_STACK 32 #endif /** diff --git a/os/ports/IAR/ARMCMx/chcore_v6m.h b/os/ports/IAR/ARMCMx/chcore_v6m.h index 9087f3dd8..8a2ef48e5 100644 --- a/os/ports/IAR/ARMCMx/chcore_v6m.h +++ b/os/ports/IAR/ARMCMx/chcore_v6m.h @@ -66,15 +66,13 @@ * @brief Per-thread stack overhead for interrupts servicing. * @details This constant is used in the calculation of the correct working * area size. - * This value can be zero on those architecture where there is a - * separate interrupt stack and the stack space between @p intctx and - * @p extctx is known to be zero. - * @note In this port it is conservatively set to 16 because the function - * @p chSchDoReschedule() can have a stack frame, especially with - * compiler optimizations disabled. + * @note In this port this value is conservatively set to 32 because the + * function @p chSchDoReschedule() can have a stack frame, especially + * with compiler optimizations disabled. The value can be reduced + * when compiler optimizations are enabled. */ #if !defined(PORT_INT_REQUIRED_STACK) -#define PORT_INT_REQUIRED_STACK 16 +#define PORT_INT_REQUIRED_STACK 32 #endif /** diff --git a/os/ports/IAR/ARMCMx/chcore_v7m.h b/os/ports/IAR/ARMCMx/chcore_v7m.h index 8615eaab6..b46ef22f0 100644 --- a/os/ports/IAR/ARMCMx/chcore_v7m.h +++ b/os/ports/IAR/ARMCMx/chcore_v7m.h @@ -63,15 +63,13 @@ * @brief Per-thread stack overhead for interrupts servicing. * @details This constant is used in the calculation of the correct working * area size. - * This value can be zero on those architecture where there is a - * separate interrupt stack and the stack space between @p intctx and - * @p extctx is known to be zero. - * @note In this port it is conservatively set to 16 because the function - * @p chSchDoReschedule() can have a stack frame, especially with - * compiler optimizations disabled. + * @note In this port this value is conservatively set to 32 because the + * function @p chSchDoReschedule() can have a stack frame, especially + * with compiler optimizations disabled. The value can be reduced + * when compiler optimizations are enabled. */ #if !defined(PORT_INT_REQUIRED_STACK) -#define PORT_INT_REQUIRED_STACK 16 +#define PORT_INT_REQUIRED_STACK 32 #endif /** diff --git a/os/ports/RVCT/ARMCMx/chcore_v6m.h b/os/ports/RVCT/ARMCMx/chcore_v6m.h index 89ab92640..5de576a21 100644 --- a/os/ports/RVCT/ARMCMx/chcore_v6m.h +++ b/os/ports/RVCT/ARMCMx/chcore_v6m.h @@ -66,15 +66,13 @@ * @brief Per-thread stack overhead for interrupts servicing. * @details This constant is used in the calculation of the correct working * area size. - * This value can be zero on those architecture where there is a - * separate interrupt stack and the stack space between @p intctx and - * @p extctx is known to be zero. - * @note In this port it is conservatively set to 16 because the function - * @p chSchDoReschedule() can have a stack frame, especially with - * compiler optimizations disabled. + * @note In this port this value is conservatively set to 32 because the + * function @p chSchDoReschedule() can have a stack frame, especially + * with compiler optimizations disabled. The value can be reduced + * when compiler optimizations are enabled. */ #if !defined(PORT_INT_REQUIRED_STACK) -#define PORT_INT_REQUIRED_STACK 16 +#define PORT_INT_REQUIRED_STACK 32 #endif /** diff --git a/os/ports/RVCT/ARMCMx/chcore_v7m.h b/os/ports/RVCT/ARMCMx/chcore_v7m.h index b568d5e5a..98bbb6358 100644 --- a/os/ports/RVCT/ARMCMx/chcore_v7m.h +++ b/os/ports/RVCT/ARMCMx/chcore_v7m.h @@ -63,15 +63,13 @@ * @brief Per-thread stack overhead for interrupts servicing. * @details This constant is used in the calculation of the correct working * area size. - * This value can be zero on those architecture where there is a - * separate interrupt stack and the stack space between @p intctx and - * @p extctx is known to be zero. - * @note In this port it is conservatively set to 16 because the function - * @p chSchDoReschedule() can have a stack frame, especially with - * compiler optimizations disabled. + * @note In this port this value is conservatively set to 32 because the + * function @p chSchDoReschedule() can have a stack frame, especially + * with compiler optimizations disabled. The value can be reduced + * when compiler optimizations are enabled. */ #if !defined(PORT_INT_REQUIRED_STACK) -#define PORT_INT_REQUIRED_STACK 16 +#define PORT_INT_REQUIRED_STACK 32 #endif /** diff --git a/readme.txt b/readme.txt index 33cfe3cdb..28a3bd26d 100644 --- a/readme.txt +++ b/readme.txt @@ -135,6 +135,11 @@ lwIP demos. - NEW: lwIP related code is not centralized into a single place, no need to duplicate the code in each application or demo. +- CHANGE: The PORT_INT_REQUIRED_STACK parameter for the Cortex-Mx ports has + been increased to 32 from 16 because the stack frame sizes are increased + when compiling with optimizations disabled, which is common during + debugging. In order to save RAM trim back this value when compilung with + optimizations enabled. - CHANGE: Macros icuGetWidthI() and icuGetPeriodI() renamed to icuGetWidth() and icuGetPeriod(). - CHANGE: Renamed Ethernet driver in AT91 HAL ETHD1.