Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Иногда выскакивает ошибка 117
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
IF_P
При работе с программой иногда выскакивает ошибка 117 в режиме "Make" на этапе линковки:

Error[e117]: Incompatible runtime models. Module adc_8535 specifies that '__has_elpm' must be 'false', but module
delay has the value 'true'

После "Rebuild All" все компилируется нормально. Но хочется понять, что происходит. В некоторых случаях после модификации программы вновь работает "Make".
В даном случае модуль "delay" не модифицировался, а только модуль "adc_8535".

P.S.
Такое впечатление, что ни у кого эта ошибка не выскакивает. А у меня за пару дней то появляется, то пропадает 05.gif
dxp
Эта ошибка возникает из-за несовместимости т.н. рантаймных моделей объектных файлов проекта и подключенной библиотеки, о чём недвусмысленно сообщает текст ошибки. В частности, у вас там есть объектный модуль adc_8535, который скомпилирован с опцией, не включающей фичу has_elpm, а подключенная (указанная для сборки) библиотека эту фичу содержит, что видно по её модулю delay.

Смотрите внимательно опции компилятора (при make и rebuild) и опции подключенной библиотеки. Чтобы не было конфликтов, рантаймные модели (т.е. модель памяти, опции процессора и т.п.) должны быть одинаковыми.
IF_P
Цитата(dxp @ Apr 5 2011, 06:01) *
Эта ошибка возникает из-за несовместимости т.н. рантаймных моделей объектных файлов проекта и подключенной библиотеки, о чём недвусмысленно сообщает текст ошибки. В частности, у вас там есть объектный модуль adc_8535, который скомпилирован с опцией, не включающей фичу has_elpm, а подключенная (указанная для сборки) библиотека эту фичу содержит, что видно по её модулю delay.

Смотрите внимательно опции компилятора (при make и rebuild) и опции подключенной библиотеки. Чтобы не было конфликтов, рантаймные модели (т.е. модель памяти, опции процессора и т.п.) должны быть одинаковыми.

Я, конечно, не большой знаток IAR. Мог что-нибудь пропустить. Так и думал вначале. Просто тупо жал Rebuild All. Но я не меняю никаких свойств, не подключаю и не отключаю модули, библиотеки, а ошибка то появится, то исчезнет. Правлю только исходный текст. Идет отладка некоторых кусков программы.
Я попробую тут выложить полностью проекты IAR с ошибкой и без. Может кто и заметит что-нибудь.
Вот сейчас есть проект с ошибкой. Выкладываю. Когда ошибка в этом проекте исчезнет, снова выложу.
Логику работы просьба не искать. Это просто куски для проверки отдельных узлов

IAR 4.30A


P.S.

А вот и проект без ошибки. В чем разница?

dxp
Цитата(IF_P @ Apr 5 2011, 22:40) *
Я попробую тут выложить полностью проекты IAR с ошибкой и без. Может кто и заметит что-нибудь.
Вот сейчас есть проект с ошибкой. Выкладываю. Когда ошибка в этом проекте исчезнет, снова выложу.
Логику работы просьба не искать. Это просто куски для проверки отдельных узлов

IAR 4.30A

Скачал проект с ошибкой. Что-то странный он какой-то. В настройках криминала не увидел, но почему-то в продуктах компиляции какая-то ерунда. Например, в проекте добавлены файлы adc_8535.c и delay.c, а в папке Obj объектные файлы: adc_8535.r90, delay.r90, i2c.r90. Откуда взялся i2c.r90, если его исходника нет в проекте?

Далее, в папке List лежат: delay.lst, i2c.lst, где adc_8535.lst? И почему есть i2c.lst? Видимо, это результат каких-то экспериментов, когда то файлы добавляются в проект (и удаляются из него), то опции генерации листингов включатся/выключаются. Возможно, поэтому и атрибуте объектных файлов как-то "разбежались".

Посмотрел потроха объектных файлов - действительно, у них разные атрибуты рантаймной модели. У adc_8535.r90: __has_elpm ♣falseЙ (прямо из бинарника взял), у delay.r90: __has_elpm ♦trueЙ.

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

Сам проект я перекомпилировал, всё собралось без ошибок. Правил файлы, компилировал, никаких проблем не выявилось - все файлы правильно генерируются. Никаких ошибок не возникает. IAR 5.30.
IF_P
Цитата(dxp @ Apr 6 2011, 08:52) *
Сам проект я перекомпилировал, всё собралось без ошибок. Правил файлы, компилировал, никаких проблем не выявилось - все файлы правильно генерируются. Никаких ошибок не возникает. IAR 5.30.

Спасибо за помощь.
Да, действительно, я компилировал в одной папке разные проекты с разными CPU: ATMega128, ATMega8, ATMega8535. И модуль I2C использовался с ATMega128. Я удалил из проекта все остальные модули, а этот по ошибке оставил. А листинга не было потому, что именно для ATMega8535 забыл поставить "галочку" в настройках. Для других CPU она стоит. Но до листинга я не добирался, поэтому и не заметил. Видимо, надо чистить папки "EXE", "LIST", "OBJ" при каждых изменениях. Буду так пробовать. Если снова возникнет ошибка, напишу.

P.S.
Сейчас попробовал в проекте с ошибкой очистить вышеуказанные папки и все скомпилировалось без ошибки.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.