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

 
 
> MPLab - несовместимость версий?
FPGA
сообщение Sep 20 2015, 20:09
Сообщение #1


Местный
***

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



Доброго времени суток!
Обращаюсь ко всем, имеющим опыт работы с версиями MPLab IDE разных лет. Проблема такая. Имеется прошивка для PIC16F877, разработанная в 2002 году. Код был написан на C с небольшими вставками на ассемблере, среда разработки MPLab v5.20 (или что-то около) в связке с компилятором HI-TECC PICC (версию назвать сейчас трудно, но что-то около v8.86). Все прекрасно прошивалось в течение многих лет, устанавливались свежие версии MPLab без каких-либо проблем, и все продолжало нормально прошиваться. Потом прибор прекратили выпускать и долгое время не трогали, при этом продолжая освежать на рабочем компе MPLab по мере необходимости. Недавно нам заказали новую партию приборов, и тут оказалось, что прошитые с использованием оригинального файла контроллеры работать отказываются. Начали разбираться. Проверили контрольную сумму hex-файла в архиве и на мастер-диске с помощью MPLab v8.12, в данное время установленной на производственном компе. Оба результата были одинаковыми, но не совпали с ожидаемой суммой. После этого прочитали прошивку исправного прибора с помощью той же v8.12, значение контрольной суммы совпало с ожидаемым. Казалось бы, это проблема архивных файлов, но дело в том, что при прошивании процессора специальная утилита подсчитывает CRC прошивки и добавляет ее значение в записываемый дамп, чтобы процессор мог проверить прошивку во время самотестирования. Так вот CRC всех трех файлов оказалась одинаковой и в точности той, что ожидалась. После этого нашли очень старый комп с древней версией MPLab и прошили несколько контроллеров файлом из архива. Все прошло идеально. Но при использовании v8.12 заработал только контроллер, прошитый файлом, слитым с рабочего прибора. Также оказалось, что размер hex-файла, слитого с рабочего прибора версией 8.12, отличается от размера архивных копий. В итоге был сделан вывод, что файл, созданный ранней версией MPLab, трактуется как-то иначе более свежей версией.

Вопрос - встречался ли кто-нибудь с подобной проблемой, что старые hex-файлы при заливке более свежей версией MPLab перестают работать на железе, с которым раньше работали? Возможно, Microchip изменил метод подсчета контрольной суммы или что-то еще, в результате чего более свежие версии MPLab иначе трактуют старые hex-файлы. Если что-то подобное имело место, может, у кого есть официальные микрочиповские документы или апноты на этот счет, подтверждающие данное предположение. Перекомпилировать проект под более свежей версией MPLab не вариант, т.к. потребуется дорогостоящая пересертификация, чего хотелось бы избежать. Старый же комп с древней версией MPLab более не доступен, так что использовать его тоже не вариант. Похоже, что надо откатить назад версию MPLab, но хотелось бы не откатываться дальше, чем нужно, т.к. на компе программируют и другие, более свежие, MPLab проекты. Не хотелось бы тупо пробовать разные версии, пока не заработает. В общем, подскажите, друзья, кто что знает.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
FPGA
сообщение Sep 22 2015, 23:31
Сообщение #2


Местный
***

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



Цитата(ViKo @ Sep 22 2015, 09:55) *
Никакая версия MPLAB не может испортить hex. В конце концов, его же элементарно можно восстановить-дизассемблировать усилием мозга.

Довольное смелое заявление, учитывая, что наблюдается явно обратное. Восстанавливать ничего не требуется, из обходных вариантов имеется файл, слитый с живого прибора. Так что "усилие мозга" лучше потратить, чтобы понять, как восстановить работоспособность системы с оригинальным архивным файлом. И вот если бы ваш мозг мог в этом посодействовать, это было бы свидетельством преимуществ коллективного разума.

Цитата(ViKo @ Sep 22 2015, 09:55) *
А вот сами микроконтроллеры могут слегка измениться - технологии меняются = быстродействие, дополнительные периферийные устройства, диапазоны частот и напряжений. Добавляют буковку A в конец, и программа уже не работает.

Да все буковки проверены уже 100500 раз, тем более, что в среде можно выбрать вариант и с буковкой, и без. На сегодня факт непреложен - один и тот же файл, залитый в одну и ту же микросхему, работает при заливке одной версией MPLAB, старой, и не работает при заливке другой, более свежей. Вы можете возразить, что кривой комп, так вот отвечаю - с более свежей версией пробовали на нескольких компах, меняли ICD2, USB кабель, кабель ICSP интерфейса - результат один и тот же. Что ваш мозг на это скажет? Хотя дизассемблировать ради интереса все же попробую, когда со временем посвободнее будет. Дизассемблер посоветуете?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 23 2015, 09:17
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(FPGA @ Sep 23 2015, 02:31) *
Хотя дизассемблировать ради интереса все же попробую, когда со временем посвободнее будет. Дизассемблер посоветуете?

А hex файл, прочитанный в MPLab, не представляется в виде команд? У меня не стоит, не помню.
Согласен с Redguy - не задано сохранение конфигурации в hex. А как насчет EEPROM?
Go to the top of the page
 
+Quote Post



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

 


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


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