QUOTE (_Артём_ @ Mar 19 2012, 20:48)

Дальше заменил в makefile строку
CODE
RUN_FROM_FLASH = 1
CODE
RUN_FROM_FLASH = 0
1) В скрипте линкера отсутствует строка
CODE
ENTRY(Reset_Handler)
В вашем архиве то же самое делает команда monitor reg pc = (0x10000004), но ENTRY - более прямой путь.
2) В crt.c идет обращение к Vector Offset Register, которого в Cortex-M0 не существует (там ремап через регистр SYSMEMREMAP как в "обычных" ARM).
3) При старте дебаггера надо прописать в указатель стека значение из таблицы векторов. Либо в командах дебаггера, либо в начале Reset_Handler. В вашем архиве это делает команда monitor reg r13 = (0x10000000). Разберитесь, куда ее надо вписать в LPCXpresso.
QUOTE (_Артём_ @ Mar 19 2012, 20:48)

Ожидал увидеть, что программа начнёт исполнятся из ОЗУ - нет, не увидел: контроллер перешёл в какое-то неизвестное мне состояние и отлаживаться отказался(выдал сообщение: No source available for "").
Посмотрите содержимое PC. Вероятно он улетел в адреса, для которых у вас действительно нет исходного кода. Можно воспользоваться окном дизассемблера чтобы посмотреть содержимое памяти.
QUOTE (_Артём_ @ Mar 19 2012, 20:48)

Как правильно запускать программу в ОЗУ? Можно ли отлаживать программу расположенную в ОЗУ?
Да, можно. Вам нужно заставить отладчик перед стартом выполнить то, что при старте из флеша делает ядро - инициализировать указатель стека из таблицы векторов и занести в PC адрес начала программы (опять же либо из таблицы векторов либо директивой ENTRY() скрипта линкера).
QUOTE (_Артём_ @ Mar 19 2012, 20:48)

Видимо, я хочу получить от этого примера то, для чего он совсем не предназначен. Для чего он тогда?
Это надо в его описании читать. Я предпочитаю читать документацию и писать подобный пример сам. Да, требует времени, но приходит детальное понимание процесса.