|
Отладка в IAR 5.40 |
|
|
|
Oct 5 2009, 20:40
|
Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729

|
Пытаюсь перейти с IAR 4.41 на 5.40. В версии 4.41 при запуске debug, курсор устанавливался в начало программы (main) и по запуску (go) начинал выполняться код. В версии 5.40 запускаю debug курсора нет, как будто уже выполняется код, но реально ничего не происходит. При попытке остановить выполнение (break), курсор появляется в окне disassembly, и по всей видимости там зацикливается. В чём может быть проблема? (прошу прощение за корявое объяснение).
|
|
|
|
|
Oct 6 2009, 15:39
|
Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729

|
Это в общем-то понятно... А что делать?
|
|
|
|
|
Oct 6 2009, 18:11
|
Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729

|
В любом случае, до main не доходит и виснет на __iar_program_start:
Может проблема с Wiggler? После установки, при отладке было сообщение, что нет файла jtag_bb.dll в common, я добавил его туда из Macroigor, сообщение пропало, но вот такая кривая загрузка проходит...
|
|
|
|
|
Oct 8 2009, 20:45
|
Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729

|
Вот ещё вопрос: делаю hex-файл (выбираю Release). Там базовый адрес 0x00000000. Хочу изменить его на 0xc8000000, каким образом это сделать? (в смысле, чтоб IAR создавал hex уже с эти адресом, а не вручную менять).
|
|
|
|
|
Oct 9 2009, 07:47
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата делаю hex-файл (выбираю Release). В чем смысл "выбираю Release" ? Цитата а не вручную менять Если вы руками поменяете в хекс файле это приведет к не работоспособности программы. Для того что бы программа работала с 0xc8000000 (странный какой-то базовый адрес не припомню контроллеров с таким) это можно сделать 2 способами 1) правка руками линк файла (*.icf) который должен быть подключен к проекту 2) это правка того-же файла только с помощью визарда встроенного в среду Project->options->linker->linker Configuration file -> edit
|
|
|
|
|
Oct 9 2009, 16:31
|
Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729

|
Контроллер ML67Q5003 фирмы OKI... Там flash расположена по адресу 0xc8000000. А в чём разница между Release и Debug? В случае Release код получается меньше...
|
|
|
|
|
Oct 10 2009, 18:55
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата А в чём разница между Release и Debug? Все в ваших руках, как настроите такая и будет разница, можете их удалить и сделать 1 и 2 какая будет между ними разница ? я при создании проекта настраиваю Release и Debug одинаково, исключением является дефайн который разрешает вывод отладочной информации.
|
|
|
|
|
Oct 12 2009, 18:12
|
Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729

|
Спасибо за помощь, исправил icf-файл, решились все вышеописанные проблемы. Три вещи не очень понятны: 1. Debug и Release настроил одинаково (если ничего не упустил), однако в Release код всё равно меньше. Что я мог упустить? 2. В режиме отладки, устройство работает в разы быстрее чем после прошивки в автономном режиме. Это нормально? 3. В случае оптимизации по скорости, программа перестает работать.
|
|
|
|
|
Oct 13 2009, 08:19
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата 1. Debug и Release настроил одинаково (если ничего не упустил), однако в Release код всё равно меньше. Что я мог упустить? Конечно что-то упустили, но вы так не принимайте близко к сердцу что надо их одинаково настраивать  . Просто прочитаете внимательно описание настроек и сделайте вывод, что вам надо, а что нет. Изучите чем отличается DEbug от Release по умолчанию. Цитата В режиме отладки, устройство работает в разы быстрее чем после прошивки в автономном режиме. Это нормально? Скорее всего вы не настроили должным образом периферию (делители PLL и д.р. ), дело в том что при загрузке из среды выполняется макрос (options->debugger->setup macros) если он конечно подключен, то в нем выполняется инициализация что приводит к такому эффекту. Еще вариант, загрузка програмы в IAR происходит следующим образом, сначала иар загружает в ОЗУ программу загрузчика, далее он передает этой программе файл и загрузчик загружает его во флеш, возможно этот загрузчик инициализирует периферию должным образом что приводит к такому эффекту. Также внимательно изучите файл сарттапа, и вобще подключен ли он к проекту. Цитата 3. В случае оптимизации по скорости, программа перестает работать. На 99.9999% компилятор тут не причем, ищите у себя, а судя по пункту 2, может быть еще и не такое.
|
|
|
|
|
Oct 13 2009, 20:37
|

Профессионал
    
Группа: Модераторы
Сообщений: 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. В режиме отладки, устройство работает в разы быстрее чем после прошивки в автономном режиме. Это нормально? Должно быть наоборот  . Как уже отметили выше IARовский flashloader наверное что то делает! Цитата(darkzite @ Oct 12 2009, 22:12)  3. В случае оптимизации по скорости, программа перестает работать. Очень часто бывает что где то volatile не хватает. IAR любит оптимизировать запись и чтение переменных.
|
|
|
|
|
Oct 21 2009, 19:18
|
Группа: Участник
Сообщений: 10
Регистрация: 3-10-09
Пользователь №: 52 729

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