Цитата(KnightIgor @ May 15 2013, 23:56)

Модицифируйте startup_xxxx.s, как я предлагал:
Код
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
...
VTOR EQU (0xE000E000 + 0x0D08)
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
IMPORT SystemInit
; ++++++++++++++++++++++++++++++++++++++++++++++
MOV32 R1, #VTOR ; Load VTOR register address
LDR R0, =__Vectors ; Load user program vector table address
STR R0, [R1] ; Store to VTOR to relocate the vector table
; ++++++++++++++++++++++++++++++++++++++++++++++
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
Между +++ в стандартный startup_xxxx добавлены команды, которые "следят" за тем, чтобы указатель на векторную таблицу всегда был настроен правильно.
Большое спасибо.
Но похоже в конце файла system_LPC177x_8x.c
оказалась вот такая штука:
Код
#ifdef __RAM_MODE__
SCB->VTOR = 0x10000000 & 0x3FFFFF80;
#else
SCB->VTOR = 0x00000000 & 0x3FFFFF80; <-- насколько я понимаю, тут можно поставить начальный адрес программы
#endif
И похоже , что она перенастраивала на таблицу, которая находится в бутлоадере(вначале флэши).
В итоге, запускался не тот обработчик(или вообще незапускался) и программа останавливалась.
Остался еще один непонятный момент. При использовании команды RAM_MODE, адрес должен меняться меняться на стартовый адрес ОЗУ.
В моем случае 0x10000000. Но при указании этой команды, в отладчике видно, что все равно, используется адрес флэши, а не ОЗУ.
И немного не ясно, кто копирует таблицу из флэши в озу? Может это вручную надо делать.
Хотелось бы попробовать скопировать таблицу в ОЗУ и работать с ней.