|
MPLab - несовместимость версий? |
|
|
|
Sep 20 2015, 20:09
|
Местный
  
Группа: Свой
Сообщений: 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 проекты. Не хотелось бы тупо пробовать разные версии, пока не заработает. В общем, подскажите, друзья, кто что знает.
|
|
|
|
|
 |
Ответов
|
Sep 22 2015, 23:31
|
Местный
  
Группа: Свой
Сообщений: 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 интерфейса - результат один и тот же. Что ваш мозг на это скажет? Хотя дизассемблировать ради интереса все же попробую, когда со временем посвободнее будет. Дизассемблер посоветуете?
|
|
|
|
Сообщений в этой теме
FPGA MPLab - несовместимость версий? Sep 20 2015, 20:09 Redguy Добрый день!
Самому мне не приходилось ни разу... Sep 21 2015, 06:29 One а что, Ваш программатор только из под IDE работает... Sep 21 2015, 06:41 FPGA Во-первых, спасибо всем откликнувшимся.
Цитата(Red... Sep 22 2015, 01:18 ViKo Никакая версия MPLAB не может испортить hex. В кон... Sep 22 2015, 05:55  Ruslan1 Извините, но это полтергейст какой-то. Не может пр... Sep 23 2015, 20:52 Redguy Выскажу частное предположение. Может быть затык св... Sep 23 2015, 06:42 One вероятно в более "свежих" версиях IDE вн... Sep 23 2015, 07:07 FPGA Друзья, большое человеческое вам всем спасибо... Sep 24 2015, 01:51
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|