In the linker .icf file, I want to define a symbol to be the end of a block. For example:
define region CCMRAM = [0x10000000 size 0x10000];
define block stack with size = __STACKSIZE__, alignment = 8, readwrite access { };
place at end of CCMRAM { block heap, block stack };
define symbol _estack = end of stack; <- this doesn't work. What is the proper syntax for determining the start or end of a region / block?
Also, where is _estack referenced? I looked and in the .map file it says "Linker created".
A suggestion - in "Placing at the end of a range" description, think about adding something that the placement is done at the end starting with the first item in the list i.e. if the list is:
place at end of RAM { block heap, block stack };
it will be placed with block heap at the end and then just before it, block stack. In other words, stack will have a lower address than heap. So, you really want:
place at end of RAM { block stack, block heap};
Once you know this, it is kind of obvious but, I got it wrong the first go around.
define region CCMRAM = [0x10000000 size 0x10000];
define block stack with size = __STACKSIZE__, alignment = 8, readwrite access { };
place at end of CCMRAM { block heap, block stack };
define symbol _estack = end of stack; <- this doesn't work. What is the proper syntax for determining the start or end of a region / block?
Also, where is _estack referenced? I looked and in the .map file it says "Linker created".
A suggestion - in "Placing at the end of a range" description, think about adding something that the placement is done at the end starting with the first item in the list i.e. if the list is:
place at end of RAM { block heap, block stack };
it will be placed with block heap at the end and then just before it, block stack. In other words, stack will have a lower address than heap. So, you really want:
place at end of RAM { block stack, block heap};
Once you know this, it is kind of obvious but, I got it wrong the first go around.