Доброго времени суток!
Обращаюсь ко всем, имеющим опыт работы с версиями 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 проекты. Не хотелось бы тупо пробовать разные версии, пока не заработает. В общем, подскажите, друзья, кто что знает.