With STOP enabled, the compiler adds a call to a stack limit-check routine wherever necessary, before adjusting the stack pointer.
The STOP option for the SEGGER Compiler can be easily switched on, without any change to application code. This way, all stack overflows are prevented. If a stack overflow has been prevented, the system can enter a safe state and recover.
STOP, according to SEGGER, has a surprisingly low impact on size and speed, adding only about 2 - 5% to code size and execution time, which typically does not have a significant impact on the performance of the system.
“An undetected stack overflow can be catastrophic,” said Rolf Segger, founder of SEGGER. “While I recommend the use of STOP for all applications, for any safety critical application, I consider it essential. To the best of my knowledge, SEGGER is the only company offering such technology.”
A stack overflow can cause all kinds of failures in an embedded system, from hard-to-detect, seemingly random miscomputations to severe malfunctions or even crashes.
STOP protects the process stack, as well as the "main" stack used for interrupts. It can be used with any RTOS, provided the RTOS updates the stack-limit variable on a context switch.
The technology is currently available for Thumb-2 architectures such as Cortex-M4, Cortex-M7, Cortex-A9, and Cortex-A15.
On ARMv7M architectures, STOP is ready to use in Embedded Studio with a single project option switch.