И ещё. Почему при указании в *.icf файле строки, например:
Код
define symbol __ICFEDIT_region_ROM_start__ = 0x00001100;
всё-равно заполняет область 0x100...0xFFF кодом? В map-файле он явно написал:
Код
"A1": place at 0x00001000 { ro section .intvec };
"P1": place in [from 0x00001100 to 0x0003ffff] { ro };
"P2": place in [from 0x10000000 to 0x10007fff] { rw, block CSTACK, block HEAP };
Section Kind Address Size Object
------- ---- ------- ---- ------
"A1": 0xc4
.intvec ro code 0x00001000 0xc4 startup_LPC17xx.o [1]
- 0x000010c4 0xc4
"P1": 0x675c
.text ro code 0x00001100 0x2050 blablabla.o [1]
...
Позиции в области 0x100...0xFFF нигде в map файле не встречаются. Если же в свойствах проекта указать заполнение нулями этой области, тогда да, там чисто, map-ы не отличаются, а код разумно вырастает на 4КБ. Правда, ни векторы, ни код всё-равно линкуются не туда. Где что не так?
P.S. С этим разобрался. Виноват IAR. hex-файл генерит правильно, а в бинарнике отрезает младшую часть неиспользуемых адресов *WALL* Только сильно легче не стало. С ремап-ом всё-равно не запускается код. Неужели никто не делал?
P.P.S. Похоже, догадываюсь, почему ремап не работает. Кто подскажет, чем заменить в icf-файле ранее использованную в xcl-файле директиву типа -KINTVEC=05000,1 ? Подобное позволяло иметь копию векторов прерываний по адресу 0x5000.