Цитата(etoja @ Nov 25 2009, 12:39)

Очевидно, что у вас нет опыта использования IAP для разных компиляторов.
Поэтому шумите и пишете обрывки операторов.
А вы напишите полный работающий текст программы IAP для Кейла.
PS: приведенный на сахаре текст IAP для gcc не будет работать в Кейле.
Приведённый в aplication note AN10256 текст не будет работать ни в Кейле, ни в gcc,
а разработан он для компилятора ARM Developer Suite (ADS1.2)
Не путайте функции для работы со встроенной flash и целый программны модуль. Вот код функции для записи во встроенную flash:
#define IAP_LOCATION 0x7ffffff1
typedef void (*IAP)(unsigned long[], unsigned long[]);
#define IAP_CMD_CopyRAMToFlash 51
static unsigned long command[5] = {0,0,0,0,0};
static unsigned long result[3]= {0,0,0};
static IAP iap_entry = (IAP) IAP_LOCATION;
unsigned long IAP_CopyRAMToFlash (unsigned long dst, unsigned long src, unsigned long count)
{
command[0] = IAP_CMD_CopyRAMToFlash;
command[1] = dst;
command[2] = src;
command[3] = count;
command[4] = OSCclk / 1000;
iap_entry(command, result);
return result[0];
}
Что именно скомпилирует RealView (который Вы называете Keil) и не скомпилирует GCC? Другое дело специфичные для компилятора вещи, например запрещение прерываний:
__ARMLIB_disableIRQ(); // Взято из примера на Сахаре (полагаю для GCC)
__disable_irq(); // Для RealView
P.S. давайте воздержимся от предположений по поводу опыта друг друга. Форум не для этого