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

 
 
> 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
Ответов
jcxz
сообщение May 9 2013, 15:39
Сообщение #2


Гуру
******

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



Так.... Как обычно включаю экстрасенсорные способности, чтобы угадать недосказанное.... 1111493779.gif
Судя по этой фразе:
Цитата(Metallist64 @ May 8 2013, 18:40) *
...
получаю отвал PLL ну и остановку контроллера.
...
у автора проблемы с запуском из под JTAG. Иначе - откуда такие выводы про PLL???
А значит - таблица векторов здесь не при чём.
При запуске из под JTAG (по-крайней мере под IAR) абсолютно параллельно что там находится по адресу 0, есть там таблица или нету.

Цитата(KnightIgor @ May 9 2013, 02:23) *
Однако процессор об этом ничего не знает, после сброса будет пытаться использовать таблицу по 0х0 и уйдёт в никуда... Поэтому необходимо еще разместить минимальную таблицу векторов из двух слов по стандартному адресу загрузки: первое слово должно содержать значение для загрузки указателя стека, а второе - адрес, куда прыгать.
...
Ну вот здесь Вы совсем зря обманываете товарища....
Читаем "LPC178x/7x User manual" параграф "3.10.1 PLL and startup/boot code interaction":
When there is no valid user code (determined by the checksum word) in the user flash or
the ISP enable pin (P2[10]) is pulled low on startup, the ISP mode will be entered and the
boot code will setup the Main PLL with the IRC.

а также "37.3.1.1 Criterion for Valid User Code":
The reserved Cortex-M3 exception vector location 7 (offset 0x001C in the vector table)
should contain the 2’s complement of the check-sum of table entries 0 through 6. This
causes the checksum of the first 8 table entries to be 0. The boot loader code checksums
the first 8 locations in sector 0 of the flash. If the result is 0, then execution control is
transferred to the user code.


Так что маловато будет ваших 2-х слов....

Да и вообще - на вышеозначенном CPU более политкорректно прописывать начало таблицы в NVIC таким макаром:
Код
u32 j;
if ((j = (u32)&__Vectors) >= 0x20000000) j |= B29;
NVIC.VTABLE = j;
а то кто-ж его знает - может захочется её в ОЗУ держать. Да и нафиг это делать до си-стартапа? Всё равно во время его прерывания запрещены.

Цитата(KnightIgor @ May 9 2013, 02:23) *
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
А зачем BLX и BX? Вроде и обычные BL и B прекрасно достают....
Go to the top of the page
 
+Quote Post
Axel
сообщение May 9 2013, 17:20
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



...откуда такие выводы про PLL???
[/quote]
Моя интерпретация: имеется бутлоадер, использующий PLL. В основной программе также присутствует инициализация PLL, в теле которой пррграмма глочнет. Известная (мне) проблема: перед переходом PLL надо заглушить. Типа:
Код
    LPC_SC->CCLKSEL   = 0x01;           // set sysclk (12MHz) as clock source
    LPC_SC->PLL0CON  = 0;                 // disable PLL
    LPC_SC->PLL0FEED = 0xAA;
    LPC_SC->PLL0FEED = 0x55;
[quote name='jcxz' date='May 9 2013, 18:39' post='1160992']
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 9 2013, 17:56
Сообщение #4


Гуру
******

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



Оттуда-же откуда Ваши фантазии про бутлоадер biggrin.gif
Go to the top of the page
 
+Quote Post
Axel
сообщение May 10 2013, 02:59
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(jcxz @ May 9 2013, 20:56) *
Оттуда-же откуда Ваши фантазии про бутлоадер biggrin.gif


"...При попытке зашить программу в нужный адрес..." - означает видимо, что по "ненужному" адресу (0х00000000) присутствует бутлоадер.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 10 2013, 06:32
Сообщение #6


Гуру
******

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



Нет, не означает.
Возможно - только планируется. А пока чел пытается скомпилить и запустить рабочее ПО с того адреса JTAG-ом. Что вполне возможно.
Только возможно он забыл стереть остатки старого ПО с адреса 0, а в этом случае могут как раз и возникнуть вышеописанные проблемы. Если ROM-бутлоадер CPU увидит эти остатки во флеш, попытается стартануть это старое ПО и тут вдруг получит коннект и прошивку по JTAG... Вот после такого как раз и может снести крышу.
Так что если мои догадки верны, и попытки идут посредством JTAG, то советую предварительно стереть ВСЮ флешь CPU.

А вообще - гадания - вещь неблагодарная....
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
- - 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, 14:51
|- - _Артём_   Цитата(Metallist64 @ May 12 2013, 17:51) ...   May 12 2013, 15:03
|- - jcxz   Цитата(Metallist64 @ May 12 2013, 20:51) ...   May 12 2013, 15:47
- - 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 Текстовая версия Сейчас: 11th August 2025 - 16:23
Рейтинг@Mail.ru


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