SRAM overflow - compile errors


I have an issue that prevents me compiling. I’m using the vision sensor and the drivetrain, if I config drive controls on the controller then the code won’t compile, I get the following error. Even with no blocks in the program (just the when started).

unix build for platform vexiq
CXX src/main.cpp
LINK build/CheeseOnion.elf
arm-none-eabi-ld: build/CheeseOnion.elf section .heap' will not fit in region SRAM’
arm-none-eabi-ld: region `SRAM’ overflowed by 4 bytes
make: *** [build/CheeseOnion.elf] Error 1
make process closed with exit code : 2

It seems I might’ve hit a limit as I can remove devices but then as I soon add code blocks the error comes back. Does anyone know what the limits are or how to adjust them?


yes, you ran out of available RAM on the IQ. Do you have any large arrays ? More than one vision sensor ?

1 Like

Thanks for your reply, no arrays and only one vision sensor.

Hm. and you are on the latest version of IQ blocks ? Perhaps send me the project and I will take a look and see what’s using all the memory.

1 Like

Thanks, Here it is

OutOfMemory.iqblocks (9.7 KB)

ok, I need to talk to the team on Monday, didn’t realize we were so tight on memory for a fully configured robot. For now all I can suggest is to remove the vision sensor or one of the motors, I’m very surprised someone didn’t run into this issue before.


Thanks. I’ll try porting some old RobotC code we have for Gryo turns and see if I can get the same result without using the built in functions (shame as they are great for the beginner kids to use)

also, make sure you are using V1.0.9, and perhaps reconfigure the vision sensor, I see blocks is generating code for vision signatures that are not set (which uses memory), that was fixed as far as I remember in 1.0.9.


Thanks, I’m using Version

I have seen something strange. I can create the Vision device and then my own drive blocks (same config robot as I sent you). It all complies, downloads and runs. When I revisit the “config” for the vision sensor to update the color profile name and value then I get the Out of Memory error (not adding any additional Signals).


Any update or other suggested workarounds (apart from removing devices) on this issue?


Not much we can do in the short term, it’s our mistake for not realizing that memory use was at a critical level, most testing goes into making sure all examples work correctly, and most of those are aimed at the 4 motor clawbot build. We will have to do another round of optimizing the underlying SDK that IQ blocks is using and free up some more memory from unused features, then release that in a future update to VEXcode.


Thanks. Cheers for all your help.