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

 
 
 
Reply to this topicStart new topic
> ARM и KEIL отладка проекта, Debugging problem
Dmitrij
сообщение Jun 10 2009, 19:15
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 20-11-05
Пользователь №: 11 134



Всем доброго времени суток.
Начал заниматься проектированием устройств на ARM процессорах, а точнее LPC2478. Использую KEIL, отладочную плату от Embedded Artists и J-link UAB->JTAG программатор от IAR .

Проблема в том, что после загрузки проекта для отладки (Debug) жёлтая стрелка оказывается не в окне с исходным кодом smile3046.gif , а в окне дизассемблера.
В чём может быть проблема и как её реально исправить? help.gif
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 10 2009, 20:00
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Dmitrij @ Jun 10 2009, 23:15) *
Проблема в том, что после загрузки проекта для отладки (Debug) жёлтая стрелка оказывается не в окне с исходным кодом smile3046.gif , а в окне дизассемблера.
В чём может быть проблема и как её реально исправить? help.gif

Это значит для этого участка кода нет исходника, скорее всего это библиотечная функция ( может быть стартап стандартный...)
Или вы не включили отладочную информацию
Go to the top of the page
 
+Quote Post
Dmitrij
сообщение Jun 11 2009, 05:05
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 20-11-05
Пользователь №: 11 134



Цитата(KRS @ Jun 10 2009, 23:00) *
Это значит для этого участка кода нет исходника, скорее всего это библиотечная функция ( может быть стартап стандартный...)
Или вы не включили отладочную информацию


Проект был создан самый что ни есть стандартный - main.c файл с одноимённой функцией в которой реализован вечный цикл.
В файле Startup.s ничего не поменяно. Что там нужно изменить ? И какую отладочную информацию надо включить?
Go to the top of the page
 
+Quote Post
SergeyDDD
сообщение Jun 11 2009, 05:32
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 7-12-06
Из: Киев
Пользователь №: 23 248



В настройках проекта, во вкладке Debug надо установить птичку "Run to main()"
Go to the top of the page
 
+Quote Post
richie
сообщение Jun 11 2009, 05:34
Сообщение #5


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

Группа: Свой
Сообщений: 147
Регистрация: 5-07-04
Из: Обнинск
Пользователь №: 261



Дмитрий, Вы студент?

Почитайте немного матчасть. smile.gif
До того как процессор начнет выполнять написанный Вами код он еще много чего другого успевает сделать.
Что конкретно он делает можно понять из фоново подключаемых к проекту файлов startup.asm и init.asm (имена и расширения могут отличаться для различных видов компиляторов и процессоров).
Если Вы специально не подключаете к проекту свои версии этих файлов, то компилятор, в частности от KEIL'а, цепляет их из библиотеки, но если
Вам не подходит их стандартный алгоритм, то включив в проект файл(ы) с таким именем, будут автоматически компилироваться Ваша версия.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 11 2009, 05:59
Сообщение #6


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Чисто исходя из человеческой психологии и как опытный телепат могу предположить, что человек действительно ничего в стандартном примере не менял кроме содержания функции main.
А в стандартных примерах все уже схвачено, и брекпоинт на main стоит, и отладочная информация включена, и либы в порядке и ретаргетинг сделан.
Единственно к чему бессознательно тянутся ручки у свежих разработчиков это установить высший уровень оптимизации.
И еще в пару местах подправить как например оптимизировать линковку.

И тогда отладчик даже функцию main может не найти.


Цитата(richie @ Jun 11 2009, 08:34) *
Дмитрий, Вы студент?

Почитайте немного матчасть. smile.gif
До того как процессор начнет выполнять написанный Вами код он еще много чего другого успевает сделать.
Что конкретно он делает можно понять из фоново подключаемых к проекту файлов startup.asm и init.asm (имена и расширения могут отличаться для различных видов компиляторов и процессоров).
Если Вы специально не подключаете к проекту свои версии этих файлов, то компилятор, в частности от KEIL'а, цепляет их из библиотеки, но если
Вам не подходит их стандартный алгоритм, то включив в проект файл(ы) с таким именем, будут автоматически компилироваться Ваша версия.
Go to the top of the page
 
+Quote Post
SergeyDDD
сообщение Jun 11 2009, 06:46
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 7-12-06
Из: Киев
Пользователь №: 23 248



Цитата(AlexandrY @ Jun 11 2009, 08:59) *
Чисто исходя из человеческой психологии и как опытный телепат могу предположить, что человек действительно ничего в стандартном примере не менял кроме содержания функции main.
А в стандартных примерах все уже схвачено, и брекпоинт на main стоит, и отладочная информация включена, и либы в порядке и ретаргетинг сделан.
Единственно к чему бессознательно тянутся ручки у свежих разработчиков это установить высший уровень оптимизации.
И еще в пару местах подправить как например оптимизировать линковку.

И тогда отладчик даже функцию main может не найти.


Я конечно извиняюсь, но не могу сдержаться...
Не думал что здесь форум телепатов и древних "не студентов"
Ребята...
Еще раз перечитайте топик и подумайте на сколько предметно Вы отвечаете
Мне кажется что не стоит так умничать.
КПД сделанного Вами 0%
Ну и человеку в следующий раз не захочется заходить на этот форум
Go to the top of the page
 
+Quote Post
Dmitrij
сообщение Jun 11 2009, 06:57
Сообщение #8





Группа: Новичок
Сообщений: 9
Регистрация: 20-11-05
Пользователь №: 11 134



Цитата(SergeyDDD @ Jun 11 2009, 08:32) *
В настройках проекта, во вкладке Debug надо установить птичку "Run to main()"


biggrin.gif А вы думаете не стоит?
Как мне кажется, если создать проект и сразу указать какой процессор, потом в этот проект вставить файл main.c содержание которого

int main()
{
while(1);
return 0;
}

то всяко должно работать.

Создаётся такое впечатление, что просто нужно поставить какую-то "галочку", чтобы стрелка во время Debug находилась не в Disassembler, а в Source Window.
Go to the top of the page
 
+Quote Post
SergeyDDD
сообщение Jun 11 2009, 07:05
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 7-12-06
Из: Киев
Пользователь №: 23 248



Цитата(Dmitrij @ Jun 11 2009, 09:57) *
biggrin.gif А вы думаете не стоит?
Как мне кажется, если создать проект и сразу указать какой процессор, потом в этот проект вставить файл main.c содержание которого

int main()
{
while(1);
return 0;
}

то всяко должно работать.

Создаётся такое впечатление, что просто нужно поставить какую-то "галочку", чтобы стрелка во время Debug находилась не в Disassembler, а в Source Window.


В окне ассемблера пошагово идет выполнение?
Доходит ли выполнение до main?
Go to the top of the page
 
+Quote Post
Dmitrij
сообщение Jun 11 2009, 07:07
Сообщение #10





Группа: Новичок
Сообщений: 9
Регистрация: 20-11-05
Пользователь №: 11 134



Цитата(SergeyDDD @ Jun 11 2009, 10:05) *
В окне ассемблера пошагово идет выполнение?
Доходит ли выполнение до main?


Да, там всё ходит.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 11 2009, 13:59
Сообщение #11


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Ну а что мешает выбрать окно с исходником и идти пошагово уже в нём?
Go to the top of the page
 
+Quote Post
Dmitrij
сообщение Jun 11 2009, 17:10
Сообщение #12





Группа: Новичок
Сообщений: 9
Регистрация: 20-11-05
Пользователь №: 11 134



Цитата(sonycman @ Jun 11 2009, 16:59) *
Ну а что мешает выбрать окно с исходником и идти пошагово уже в нём?


Так в том-то и дело, что в этом окне нет стрелки указывающей на строку с кодом. А при остановке появились соответсвующие ошибки.

"Всем спасибо" laughing.gif и СПАСИБО отдельное SergeyDDD за понимание tort.gif

Всё оказалось давольнотаки просто. Нужно было подстроить параметр JTAG Speed до 30 кГц. Почему-то в адаптивном режиме рабтать отказалось. Kак результат синяя стрелка в Disassembler.

Сообщение отредактировал Dmitrij - Jun 11 2009, 16:25
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
defunct
сообщение Jun 14 2009, 04:32
Сообщение #13


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Dmitrij @ Jun 11 2009, 20:10) *
Почему-то в адаптивном режиме рабтать отказалось.

Скорее всего потому, что не разведен сигнал RTCK или на JTAG адаптере или на Вашей плате. Или у проца который Вы используете, его просто нет.
Чтобы развеять сомнения, выберите JLINK/JTRACE вместо RDI в адаптерах и попробуйте adaptive clocking еще разок..
Не заработает - точно проблема с RTCK.

Цитата
Нужно было подстроить параметр JTAG Speed до 30 кГц.

Вообще-то на такой скорости работать просто нереально... Т.к. будет все ДИКО ТОРМОЗИТЬ.
Для комфортной работы нужно минимум 1Mhz.
Go to the top of the page
 
+Quote Post
richie
сообщение Jun 19 2009, 12:00
Сообщение #14


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

Группа: Свой
Сообщений: 147
Регистрация: 5-07-04
Из: Обнинск
Пользователь №: 261



Цитата(SergeyDDD @ Jun 11 2009, 10:46) *
Я конечно извиняюсь, но не могу сдержаться...
Не думал что здесь форум телепатов и древних "не студентов"
Ребята...
Еще раз перечитайте топик и подумайте на сколько предметно Вы отвечаете
Мне кажется что не стоит так умничать.
КПД сделанного Вами 0%
Ну и человеку в следующий раз не захочется заходить на этот форум


Пордон, если кого невзначай обидел.

Ответы давались согласно формулировки поставленного вопроса.

Рекомендую почитать эту статью: http://electronix.ru/index.php?ind=reviews...view&iden=3
Go to the top of the page
 
+Quote Post

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

 


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


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