Цитата
1. Почему отъедается столько памяти?
размеры стека и кучи определены в
Код
define symbol __ICFEDIT_size_cstack__ = 0x2000;
define symbol __ICFEDIT_size_heap__ = 0x200;
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
все остальное - статические переменные, созданные в программе
Цитата
2. Я не использую контроллер NAND flash, как можно добавить 4 кБ озу в общее пользование и как это посмотреть в файле линкера.
Код
define symbol __region_NAND_RAM_start__ = 0x20100000;
define symbol __region_NAND_RAM_end__ = 0x2010107F;
define region NAND_RAM_region = mem:[from __region_NAND_RAM_start__ to __region_NAND_RAM_end__];
Но определять какие секции должны лечь в этот регион надо в .icf самому.
Можно, например, перенести туда из RAM1_region стек и кучу:
place in NAND_RAM_region { block HEAP, block CSTACK };
или какие-то крупные объекты, которые легко выделить в отдельную секцию через #pragma location = "NAND_RAM_section"
place in NAND_RAM_region { section NAND_RAM_section };
Именно в .map и нужно смотреть на что расходуется память.