SEGGER最新版本的Embedded Studio for ARM配備了STOP技術,該技術由SEGGER設計,用于可靠地防止堆棧溢出。啟用STOP 后,編譯器會在必要時添加對堆棧限制檢查例程的調用,然后再調整堆棧指針。

在SEGGER 高度優化并且基于 Clang的編譯器上,可以輕松地啟動STOP,而且不需要對應用程序代碼進行任何更改,這樣可以防止所有堆棧溢出;如果已防止堆棧溢出,系統可以進入安全狀態并恢復。STOP對規模和速度的影響非常小,它只增加了約2 - 5%的代碼大小和執行時間,通常不會對系統的性能產生重大影響。
SEGGER的創始人Rolf Segger說:“未檢測到的堆棧溢出可能是災難性的,我建議在所有應用中使用STOP。對于任何安全關鍵的應用,我認為它是必不可少的。據我所知,SEGGER是唯一提供這種技術的公司。無論你是軟件工程師、學生還是業余愛好者,我鼓勵你下載并試用Embedded Studio,只需要不到15分鐘的時間,簡單實用;而且用于評估、教育和非商業目的也是免費的。”
堆棧溢出可能導致嵌入式系統中的各種故障,從難以檢測、看似隨機的計算錯誤到嚴重的故障甚至崩潰。STOP工作簡單,保護系統中的所有堆棧。它保護進程棧以及用于中斷的 "main "棧。它可以與任何RTOS一起使用,只要RTOS在上下文切換時更新堆棧限制變量。
該技術目前可用于Thumb-2架構,如Cortex-M4,Cortex-M7,Cortex-A9和Cortex-A15。在 ARMv7M 架構上,STOP 可通過單個項目選項在嵌入式工作室中使用。
Embedded Studio是SEGGER的多平臺IDE(集成開發環境)。它的特點是使用靈活,包含開發人員需要的所有工具和功能,用于專業的嵌入式C和C++編程和開發。它配備了SEGGER高度優化的emRun運行時和emFloat浮點庫,以及SEGGER的智能鏈接器,為資源有限的嵌入式系統專門開發。與基于Clang的高度優化的C/C++ SEGGER編譯器相結合,可以生成極小而高效的程序,使每一個字節都發揮作用。Embedded Studio 可在 Arm、Intel 和 Apple Silicon 上的所有平臺(Linux、macOS 和 Windows)上使用。通過SEGGER的友好許可,Embedded Studio可以免費用于評估,以及用于教育和非商業目的,在代碼大小,功能或使用持續時間方面沒有限制。
更多信息請訪問:
https://www.segger.com/products/development-tools/embedded-studio/technology/stack-overflow-prevention/
