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

 
 
> Иногда выскакивает ошибка 117
IF_P
сообщение Mar 31 2011, 10:18
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



При работе с программой иногда выскакивает ошибка 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dxp
сообщение Apr 5 2011, 03:01
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



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

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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
IF_P
сообщение Apr 5 2011, 15:40
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



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

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

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

IAR 4.30A


P.S.

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



Сообщение отредактировал IF_P - Apr 5 2011, 18:09
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  ERR.RAR ( 49.66 килобайт ) Кол-во скачиваний: 15
Прикрепленный файл  NORM.RAR ( 47.09 килобайт ) Кол-во скачиваний: 10
 
Go to the top of the page
 
+Quote Post
dxp
сообщение Apr 6 2011, 05:52
Сообщение #4


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(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.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post



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

 


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


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