Цитата(scifi @ Aug 28 2013, 14:48)

В "старом" яровском линкере (XLINK) можно было сказать линкеру, чтобы размещал в разных кусках памяти, типа так: -Z(CODE)CODE=0x08000000-0x08003FFF, 0x0800C000-0x0807FFFF. И ведь реально работало.
В "новом" линкере (ILINK) я не разбирался, но думаю, что он тоже это умеет (заглядывал в мануал). Попробуйте подправить файл конфигурации линкера:
define region ROM_region = mem:[from 0x08000000 to 0x08003FFF] mem:[from 0x0800C000 to 0x0807FFFF];
Большое спасибо за наводку. Почитал доку на линковщик. Там много чего можно сделать, в том числе и регион с дырой. Я переделал так stm32f4xx_flash.icf :
Код
..........
define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__ = 0x2001FFFF;
define symbol __ICFEDIT_region_CCMRAM_start__ = 0x10000000;
define symbol __ICFEDIT_region_CCMRAM_end__ = 0x1000FFFF;
define symbol __EEPROM_region_ROM_start__ = 0x08004000; /* Начало и конец памяти под эмуляцию EEPROM */
define symbol __EEPROM_region_ROM_end__ = 0x0800BFFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x800;
define symbol __ICFEDIT_size_heap__ = 0x400;
/**** End of ICF editor section. ###ICF###*/
define memory mem with size = 4G;
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to (__EEPROM_region_ROM_start__ - 0x00000001)]
| mem:[from (__EEPROM_region_ROM_end__ + 0x00000001) to __ICFEDIT_region_ROM_end__];
..........
Полёт нормальный. Но только в Sector 0 линковщик совсем немного кода добавил. Всё остальное уже после выделенной EEPROM памяти.
Всем спасибо за ликбезы))))