2025-12-10 3:41 AM - last edited on 2025-12-10 3:43 AM by Andrew Neil
Good morning.
Could anyone tell me about this error and how to resolve it.
C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3 .rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: Oscillo_STM32G431CBU.elf section `.bss' will not fit in region `RAM'
C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3 .rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: region `RAM' overflowed by 54928 bytes
I'm using IDE 1.19 to compile the code for a G431CBU
Grateful
Valter Matos
Solved! Go to Solution.
2025-12-10 8:41 AM
Many "medium" sized buffers... it all adds up!
Don't forget that u16 takes 2 bytes and so on...
So you got 2 channels, each with:
uint16_t waveform_raw_adc[512]
uint32_t waveform_display[480]
double fft_amplitude[64];
int32_t fft_frequency[64];
= 3712 bytes / channel
How many "Oscilloscope" do you declare?
2025-12-10 8:43 AM - edited 2025-12-10 8:54 AM
If I'm not wrong Oscilloscope struct is consuming ~8000 bytes :
waveform_raw_adc[]: 512 *2 * 2 = 2,048 bytes
waveform_display[]: 480 *4 * 2 = 3,840 bytes
fft_amplitude[]: 128/2 * 8 * 2 = 1,024 bytes
fft_frequency[]: 128/2 * 8 * 2 = 1,024 bytes
I don't see where the RAM is consuming that extra 54928 bytes!
2025-12-10 9:16 AM
@ValterMatos again, have you examined the map file, and/or used the Build Analyzer?
2025-12-10 10:28 AM
Oscilloscope is declared only once.
I haven't examined the map yet and haven't used the Build Analyzer.
I've already examined all the code and haven't found where there's an increase of 50K in RAM usage.
By my estimates, it wouldn't reach 20K in total.
Thank you.
2025-12-10 10:31 AM
/*
* sprites.c
*
* Created on: 3 maj 2024
* Author: Dominik
*/
#include "sprites.h"
#include "ILI9488.h"
const uint8_t trigRisingIcon[15][9] = {
{0 , 0 , 0 , 0 , WHITE , WHITE , WHITE , WHITE , WHITE},
{0 , 0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0 },
{0 , 0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0 },
{0 , 0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0 },
{0 , 0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0 },
{0 , 0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0 },
{0 , 0 , 0 , WHITE , WHITE , WHITE , 0 , 0 , 0 },
{0 , 0 , WHITE , WHITE , WHITE , WHITE , WHITE , 0 , 0 },
{0 , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , 0 },
{0 , 0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0 },
{0 , 0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0 },
{0 , 0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0 },
{0 , 0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0 },
{0 , 0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0 },
{WHITE , WHITE , WHITE , WHITE , WHITE , 0 , 0 , 0 , 0 }
};
const uint8_t arrowUpDown[15][8] = {
{0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0},
{0 , 0 , WHITE , WHITE , WHITE , 0 , 0 , 0},
{0 , WHITE , WHITE , WHITE , WHITE , WHITE , 0 , 0},
{WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , 0},
{0 , 0 , WHITE , WHITE , WHITE , 0 , 0 , 0},
{0 , 0 , WHITE , WHITE , WHITE , 0 , 0 , 0},
{0 , 0 , WHITE , WHITE , WHITE , 0 , 0 , 0},
{0 , 0 , WHITE , WHITE , WHITE , 0 , 0 , 0},
{0 , 0 , WHITE , WHITE , WHITE , 0 , 0 , 0},
{0 , 0 , WHITE , WHITE , WHITE , 0 , 0 , 0},
{0 , 0 , WHITE , WHITE , WHITE , 0 , 0 , 0},
{WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , 0},
{0 , WHITE , WHITE , WHITE , WHITE , WHITE , 0 , 0},
{0 , 0 , WHITE , WHITE , WHITE , 0 , 0 , 0},
{0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0}
};
const uint8_t arrowLeftRight[7][15] = {
{0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , WHITE , 0 , 0 , 0},
{0 , 0 , WHITE , WHITE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , WHITE , WHITE , 0 , 0},
{0 , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , 0},
{WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE},
{0 , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , WHITE , 0},
{0 , 0 , WHITE , WHITE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , WHITE , WHITE , 0 , 0},
{0 , 0 , 0 , WHITE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , WHITE , 0 , 0 , 0}
};
2025-12-10 10:32 AM
This architecture consumes little RAM.
2025-12-10 11:24 AM - edited 2025-12-10 11:50 AM
@ValterMatos wrote:
/* Memories definition */
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K
}
You've defined the 'RAM' region to be only 32K ?
Edit: See post below by @KnarfB - 32K is correct.
2025-12-10 11:41 AM
> You've defined the 'RAM' region to be only 32K ?
STM32G431CBU:
|
make (only) 32K in total.
hth
KnarfB
2025-12-10 11:46 AM
The best place to look for ram usage is in your .map file.
2025-12-10 11:48 AM - edited 2025-12-10 11:54 AM
@KnarfB wrote:make (only) 32K in total.
So it is!
I misread the Ordering Info earlier.
I've edited earlier posts with corrections.