Main Site Documentation

Limits on End User Application Size?


#1

Ok, going to run the risk of sounding a little silly here.

End User Applications, and the limits on them are very vague.

The Specs on the Cerberus for example:

[ul]User Available FlashTotal Flash memory available for user applications 384 KB
User Available RAM 104 KB[/ul]

So what is the actual user Limit? and what should users comfortably aim for as a recommended application size for the given memory used?

How many other options are there and how would one set out going about using these other options (EG: SDRam)

If this was all explained in a detailed document I would love to know about but I have been unable to find specifics.

All the Best

Chris


#2

Flash memory is where the application (binaries) are stored.
RAM is the available memory your application can use at runtime.


#3

Thanks Reinhard,

Do you know if there is a recommended limit, say 10% free space as a working area for the microframework? Microsoft typically doesn’t like to see storage issues and likes a small amount of free space.

Does the same apply to Micro’s?

Thanks

All the best

Chris


#4

I am searching very hard for a solution, my application is over 1Mb, nearly 700MB over size.

All the best

Chris


#5

Does your application contains a lot of resource: Bitmap, HTML Pages, …
Then you could put them on a SPI Flash chip or an SD card and load them from there.
1MByte of code would be a lot of stuff.

Edit:
And I would say that you can use the Flash Memory up to the last byte.
After deployment, there should nothing be added to it.
For RAM, that’s hard to say.
I had out of memory exceptions on my G120 when using only about 70% of the available RAM. This can happen due to memory fragmentation when allocating a larger block of memory.
But if you allocate all larger resources/objects right after startup and tore them in static fields, then you should be ok, with less available RAM.


#6

@ ChrisO - That sounds like a lot of code unless you are using a lot of resources or hardcoding some massive lookup tables. You can use this thread to benchmark your application length against what others are doing https://www.ghielectronics.com/community/forum/topic?id=15270

I’d recommend going with the G120/Cobra2 or G400/Raptor if you really need all that flash/RAM. They have plenty and you can stop worrying about it and get on with creating something awesome.


#7

@ Hagstar, @ Reinhard

Yes lots of code. Just some I am using : https://www.ghielectronics.com/community/codeshare/entry/919

I have thinned this down some but am still getting issues.

Am in the process of entirely re-coding my application due to limitations.

Will Keep you Posted.

All the best

Chris


#8

Ahhh. The penny drops. Using the G120 isn’t going to work. You could use a compiler directive to trim out certain bits. That’s the #IF statement if you’ve not used it before. That way you can just use a simple statement at the start to enable or disable sections of code.


#9

don’t forget that there is a size limit on each assembly.


#10

@ ChrisO is the size for the debug assembly or the release assembly?

Edit: Debug mode assemblies are bigger btw.