QUOTE (EXeGLuMATOR @ May 24 2012, 13:20)

Т.е. получается, что #define VECTORS_REMAP_AREA 0x10000000 // start of SRAM будет выглядеть как #define VECTORS_REMAP_AREA 0x10000180
Нет, вы не поняли - первые 512 байт ОЗУ отображаются на адреса начиная с 0. Поэтому обращаясь к векторам по адресу 0, 4, 8... проц фактически обращается в ОЗУ по адресам 0x10000000, 0x10000004, 0x10000008 .... И изменить это невозможно. VECTORS_REMAP_AREA
должна начинаться с 0x10000000, ни байтом больше, ни байтом меньше.
Боюсь вас разочаровывать, но, похоже вам придется либо отказаться от набортного USB-драйвера, либо от обновлений, либо от еще 292-8 = 284 байтов в области загрузчика, прерываний загрузчика и делать так называемые "трамплины".
Или искать, куда потерялся VTOR.
QUOTE (Сергей Борщ @ May 24 2012, 13:48)

Или искать, куда потерялся VTOR.
"Легенда меняется. Вы- нищий" (с)"Чокнутые".
Оказывается у меня старательно хранился мануал версии 0.1 от 2009года. В свежем версии 4 от 2011 года VTOR есть. Сейчас пообедаю и напишу, как сделать через него.
Как вариант:
CODE
#define APPLICATION_IMAGE_START 0x00002000
typedef struct
{
typedef void( *handler )( void );
uint32_t MSP_init;
handler Reset_vector;
handler Core_handler[14];
handler MCU_handler[57];
} vectors_t;
vectors_t const * const pApp_vectors = (vectors_t const * const)APPLICATION_IMAGE_START;
// activate application's vectors table
SCB->VTOR = (uintptr_t)pApp_Vectors;
// Init application main stack pointer
__set_MSP(pApp_vectors->MSP_init);
// start application
pApplication->Reset_vector();