This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

memory allocation advice needed

Hi,
I have a system profile structure (set of system properties), saved in a serial dataflash.
Size of a profile is about 16K.
At power-up I need to extract from this profile another structure - slave profile (6K),
and send it to the slave microcontroller over CAN.
In order to do that at a certain point I need to initialize both structures in ram.
And this is the only time when these structures are used.

The question is - what is the optimum way to allocate memory for these structures ?
I am using STM32F107 with 64K of ram.
If I initialize structures locally, in a 'parsing / slave initializing' function,
I need to assign additional 22K to the stack, and I loose them for the application.
By initializing these structures globally I also loose 22K of ram.

Would really appreciate considerations on this subject.

Gennady

Parents
  • I need to assign additional 22K to the stack, and I loose them for the application.
    Not exactly. If other parts of your application use the stack extensively, then you don't loose it.

    I can use part of this stack in other parts, but definitely not that much.
    And significant part of this application is a communication with multiple slaves / ethernet, so i need quite a few global buffers placed in ram.
    And again, the only purpose for placing this structures in ram is parsing structure.
    I really would like to avoid dynamic memory allocation, so I can try some other way to share memory.

Reply
  • I need to assign additional 22K to the stack, and I loose them for the application.
    Not exactly. If other parts of your application use the stack extensively, then you don't loose it.

    I can use part of this stack in other parts, but definitely not that much.
    And significant part of this application is a communication with multiple slaves / ethernet, so i need quite a few global buffers placed in ram.
    And again, the only purpose for placing this structures in ram is parsing structure.
    I really would like to avoid dynamic memory allocation, so I can try some other way to share memory.

Children
No data