user3411864
user3411864

Reputation: 644

RAM shortage when converting 8-bit AVR project to STM32

I currently have a working prototype running FreeRTOS and 128x128 dots graphical display. With -O1 optimization it fitted inside a ATmega4809 with 6 KiB RAM

> Program Memory Usage  :   46114 bytes   93,8 % Full 
> Data Memory Usage     :   4789 bytes   77,9 % Full

My new prototype has a 8KiB STM32G030C8 but already FreeRTOS via HAL/CMSIS_V2 did't fit. I turned off all features I did not use and had heap_1 selected like my previous project.

Only with CMSIS_V1 I managed to program a bare FreeRTOS project.

But adding the LCD display code, already compiled to the same issue. I had fonttables with PROGMEM on the AVR project, using const puts them in flash on the STM32 project.

I also have one LCD framebuffer made:

uint8_t buffer[2048];

Does this compiles to 2048 32-bit values?

I'm not even close to moving all my AVR code to STM32 and already out of RAM, I'm really curious how this is possible.

UPDATE: This is FreeRTOS stripped out with only lcd code: enter image description here

arm-none-eabi-size  STM32G030C8-48pin.elf 
   text    data     bss     dec     hex filename
  33136     180    6804   40120    9cb8 STM32G030C8-48pin.elf

So my 2kB buffer is there, but 1,5kB .user_heap_stack?

Doesn't heap_1 of FreeRTOS aready manage heap stack?

Upvotes: 0

Views: 126

Answers (0)

Related Questions