Цитата
Хип и стек - вообще-то не одно и то же, скорее даже совершенно параллельные вещи, так что проверьте ещё и стек
Понимаю, в стек сохраняются содержимое регистров , регистра указателя, режим ядра.
В heap выделяется память для malloc. Или я что то не правильно понимаю?
Вот так настроено в скрипте, сколько нужно для того чтобы работал sprintf?
C_STACK_SIZE = 20000;
IRQ_STACK_SIZE = 10000;
FIQ_STACK_SIZE = 10;
SVC_STACK_SIZE = 10;
ABT_STACK_SIZE = 10;
UND_STACK_SIZE = 10;
HEAP_SIZE = 5000;
heap Расположен после стека, может наооборот сделать, как правильнее?
Код
.stack : {
__stack_start__ = .;
. = ALIGN(4);
. += IRQ_STACK_SIZE;
. = ALIGN (4);
__irq_stack_top__ = .;
. = ALIGN(4);
. += FIQ_STACK_SIZE;
. = ALIGN (4);
__fiq_stack_top__ = .;
. = ALIGN(4);
. += SVC_STACK_SIZE;
. = ALIGN (4);
__svc_stack_top__ = .;
. = ALIGN(4);
. += ABT_STACK_SIZE;
. = ALIGN (4);
__abt_stack_top__ = .;
. = ALIGN(4);
. += UND_STACK_SIZE;
. = ALIGN (4);
__und_stack_top__ = .;
. = ALIGN(4);
. += C_STACK_SIZE;
. = ALIGN (4);
__c_stack_top__ = .;
. = ALIGN(4);
__stack_end__ = .;
. = ALIGN(4);
} >RAM
. = ALIGN(8);
_end = .;
. = ALIGN(4);
__end = .;
. = ALIGN(4);
PROVIDE(end = .);
. = ALIGN(8);
.heap : {
_heap = .;
. = ALIGN(4);
. = HEAP_SIZE;
. = ALIGN(4);
_eheap = .;
. = ALIGN(4);
}>RAM