2020-06-18 02:08 PM
The STM32H743 has various ram blocks available as shown below:
DTCMRAM - 128kB
ITCMRAM - 64kB
RAM_D1 - 512kB
RAM_D2 - 288kB
RAM_D3 - 64kB
1) Is it possible to combining (or a subset) of these ram block and use them as one big ram?
2) Alternatively is it possible to place particular memory in a particular ram block? For example allocating a RAM_D3 to a static byte array buffer?
Solved! Go to Solution.
2020-06-18 02:43 PM
Seem to recall some are contiguous, or have alternate mappings which are. Doesn't the RM an DS cover this?
Usually you manage data placement via scatter file or linker script, depending on tools.
Some memories have specific uses and connectivity. Check the Bus Matrix diagrams to confirm things will blend..
For dynamic memory you could presumably describe the memory arena to the allocator, starting as the available blocks, and then allocate/free
Have specialized pools, based on use/interaction expectations, with say DMA, screen buffer, etc.
Make sure you enable the memory clocks early, in the Reset Handler
Use tools that do the unpacking seamlessly. In GNU/GCC you're going to have to execute the expectations created in the linker script with your own code in startup.s
2020-06-18 02:43 PM
Seem to recall some are contiguous, or have alternate mappings which are. Doesn't the RM an DS cover this?
Usually you manage data placement via scatter file or linker script, depending on tools.
Some memories have specific uses and connectivity. Check the Bus Matrix diagrams to confirm things will blend..
For dynamic memory you could presumably describe the memory arena to the allocator, starting as the available blocks, and then allocate/free
Have specialized pools, based on use/interaction expectations, with say DMA, screen buffer, etc.
Make sure you enable the memory clocks early, in the Reset Handler
Use tools that do the unpacking seamlessly. In GNU/GCC you're going to have to execute the expectations created in the linker script with your own code in startup.s