Loading...
 

Zephyr project on STM32

   Zephyr Workbench, a VSCode extension to manage Zephyr on STM32.
It enables users to easily create, develop, and debug Zephyr applications.
Main features:
  • Install host dependencies.
  • Import toolchain and SDK.
  • Create, configure, build and manage apps.
  • Debug STM32.
You can directly download it from the VSCode marketplace
For more details, visit the Zephyr Workbench

System Workbench for STM32


How to adjust stack and heap

I am using AC6 for project running STM32F401RE (Nucleo) with FatFs and USB_HOST.

Right now I am facing problem with f_open() pointer corruption; I believe the pointer corruption is caused by in-appropriate stack and heap size.

I would like to know how to adjust the stack and heap.

Appreciate anyone help.

Regards,

Tunisia

Hello,

You can increase minimal heap and stack by modifying _Min_Heap_Size and _Min_Stack_Size figuring within “STM32F401****_FLASH.ld”

_Min_Heap_Size = 0x200;; /* required amount of heap */
_Min_Stack_Size = 0x400;; /* required amount of stack */

TIP: These values are only to force linker to generate an error if the RAM usage exceeds the real RAM size.

If this does not work for you (99% of cases :-D), ensure that you have syscalls.c in your project.
If you cannot find this file in your project:
you can borrow it from “...\STM32Cube_FW_F4_V1.10.0\Projects\STM32F401RE-Nucleo\Examples\UART\UART_Printf\SW4STM32”
and include this file in your project. After that you have to remove “-specs=nosys.specs” from Project Properties > C/C++ Build > Settings > Tool Settings > MCU GCC Linker > Miscellaneous > Linker flags

Explanation: the syscalls.c contains the implementation of _sbrk() used by malloc and manage heap and stack collision ........
the usage of nosys.specs is enough (we do not need syscalls.c) if we do not use printf or dynamic memory allocation


For my opinion, you should beware of syscalls.c _sbrk() evil implementation (see also hereQuestion).

Note also, that your linker script modifications might be overwritten every time when you use CubeMX code generation (see also st.comQuestion).



@tarek bouchkati really explanation. thanks a lot.

 

Newest Forum Posts

  1. Last day: drone bonus by Danielrug, 2025-04-19 16:55
  2. SPI on Nucleo_STMH533RE by higginsa1, 2025-03-25 07:37
  3. SPI on Nucleo_STMH533RE by royjamil, 2025-03-23 11:31
  4. SPI on Nucleo_STMH533RE by higginsa1, 2025-03-23 09:33
  5. Configuring DMA for ADC in SW? by sam.hodgson, 2025-03-04 12:58
  6. Insightful Perspectives on This Subject by davidsycle, 2025-03-04 05:45
  7. Build a project in "release" mode by info@creosrl.it, 2025-02-20 18:12
  8. Build a project in "release" mode by info@creosrl.it, 2025-02-20 17:05
  9. Build a project in "release" mode by tang, 2025-02-20 10:36
  10. Build a project in "release" mode by info@creosrl.it, 2025-02-19 17:35

Last-Modified Blogs