Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-дек-16 15:51

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 2013-авг-30 13:49 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 76
Откуда: Новосибирск
Собираю программу для МК 1986ВЕ91Т в CodeMaster-ARM v 2.32.00.
Транслятор C выдаёт ошибку "Fatal[C0] Main.c(651,0): INTERNAL ERROR. PLEASE CONTACT TECHNICAL SUPPORT"
в строке с последним оператором return в модуле Main. Если закомментировать эту строку, та же ошибка выдаётся в строке с предыдущим оператором return.
Пробовал изменять режим оптимизации - не помогло.
Что ещё можно сделать?


Вложения:
Project.zip [25.65 КБ]
Скачиваний: 120

_________________
Странник
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2013-сен-03 10:22 
Не в сети
Moderator

Зарегистрирован: 2010-мар-31 10:44
Сообщения: 54
Откуда: ООО "Фирма Фитон"
stranderer писал(а):
Собираю программу для МК 1986ВЕ91Т в CodeMaster-ARM v 2.32.00.
Транслятор C выдаёт ошибку "Fatal[C0] Main.c(651,0): INTERNAL ERROR. PLEASE CONTACT TECHNICAL SUPPORT"
в строке с последним оператором return в модуле Main. Если закомментировать эту строку, та же ошибка выдаётся в строке с предыдущим оператором return.
Пробовал изменять режим оптимизации - не помогло.
Что ещё можно сделать?

Спасибо. Это ошибка компилятора MCC-ARM, она будет исправлена в ближайших релизах. Ошибка проявляется в экзотических случаях размещения статических переменных и непосредственно связана с присваиванием и использованием статической переменной в одном и том же выражении, содержащем арифметический условный оператор ("?:"). В качестве временного обхода, в файле Main.h можно переопределить макрос:
Код:
#define sSet(idx,v) StateFlg = ((int)(v))? StateFlg | (1 << (int)(idx)) : StateFlg & ~(1 << (int)(idx))

следующим образом:
Код:
#define sSet(idx,v)  do {unsigned int tmp = ((int)(v))? StateFlg | (1 << (int)(idx)) : StateFlg & ~(1 << (int)(idx)); StateFlg = tmp; } while(0)

В процессе проверки была обнаружена ошибка в присланном Вами проекте. В файле D5050501.h в строке 100 присутствует директива #endif, которой не соответствует никакой директивы #if или #ifdef.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2013-сен-03 22:16 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 76
Откуда: Новосибирск
Спасибо! Эту ошибку я ещё не увидел, поскольку компиляция не доходит до этого места.

Тем временем наткнулся на ещё одну странную ситуацию в другом проекте (прилагаю):
При компиляции модуля CoDecD5010301 С-транслятор зацикливается, на мониторе ресурсов системы видно, как свободная память постепенно сокращается (будь её хоть 1.5 ГБ, хоть все 4), и когда её совсем не остаётся, выдаётся ошибка:

Компиляция Main.c,D5010301.c,CoDecD5010301.c,ActnD5010301.c
Fatal[C0] CoDecD5010301.c(1,0): (CPP) Not enough memory ("Token")

(иногда перед этим сообщением ещё выскакивает окошко "Abnormal programm termination")

При этом файл листинга данного модуля, разумеется, пустой, а файл препроцессора содержит только первую функцию модуля, да и то не до конца.
Я склонен считать, что это всё же ошибка среды, а не моя. Хотя и я, конечно, мог что-то не то наваять, потому что непросто мне переходить с Паскаля на С... :-)


Вложения:
Project-03.zip [36.22 КБ]
Скачиваний: 134

_________________
Странник
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2013-сен-10 07:59 
Не в сети
Moderator

Зарегистрирован: 2010-мар-31 10:44
Сообщения: 54
Откуда: ООО "Фирма Фитон"
stranderer писал(а):
При компиляции модуля CoDecD5010301 С-транслятор зацикливается, на мониторе ресурсов системы видно, как свободная память постепенно сокращается....

Спасибо. Это тоже ошибка компилятора и, так же, будет исправлена в ближайших релизах. Ошибка вызвана некорректным исходным кодом Вашей программы (см. CoDecD5010301.c, строка 119 - не хватает закрывающей скобки).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB