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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
darkzite
сообщение Oct 5 2009, 20:40
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729



Пытаюсь перейти с IAR 4.41 на 5.40. В версии 4.41 при запуске debug, курсор устанавливался в начало программы (main) и по запуску (go) начинал выполняться код. В версии 5.40 запускаю debug курсора нет, как будто уже выполняется код, но реально ничего не происходит. При попытке остановить выполнение (break), курсор появляется в окне disassembly, и по всей видимости там зацикливается. В чём может быть проблема? (прошу прощение за корявое объяснение).
Go to the top of the page
 
+Quote Post
KRS
сообщение Oct 5 2009, 22:42
Сообщение #2


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

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



Цитата(darkzite @ Oct 6 2009, 00:40) *
В версии 5.40 запускаю debug курсора нет, как будто уже выполняется код, но реально ничего не происходит. При попытке остановить выполнение (break), курсор появляется в окне disassembly, и по всей видимости там зацикливается.

При стандартных настройках дебагера происходит запуск до main ( т.е. ставится брекпоинт на main, а весь startup исполняется). Раз курсор не появляется это значит startup code зацикливается (или виснет). т.е. до main не доходит.
Go to the top of the page
 
+Quote Post
darkzite
сообщение Oct 6 2009, 15:39
Сообщение #3





Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729



Это в общем-то понятно... А что делать?
Go to the top of the page
 
+Quote Post
KRS
сообщение Oct 6 2009, 16:39
Сообщение #4


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

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



Цитата(darkzite @ Oct 6 2009, 19:39) *
Это в общем-то понятно... А что делать?

Убрать галочку run to main и отлаживаться с самого начала, тогда можно увидеть где виснет. Если startup стандартный его исходники тоже есть.
Go to the top of the page
 
+Quote Post
darkzite
сообщение Oct 6 2009, 18:11
Сообщение #5





Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729



В любом случае, до main не доходит и виснет на __iar_program_start:

Может проблема с Wiggler? После установки, при отладке было сообщение, что нет файла jtag_bb.dll в common, я добавил его туда из Macroigor, сообщение пропало, но вот такая кривая загрузка проходит...
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Oct 7 2009, 05:30
Сообщение #6


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Забудьте про виглер, точнее про его драйвера которые идут с IAR, ставте сибе H-JTAG С виглером работает в несколько раз быстрее чем через стандартный драйвер, и менее глючнее.
Go to the top of the page
 
+Quote Post
KRS
сообщение Oct 7 2009, 08:00
Сообщение #7


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

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



Цитата(MALLOY2 @ Oct 7 2009, 09:30) *
Забудьте про виглер, точнее про его драйвера которые идут с IAR, ставте сибе [url="http://www.hjtag.com/"]H-JTAG

+1
H-JTAG надо ставить!
Go to the top of the page
 
+Quote Post
darkzite
сообщение Oct 8 2009, 20:45
Сообщение #8





Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729



Вот ещё вопрос: делаю hex-файл (выбираю Release). Там базовый адрес 0x00000000. Хочу изменить его на 0xc8000000, каким образом это сделать? (в смысле, чтоб IAR создавал hex уже с эти адресом, а не вручную менять).
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Oct 9 2009, 07:47
Сообщение #9


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата
делаю hex-файл (выбираю Release).


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

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


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

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

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

2) это правка того-же файла только с помощью визарда встроенного в среду Project->options->linker->linker Configuration file -> edit
Go to the top of the page
 
+Quote Post
darkzite
сообщение Oct 9 2009, 16:31
Сообщение #10





Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729



Контроллер ML67Q5003 фирмы OKI... Там flash расположена по адресу 0xc8000000. А в чём разница между Release и Debug? В случае Release код получается меньше...
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Oct 10 2009, 18:55
Сообщение #11


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата
А в чём разница между Release и Debug?


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

я при создании проекта настраиваю Release и Debug одинаково, исключением является дефайн который разрешает вывод отладочной информации.
Go to the top of the page
 
+Quote Post
darkzite
сообщение Oct 12 2009, 18:12
Сообщение #12





Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729



Спасибо за помощь, исправил icf-файл, решились все вышеописанные проблемы. Три вещи не очень понятны:
1. Debug и Release настроил одинаково (если ничего не упустил), однако в Release код всё равно меньше. Что я мог упустить?
2. В режиме отладки, устройство работает в разы быстрее чем после прошивки в автономном режиме. Это нормально?
3. В случае оптимизации по скорости, программа перестает работать.
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Oct 13 2009, 08:19
Сообщение #13


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата
1. Debug и Release настроил одинаково (если ничего не упустил), однако в Release код всё равно меньше. Что я мог упустить?


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

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


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

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

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


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


На 99.9999% компилятор тут не причем, ищите у себя, а судя по пункту 2, может быть еще и не такое.
Go to the top of the page
 
+Quote Post
KRS
сообщение Oct 13 2009, 20:37
Сообщение #14


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

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



Цитата(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 любит оптимизировать запись и чтение переменных.
Go to the top of the page
 
+Quote Post
darkzite
сообщение Oct 21 2009, 19:18
Сообщение #15





Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729



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

Настройка PLL производится не программно а с помощью переключателей (особенность платы), поэтому мало вероятно, что код разный в том смысле, что он по разному настраивает PLL.

Сообщение отредактировал darkzite - Oct 21 2009, 19:20
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 10th July 2025 - 20:52
Рейтинг@Mail.ru


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