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

 
 
 
Reply to this topicStart new topic
> Проблема с запуском программы, с подключеным JTAG всё ОК, без него - не работает
sysel
сообщение Mar 10 2010, 10:44
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Здравствуйте!

В IAR 5.41 делаю проект под LPC1754 примерно следуюшего функционала:
1. Настроить PLL и пойти работать от него
2. Отправить по UART 2 байта
3. Уйти в бесконечный цикл while(1);
Прерывания не использую.

Заливаю в процессор через MT-Link v6 (по конопочке Download and Debug) как в режиме Debug так и Release - всё работает (делает остановку на входе в main, нажимаю F5 и 2 байта отсылаются).

Когда MT-Link отключен - программа не запускается.

Программа во флеше, таблица векторов прерываний не перенесена.
После снятия питания и подключения MT-Link в IAR нажмаю Debug without downloading - запускается (с остановкой на main) и отсылает эти 2 байта.

Заливка по "Download active application" даёт тот же результат.

Как решить проблему?

И попутный вопрос: почему отладка вспотыкается об точку входа в main() ?
Как от этого избавиться?
М.б. в этом проблема(проц. останавливается в ожидании того, что по jtag-у придёт команда "дальше", a jtag-то не подключен)?


-------

Кое-что прояснилось:

Закрываю IAR, открываю J-Link Commander.
Делаю так:
(команды reset и go)
J-Link>r
J-Link>g

И байты отсылаются. Т.е. причина всему - вспотыкания об эту левую точку остановки на входе в main().


Как от неё избавиться?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 10 2010, 12:08
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(sysel @ Mar 10 2010, 12:44) *
И попутный вопрос: почему отладка вспотыкается об точку входа в main() ?
Как от этого избавиться?
М.б. в этом проблема(проц. останавливается в ожидании того, что по jtag-у придёт команда "дальше", a jtag-то не подключен)?
Спотыкается, потому что в настройках дебагера стоит галочка "run to main". Что просите - то и получаете.
По поводу старта: Задумайтесь над этими строками документации:
Цитата
4.Memory re-mapping
Boot ROM re-mapping
Following a hardware reset, the Boot ROM is temporarily mapped to address 0. This is
normally transparent to the user. However, if execution is halted immediately after reset by
a debugger, it should correct the mapping for the user. See Section33–6.
Цитата
P2[10] — General purpose digital input/output pin. 5 V tolerant pad with 5
ns glitch filter providing digital I/O functions with TTL levels and hysteresis.
Note: A LOW on this pin while RESET is LOW forces the on-chip
bootloader to take over control of the part after a reset and go into ISP
mode. See Section32–1.
Цитата
The flash boot loader code is executed every time the part is powered on or reset. The
loader can execute the ISP command handler or the user application code. A LOW level
after reset at pin P2.10 is considered an external hardware request to start the ISP
command handler. Assuming that power supply pins are on their nominal levels when the
rising edge on RESET pin is generated, it may take up to 3ms before P2.10 is sampled
and the decision on whether to continue with user code or ISP handler is made. If P2.10 is
sampled low and the watchdog overflow flag is set, the external hardware request to start
the ISP command handler is ignored. If there is no request for the ISP command handler
execution (P2.10 is sampled HIGH after reset), a search is made for a valid user program.
If a valid user program is found then the execution control is transferred to it. If a valid user
program is not found, the auto-baud routine is invoked.
Цитата
3.1.1Criterion 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.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sysel
сообщение Mar 10 2010, 12:32
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Цитата(Сергей Борщ @ Mar 10 2010, 15:08) *
Спотыкается, потому что в настройках дебагера стоит галочка "run to main". Что просите - то и получаете.


Когда убираю галочку - программа останавливается перед main на __iar_program_start

Цитата(Сергей Борщ @ Mar 10 2010, 15:08) *
По поводу старта: Задумайтесь над этими строками документации:


P2.10 - висит в воздухе. т.е. внутренний подтягивающий резистор не должен дать режим ISP

Судя по тому, что после сброса питания и ресета процессора команда "go" ("g" в J-Link Commander) вызывает оживление программы - управление ей бутлодер всё-таки передаёт.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Mar 10 2010, 12:45
Сообщение #4


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Там WDT не делает свое черное дело?
Go to the top of the page
 
+Quote Post
sysel
сообщение Mar 10 2010, 12:54
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Цитата(jorikdima @ Mar 10 2010, 15:45) *
Там WDT не делает свое черное дело?

Он по умолчанию отключен.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 10 2010, 13:34
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(sysel @ Mar 10 2010, 14:32) *
P2.10 - висит в воздухе. т.е. внутренний подтягивающий резистор не должен дать режим ISP
В ФИДО была хорошая призказка: "чтение документации вслух - 100 баксов/час".
Цитата
Pin P2.10 is used as a hardware request signal for ISP and therefore requires special
attention. Since P2.10 is in high impedance mode after reset, it is important that the user
provides external hardware (a pull-up resistor or other device)
to put the pin in a defined
state. Otherwise unintended entry into ISP mode may occur.
Ни про какой внутренний подтягивающий резистор в документации не упоминается.
Цитата(sysel @ Mar 10 2010, 14:32) *
Судя по тому, что после сброса питания и ресета процессора команда "go" ("g" в J-Link Commander) вызывает оживление программы - управление ей бутлодер всё-таки передаёт.
А вы уверены, что ваш дебагер в процессе сброса не делает ремап на вектора пользователя?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sysel
сообщение Mar 10 2010, 13:56
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Цитата(Сергей Борщ @ Mar 10 2010, 16:34) *
Ни про какой внутренний подтягивающий резистор в документации не упоминается.

Pin connect block, 5.13:
регистр PINMODE4 после сброса имеет значение 0, что говорит о том, что на P2.10 pull-up resistor enabled.

Для успокоения совести подтянул P2.10 к 3.3 В через 5.6К. Проблема осталась.

Цитата(Сергей Борщ @ Mar 10 2010, 16:34) *
А вы уверены, что ваш дебагер в процессе сброса не делает ремап на вектора пользователя?


В J-Link Commander:
J-Link>r // сброс процессора
J-Link>Regs // вывести значения регистров
Вижу, что R15(PC) = 0x0000585C, что соответствует точке входа в __iar_program_start (по дизасемблеру IAR)
J-Link>g // go
и программа пошла работать.

Похоже на то, что бутлодер поставил точку останова на входе в точку старта.
Go to the top of the page
 
+Quote Post
sysel
сообщение Mar 11 2010, 16:31
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Вопрос снят.
Разобрался, самдурак. Не так сконфигурировал icf
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 8th June 2024 - 01:09
Рейтинг@Mail.ru


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