Цитата(Metallist64 @ May 12 2013, 20:51)

Про PLL я решил потому, что в окне Building Output, сразу при записи программы
после фразы Application Running... появляется надпись SWD Communication Failure.
После этого пропадает генерация на кварце... Следовательно контроллер сбрасывается, а при старте PLL не конфигурируется и не запускается.
Ну вот - опять по крупицам.... Вы зашиваете чем? По SWD? и сразу после этого, ещё до запуска программы у вас эта ошибка?
Значит у вас что не так с работой этого самого SWD.
По крайней мере под IAR+JTAG и при убранной галке "идти к main", картина должна выглядеть так:
загружаем ПО во флешь и сразу после загрузки видим в окне, что управление стоит на точке, адрес которой указан во втором элементе таблицы прерываний. Таблица прерываний должна начинаться с метки __vector_table
;The name "__vector_table" has special meaning for C-SPY:
;it is where the SP start value is found, and the NVIC vector
;table register (VTOR) is initialized to this address if != 0.Всё. Дальше можно начинать трассировать или просто запустить на исполнение.
Причём стартовый адрес загрузки может быть любым, и даже в ОЗУ, и содержимое начальной части флешь почти безразлично - картина от этого не меняется.
"Почти" - потому что иногда это не срабатывает, видимо потому, что если с начала флеш есть остатки какого-то ПО, до того как JTAG подключается к CPU, этот код может успеть запуститься, что-то сконфигурить (тот же самый PLL), после этого JTAG делает попытку подключения и не всегда это ему удаётся (как я понимаю - смотря как JTAG подключается и какой тип ресета при этом он использует).
В таком случае помогает простое стирание всего флеш. Тогда управление при включении питания никуда не передаётся, а остётся в ROM-бутлоадере CPU.
Если у вас не так, то у вас что-то не так с настройкой SWD или с таблицей прерываний (или откуда там SWD берёт стартовый адрес).
Да, кстати - а вы учли, что адрес этой самой таблицы прерываний должен быть выровнен на 2^6?