Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отладка в IAR 5.40
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
darkzite
Пытаюсь перейти с IAR 4.41 на 5.40. В версии 4.41 при запуске debug, курсор устанавливался в начало программы (main) и по запуску (go) начинал выполняться код. В версии 5.40 запускаю debug курсора нет, как будто уже выполняется код, но реально ничего не происходит. При попытке остановить выполнение (break), курсор появляется в окне disassembly, и по всей видимости там зацикливается. В чём может быть проблема? (прошу прощение за корявое объяснение).
KRS
Цитата(darkzite @ Oct 6 2009, 00:40) *
В версии 5.40 запускаю debug курсора нет, как будто уже выполняется код, но реально ничего не происходит. При попытке остановить выполнение (break), курсор появляется в окне disassembly, и по всей видимости там зацикливается.

При стандартных настройках дебагера происходит запуск до main ( т.е. ставится брекпоинт на main, а весь startup исполняется). Раз курсор не появляется это значит startup code зацикливается (или виснет). т.е. до main не доходит.
darkzite
Это в общем-то понятно... А что делать?
KRS
Цитата(darkzite @ Oct 6 2009, 19:39) *
Это в общем-то понятно... А что делать?

Убрать галочку run to main и отлаживаться с самого начала, тогда можно увидеть где виснет. Если startup стандартный его исходники тоже есть.
darkzite
В любом случае, до main не доходит и виснет на __iar_program_start:

Может проблема с Wiggler? После установки, при отладке было сообщение, что нет файла jtag_bb.dll в common, я добавил его туда из Macroigor, сообщение пропало, но вот такая кривая загрузка проходит...
MALLOY2
Забудьте про виглер, точнее про его драйвера которые идут с IAR, ставте сибе H-JTAG С виглером работает в несколько раз быстрее чем через стандартный драйвер, и менее глючнее.
KRS
Цитата(MALLOY2 @ Oct 7 2009, 09:30) *
Забудьте про виглер, точнее про его драйвера которые идут с IAR, ставте сибе [url="http://www.hjtag.com/"]H-JTAG

+1
H-JTAG надо ставить!
darkzite
Вот ещё вопрос: делаю hex-файл (выбираю Release). Там базовый адрес 0x00000000. Хочу изменить его на 0xc8000000, каким образом это сделать? (в смысле, чтоб IAR создавал hex уже с эти адресом, а не вручную менять).
MALLOY2
Цитата
делаю hex-файл (выбираю Release).


В чем смысл "выбираю Release" ?

Цитата
а не вручную менять


Если вы руками поменяете в хекс файле это приведет к не работоспособности программы.

Для того что бы программа работала с 0xc8000000 (странный какой-то базовый адрес не припомню контроллеров с таким) это можно сделать 2 способами

1) правка руками линк файла (*.icf) который должен быть подключен к проекту

2) это правка того-же файла только с помощью визарда встроенного в среду Project->options->linker->linker Configuration file -> edit
darkzite
Контроллер ML67Q5003 фирмы OKI... Там flash расположена по адресу 0xc8000000. А в чём разница между Release и Debug? В случае Release код получается меньше...
MALLOY2
Цитата
А в чём разница между Release и Debug?


Все в ваших руках, как настроите такая и будет разница, можете их удалить и сделать 1 и 2 какая будет между ними разница ?

я при создании проекта настраиваю Release и Debug одинаково, исключением является дефайн который разрешает вывод отладочной информации.
darkzite
Спасибо за помощь, исправил icf-файл, решились все вышеописанные проблемы. Три вещи не очень понятны:
1. Debug и Release настроил одинаково (если ничего не упустил), однако в Release код всё равно меньше. Что я мог упустить?
2. В режиме отладки, устройство работает в разы быстрее чем после прошивки в автономном режиме. Это нормально?
3. В случае оптимизации по скорости, программа перестает работать.
MALLOY2
Цитата
1. Debug и Release настроил одинаково (если ничего не упустил), однако в Release код всё равно меньше. Что я мог упустить?


Конечно что-то упустили, но вы так не принимайте близко к сердцу что надо их одинаково настраивать smile.gif. Просто прочитаете внимательно описание настроек и сделайте вывод, что вам надо, а что нет. Изучите чем отличается DEbug от Release по умолчанию.

Цитата
В режиме отладки, устройство работает в разы быстрее чем после прошивки в автономном режиме. Это нормально?


Скорее всего вы не настроили должным образом периферию (делители PLL и д.р. ), дело в том что при загрузке из среды выполняется макрос (options->debugger->setup macros) если он конечно подключен, то в нем выполняется инициализация что приводит к такому эффекту.

Еще вариант, загрузка програмы в IAR происходит следующим образом, сначала иар загружает в ОЗУ программу загрузчика, далее он передает этой программе файл и загрузчик загружает его во флеш, возможно этот загрузчик инициализирует периферию должным образом что приводит к такому эффекту.

Также внимательно изучите файл сарттапа, и вобще подключен ли он к проекту.


Цитата
3. В случае оптимизации по скорости, программа перестает работать.


На 99.9999% компилятор тут не причем, ищите у себя, а судя по пункту 2, может быть еще и не такое.
KRS
Цитата(darkzite @ Oct 12 2009, 22:12) *
1. Debug и Release настроил одинаково (если ничего не упустил), однако в Release код всё равно меньше. Что я мог упустить?

я делаю так - донастраиваю debug от установок поумолчанию,
удаляю release и создаю его заново как копию debug, а потом просто опции линкера изменить что бы нужного формата файл получился и нужные #define прописать.

Цитата(darkzite @ Oct 12 2009, 22:12) *
2. В режиме отладки, устройство работает в разы быстрее чем после прошивки в автономном режиме. Это нормально?

Должно быть наоборот wink.gif. Как уже отметили выше IARовский flashloader наверное что то делает!

Цитата(darkzite @ Oct 12 2009, 22:12) *
3. В случае оптимизации по скорости, программа перестает работать.

Очень часто бывает что где то volatile не хватает. IAR любит оптимизировать запись и чтение переменных.
darkzite
Насчет скорости, дело не в flashloader'е... Я делаю так: создаю hex-файл в проекте и пишу его с помощью специальной утилиты, которая поставлялась вместе с платой (загружает через UART и встроенный по умолчанию в контроллер лоадер). Грузит она один в один все данных из hex-файла, после считывал и проверял. Скорость остается различной. Получается, что код в hex-файле и код, который грузится IARом при отладке различен. Может это влиять на скорость? Или проблема ещё в чём-то?

Настройка PLL производится не программно а с помощью переключателей (особенность платы), поэтому мало вероятно, что код разный в том смысле, что он по разному настраивает PLL.
darkzite
Всё, разобрался! Нужно было увеличить скорость чтения из flash и включить кэширование. Теперь скорость нормальная...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.