Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ARM и KEIL отладка проекта
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Dmitrij
Всем доброго времени суток.
Начал заниматься проектированием устройств на ARM процессорах, а точнее LPC2478. Использую KEIL, отладочную плату от Embedded Artists и J-link UAB->JTAG программатор от IAR .

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

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


Проект был создан самый что ни есть стандартный - main.c файл с одноимённой функцией в которой реализован вечный цикл.
В файле Startup.s ничего не поменяно. Что там нужно изменить ? И какую отладочную информацию надо включить?
SergeyDDD
В настройках проекта, во вкладке Debug надо установить птичку "Run to main()"
richie
Дмитрий, Вы студент?

Почитайте немного матчасть. smile.gif
До того как процессор начнет выполнять написанный Вами код он еще много чего другого успевает сделать.
Что конкретно он делает можно понять из фоново подключаемых к проекту файлов startup.asm и init.asm (имена и расширения могут отличаться для различных видов компиляторов и процессоров).
Если Вы специально не подключаете к проекту свои версии этих файлов, то компилятор, в частности от KEIL'а, цепляет их из библиотеки, но если
Вам не подходит их стандартный алгоритм, то включив в проект файл(ы) с таким именем, будут автоматически компилироваться Ваша версия.
AlexandrY
Чисто исходя из человеческой психологии и как опытный телепат могу предположить, что человек действительно ничего в стандартном примере не менял кроме содержания функции main.
А в стандартных примерах все уже схвачено, и брекпоинт на main стоит, и отладочная информация включена, и либы в порядке и ретаргетинг сделан.
Единственно к чему бессознательно тянутся ручки у свежих разработчиков это установить высший уровень оптимизации.
И еще в пару местах подправить как например оптимизировать линковку.

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


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

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

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


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


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

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

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

Создаётся такое впечатление, что просто нужно поставить какую-то "галочку", чтобы стрелка во время Debug находилась не в Disassembler, а в Source Window.
SergeyDDD
Цитата(Dmitrij @ Jun 11 2009, 09:57) *
biggrin.gif А вы думаете не стоит?
Как мне кажется, если создать проект и сразу указать какой процессор, потом в этот проект вставить файл main.c содержание которого

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

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

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


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


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


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

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

Всё оказалось давольнотаки просто. Нужно было подстроить параметр JTAG Speed до 30 кГц. Почему-то в адаптивном режиме рабтать отказалось. Kак результат синяя стрелка в Disassembler.
defunct
Цитата(Dmitrij @ Jun 11 2009, 20:10) *
Почему-то в адаптивном режиме рабтать отказалось.

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

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

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


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

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

Рекомендую почитать эту статью: http://electronix.ru/index.php?ind=reviews...view&iden=3
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.