реклама на сайте
подробности

 
 
> LPC1778 не получается переместить программу, Не могу переместить программу в нужный адрес FLASH
Metallist64
сообщение May 8 2013, 12:40
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Здравствуйте уважаемые специалисты.
Использую KEIL 4.53 + LPC1778.
Столкнулся с непонятной ситуацией.
При попытке зашить программу в нужный адрес, отличный от 0 (например 0х10000)- получаю отвал PLL ну и остановку контроллера. В общем для LPC2367 я выставлял IROM1 start address 0x10000 - все было хорошо. Контроллер работал и отлаживался замечательно.
А на LPC1778 что-то не проходит такой фокус. Причем создается ощущение, что контроллер просто не запускается.
Может надо таблицу векторов перемещать, или еще что-нибудь а RAM ??? А то наблюдается полный ступор...
Если кто сталкивался, прошу помощи.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Metallist64
сообщение May 12 2013, 14:51
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Большое спасибо, всем заинтересовавшимся!
ОФФТОП: Честно говоря, думал в праздники люди не читают форумы.
Постараюсь немного прояснить ситуацию.
Про PLL я решил потому, что в окне Building Output, сразу при записи программы
после фразы Application Running... появляется надпись SWD Communication Failure.
После этого пропадает генерация на кварце... Следовательно контроллер сбрасывается, а при старте PLL не конфигурируется и не запускается.
Что попробовал:
- Полностью стирал кристалл
- Комментировал область, где CRP включается.
- Менял стартовый адрес программы

По всей видимости надо как-то модифицировать startup...Похоже он не запускается.

По поводу создания секции BOOT, немного неясно. Дело в том, что для LPC2367, нечего не менял в стандартном startUPе.
Правда, компилятор использовал 4.00.

Пока бутлоадера нет(Планировал добавить его позже. По сути он просто делает переход программы к нужному адресу).

Просто пытаюсь записать код в нужную область флэша.

Немного не понял, про то, что надо контроллер прерываний перенастраивать на новую таблицу...
Это вроде логично, но сам компилятор наверное должен это сделать...
К тому же не просто так кейловцы в настройки проекта вынесли область "Read/Only Memory Areas"
А получается что она не работает... Или скорее всего, у меня что-то не работает.

Если не секрет, если таблица прерываний копируется в ОЗУ, то программа должна это как-то понять. Т.е. где-то должен поменяться начальный адрес таблицы?


Go to the top of the page
 
+Quote Post
jcxz
сообщение May 12 2013, 15:47
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(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?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Metallist64   LPC1778 не получается переместить программу   May 8 2013, 12:40
- - KnightIgor   Цитата(Metallist64 @ May 8 2013, 13:40) М...   May 8 2013, 20:23
- - jcxz   Так.... Как обычно включаю экстрасенсорные способн...   May 9 2013, 15:39
|- - Axel   ...откуда такие выводы про PLL??? [/quote] Моя инт...   May 9 2013, 17:20
|- - jcxz   Оттуда-же откуда Ваши фантазии про бутлоадер   May 9 2013, 17:56
|- - Axel   Цитата(jcxz @ May 9 2013, 20:56) Оттуда-ж...   May 10 2013, 02:59
|- - jcxz   Нет, не означает. Возможно - только планируется. А...   May 10 2013, 06:32
- - sensor_ua   Может, всё хорошо, только отладчику скрипт нужен с...   May 12 2013, 05:01
|- - jcxz   Предлагаю переименовать тему в "Пасхальные га...   May 12 2013, 07:40
|- - Metallist64   Цитата(sensor_ua @ May 12 2013, 08:01) Мо...   May 13 2013, 13:17
- - Metallist64   Честно говоря, топикстартер пытается понять, что е...   May 12 2013, 13:38
|- - _Артём_   Цитата(Metallist64 @ May 12 2013, 17:51) ...   May 12 2013, 15:03
- - sensor_ua   Всё-таки попробуйте Dbg_ROM.ini подложить дебаггер...   May 12 2013, 15:18
- - Metallist64   Сейчас попробовал следующий вариант: -Полностью оч...   May 13 2013, 06:41
|- - KnightIgor   Цитата(Metallist64 @ May 13 2013, 07:41) ...   May 13 2013, 10:14
|- - jcxz   Цитата(KnightIgor @ May 13 2013, 16:14) а...   May 13 2013, 12:18
|- - Metallist64   Цитата(jcxz @ May 13 2013, 15:18) А вот п...   May 13 2013, 12:25
|- - jcxz   Меняется только адрес начала флеш-памяти, описанны...   May 13 2013, 12:44
- - sensor_ua   Вот, например, цифирьки по образу и подобию https:...   May 13 2013, 15:52
- - Metallist64   Уважаемые специалисты. Вроде сделал как надо: Код...   May 14 2013, 07:25
- - sensor_ua   ЦитатаУказатель стека указывает на ОЗУ... А настро...   May 14 2013, 11:48
|- - Metallist64   Цитата(sensor_ua @ May 14 2013, 14:48) А ...   May 14 2013, 12:46
- - sensor_ua   А для ROM со смещением так пробовал? Я из RAM не п...   May 14 2013, 14:53
|- - Metallist64   Цитата(sensor_ua @ May 14 2013, 17:53) А ...   May 14 2013, 20:57
- - Metallist64   Пока решил оставить затею отлаживать прошивку с лю...   May 15 2013, 07:36
- - Metallist64   В руководстве пользователя написано, что с адреса ...   May 15 2013, 08:44
- - Metallist64   Вот я баран! Я в коде объявил несколько переме...   May 15 2013, 13:05
|- - KnightIgor   Цитата(Metallist64 @ May 15 2013, 14:05) ...   May 15 2013, 20:56
|- - Metallist64   Цитата(KnightIgor @ May 15 2013, 23:56) М...   May 16 2013, 07:59
- - Golikov A.   так и программу из флеши в озу тоже никто кроме ва...   May 16 2013, 19:40
- - Metallist64   В ближайшее время попробую переложить в ОЗУ. Сейча...   May 17 2013, 07:35


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th August 2025 - 06:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01439 секунд с 7
ELECTRONIX ©2004-2016