Миландр

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

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Ошибка фитоновского линкера?
СообщениеДобавлено: 2015-июл-02 17:42 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
Несколько раз замечал, что какие-то функции в проектах для 1986ВЕ91Т работают со странными ошибками (например в отладчике видно, что прошла команда формирования сигнала на выходе порта МК, но на осциллографе этот сигнал не наблюдается).
С помощью отладчика среды CodeMaster-ARM выяснил, что к таким ошибкам приводит загрузка в регистры Ri кусков кода вместо адресов переменных.
Из файлов .lst и .src видно, что после кода почти каждой C-функции размещены несколько констант с именами вида ?lrNNNN ("широкие" данные и адреса, которые "не лезут" в тело THUMB-инструкций), но когда я просматриваю загруженную в МК программу с помощью дизассемблера, то вижу, что иногда последняя константа в такой группе отсутствует -- после предпоследней сразу начинается код следующей функции, причём начинается именно по тому адресу, который указан в .map-файле, т.е. скорее всего это ошибка линковщика.
В некоторых случаях такую ошибку удавалось обойти, например меняя местами функции или используя вместо константы глобальную переменную, но это способ ненадёжный и "неправильный".
В приложенном проекте обнаружено отсутствие в модуле ACTNN6770101 по адресу 0x080003D4 константы ?lr0006, содержащий адрес массива CosXY, вместо неё по этому адресу начинается код функции WritePhases. В результате неверно работает функция CalcPhases. Для наглядности в архиве имеется xls-таблица с результатами исследования данного модуля проекта.
Как (кроме "метода тыка") можно бороться с такими ошибками? Может быть кто-нибудь уже сталкивался с этим?


Вложения:
Project-01.zip [276.02 КБ]
Скачиваний: 70

_________________
Странник
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка фитоновского линкера?
СообщениеДобавлено: 2015-июл-09 15:27 
Не в сети
Moderator

Зарегистрирован: 2015-июл-09 15:09
Сообщения: 10
Откуда: ООО "Ангиоскан-Электроникс"
Здравствуйте,

Мне не удаётся воспроизвести описанный Вами эффект. Все ?lr000x стоят на своих местах. Возможно наблюдаемый Вами эффект как-то связан с расположением файлов проекта и используемой библиотекой драйверов периферии. не могли бы Вы выложить каталоги "sb_Common" и "D:\USERS\CM3.prj\SysInc\MDR32F9x", которые Вы используете в проекте. Кроме того, если у Вас есть загружаемый файл (*mce или *.elf) с отладочной информацией, на котором воспроизводится описанное поведение, то, пожалуйста, выложите его тоже.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка фитоновского линкера?
СообщениеДобавлено: 2015-июл-10 14:53 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
Архив с папкой Миландровской библиотеки (D:\USERS\CM3.prj\SysInc\MDR32F9x) прилагаю.
В папке "D:\USERS\CM3.prj\sb_Common" лежат модули, одинаковые для всех пяти проектов: startup_device_m3.mca; DeclMCU.h; DeclMCU.c; Main.h; Main.c - я их скопировал в подпапку "\Project-01" просто для удобства архивации.
Остальные файлы исходно лежали в папке "D:\USERS\CM3.prj\sb_N6_77_01_01", я их скопировал в подпапку "\Project-01" для фиксации версии, так как в рабочем проекте я уже поменял порядок функций в проблемном модуле, что позволило обойти указанную ошибку -- теперь все константы лежат на месте.
Файлы sbN6770101.HEX и sbN6770101.mce я вроде положил в архив вместе со всем проектом. Разве нет?
Ещё (на всякий случай) прикладываю последнюю версию файла *.ide, в нём я ничего не менял...


Вложения:
sbN6770101ide.zip [5.68 КБ]
Скачиваний: 55
MDR32F9x.zip [86.93 КБ]
Скачиваний: 87

_________________
Странник
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка фитоновского линкера?
СообщениеДобавлено: 2015-июл-13 16:54 
Не в сети
Moderator

Зарегистрирован: 2015-июл-09 15:09
Сообщения: 10
Откуда: ООО "Ангиоскан-Электроникс"
Здравствуйте.

Спасибо за выложенные файлы.
Это ошибка компилятора, которая будет исправлена в ближайшем релизе CodeMaster-ARM.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка фитоновского линкера?
СообщениеДобавлено: 2015-июл-14 17:01 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
Спасибо! Будем ждать...

_________________
Странник


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка фитоновского линкера?
СообщениеДобавлено: 2017-мар-16 22:43 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
Говорят, что обещанного 3 года ждут. Последняя версия CodeMaster-ARM вышла 30.09.2013, с тех пор прошло уже больше 3 лет. Хотелось бы знать, каков прогноз? Когда ожидается следующая версия, в которой найденные ошибки уже исправлены?

_________________
Странник


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


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

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