Ответ в теме: Программирование МК STM32

 

 

 

#21348
Cheerful_Wind
Участник

Здравствуйте!
Не получается использование схемы распределения памяти heap_5 в IAR_Embedded_Workbench_for_ARM_8.40.
По тексту урока 131 можно представить следующее:
#if defined ( __ICCARM__ )
__no_init static uint8_t heap_sram1[32*1024] @ “.user_heap_stack”;
#else
static __attribute__((used,section(“.user_heap_stack”))) uint8_t heap_sram1[32*1024];
#endif
uint8_t heap_sram2[32*1024];
_____________________________________
Не трудно поместить блок .user_heap_stack рядом с системным стеком и кучей после .bss:
.bss zero 0x2000’f295 0x1 tcp.o [1]
.bss zero 0x2000’f296 0x1 XShttio.o [2]
– 0x2000’f297 0xf0af

“P2”, part 3 of 3: 0xe000
.user_heap_stack uninit 0x2000’f298 0x8000 main.o [1]
CSTACK 0x2001’7298 0x4000 <Block>
CSTACK uninit 0x2001’7298 0x4000 <Block tail>
HEAP 0x2001’b298 0x2000 <Block>
HEAP uninit 0x2001’b298 0x2000 <Block tail>
– 0x2001’d298 0xe000
_____________________________________
heap_sram1 0x2000’f298 0x8000 Data Lc main.o [1]
heap_sram2 0x2000’01e8 0x8000 Data Gb main.o [1]
_____________________________________
Путем редактирования файла *.isf у меня не получилось разместить блок перед секцией .bss.
Я не могу сказать, что эта неделя прошла не плодотворно с точки зрения вопросов распределения памяти, но пример так и не вышел из vPortDefineHeapRegions( xHeapRegions ). Точнее из heap_5.c:
/* Check blocks are passed in with increasing start addresses. */
configASSERT( xAddress > ( size_t ) pxEnd );
______________________________________
Андрей Курниц в https://www.kit-e.ru/articles/micro/2012_11_93.php заканчивает повествование heap_4.
Буду очень признателен, если кто-нибудь подробно разжует данный фрагмент урока!