Определил в icf
Цитата
define exported symbol __NVRAM_page_size__ = 1024;
define exported symbol __ICFEDIT_region_NVRAM_pages__ = 2;
define block NVR with alignment = __NVRAM_page_size__,
size = __NVRAM_page_size__ * __ICFEDIT_region_NVRAM_pages__ { };
"NVRAM" : place at end of ROM_region { block NVR };
define exported symbol __ICFEDIT_region_NVRAM_pages__ = 2;
define block NVR with alignment = __NVRAM_page_size__,
size = __NVRAM_page_size__ * __ICFEDIT_region_NVRAM_pages__ { };
"NVRAM" : place at end of ROM_region { block NVR };
Все работает хорошо, за исключением одного: линковщик не знает, что это read-only регион памяти. В статистике своей относит его к readwrite data.
Код
"NVRAM": 0x800
NVR 0x08003800 0x800 <Block>
NVR uninit 0x08003800 0x800 <Block tail>
- 0x08004000 0x800
.......
Module ro code ro data rw data
------ ------- ------- -------
...................
Gaps 2
Linker created 43 2 560
NVR 0x08003800 0x800 <Block>
NVR uninit 0x08003800 0x800 <Block tail>
- 0x08004000 0x800
.......
Module ro code ro data rw data
------ ------- ------- -------
...................
Gaps 2
Linker created 43 2 560
Как бы на программу не влияет, но для оценки ресурсов нужно производить лишние математические действия...
Есть варианты сказать линкеру, что этот блок - "readonly data"?