Загрузить HEX в микроконтроллер PIC

Методические рекомендации,
приводящие в порядок рутину совместных работ
Ответить
Аватара пользователя
shatskikh
Начальник лаборатории
Начальник лаборатории
Сообщения: 136
Зарегистрирован: 03 мар 2020, 15:47
Откуда: НИЯУ МИФИ
Контактная информация:

Загрузить HEX в микроконтроллер PIC

Сообщение shatskikh »

Контрактное производство электроники иногда сопряжено с ситуациями, при которых разработанное устройство уже отправлено заказчику, но по результатам приёмо-сдаточных испытаний или последующей опытной эксплуатации стороны принимают решение изменить алгоритм работы изделия. Подобные обстоятельства возникают из-за сложности учёта нюансов на этапе согласования технического задания, которое является неотъемлемым атрибутом при материализации идей в реальном секторе экономики.

Решение: дополнить существующий механизм удалённой поддержки своих разработок новой инструкцией, в которой способ подачи материала и терминология ориентированы на человека, не обладающего специфическими знаниями по электронике и программированию, но, не смотря на это, ему поставлена задача: записать в микроконтроллер новую версию программного обеспечения, то есть «залить прошивку».

Если у Читателя присутствует некий пиетет, определённый страх или даже сакральность (мало ли!) перед аппаратным интеллектом, то низвести загрузку «прошивки» до рутинного производственного процесса поможет аналогия: обыватель весьма абстрактно представляет девиацию несущей в частотном диапазоне 2,4 ГГц и структуру транзакций протокола TCP-IP, но это не мешает ему периодически загружать обновления на свой домашний WiFi роутер.
Аватара пользователя
shatskikh
Начальник лаборатории
Начальник лаборатории
Сообщения: 136
Зарегистрирован: 03 мар 2020, 15:47
Откуда: НИЯУ МИФИ
Контактная информация:

Re: Загрузить HEX в микроконтроллер PIC

Сообщение shatskikh »

Настоящая инструкция содержит типовой алгоритм действий при загрузке (записи, обновлении) программного обеспечения микроконтроллеров семейств PIC10, PIC12, PIC16, PIC18, PIC24, dsPIC30/33 и PIC32 от компании Microchip Technology Inc. Дальнейшие аппаратные и программные манипуляции описываются на базе компьютера под управлением операционной системы Windows 7, 64-битная версия.

Для загрузки «прошивки» в микроконтроллер потребуются:
  1. интегрированная среда разработки MPLAB® X IDE от Microchip;
  2. программатор и отладчик PICkitTM3;
  3. интерфейсный кабель USB 1.0-2.0 с разъемами «тип A» и «тип Mini-B»;
  4. 6-и жильный сигнальный кабель DuPont;
  5. плата с PIC'ом, поддерживающая внутрисхемное программирование ICSPTM.

Описанная ниже методика является гарантированно рабочей, но это не делает её уникальной или исключающей другие способы загрузки кода в микроконтроллер: «залить прошивку» можно и через Linix, и с применением командной строки альтернативного «софта», и подключив сторонний программатор (в том числе аналог PICkitTM3 из Поднебесной) - это вопрос навыков и предпочтений.

Изображение
Аватара пользователя
shatskikh
Начальник лаборатории
Начальник лаборатории
Сообщения: 136
Зарегистрирован: 03 мар 2020, 15:47
Откуда: НИЯУ МИФИ
Контактная информация:

Re: Загрузить HEX в микроконтроллер PIC

Сообщение shatskikh »

Программатор и отладчик PICkitTM3 представляет собой простое и недорогое устройство, которое используется в качестве аппаратной основы при разработке, отладке и эмуляции программного обеспечения микроконтроллеров Microchip, поддерживающих последовательное внутрисхемное программирование ICSPTM.

Для подключения к компьютеру PICkitTM3 содержит интерфейсный разъем USB mini-B, а для подключения к отлаживаемой плате - сигнальный разъем PBS-06R (6-и контактная угловая рядная розетка с шагом 2,54 мм). Программатор желательно подключать напрямую к разъему ICSPTM, но если нет возможности - использовать кабель DuPont минимальной длины: до 300 мм чтение/запись осуществляются без проблем, при большей длине возможны ошибки.

К основным функциям PICkitTM3 относятся:
  • поддержка микроконтроллеров PIC10, PIC12, PIC16, PIC18, PIC24, dsPIC30/33, PIC32;
  • подключение по USB, используя стандартные драйвера Windows;
  • отладка программного обеспечения в режиме реального времени;
  • встроенный монитор перенапряжения и короткого замыкания;
  • поддержка микроконтроллеров в широком диапазоне питающих напряжений от 1,8 до 5 вольт;
  • диагностическая светодиодная индикация;
  • чтение/запись памяти программ и памяти данных микроконтроллера;
  • стирание всех типов памяти (EEPROM, FLASH, ID, конфигурация) с подтверждением;
  • фиксация состояния периферии в точке останова.
Изображение

Описание контактов сигнального разъема PICkitTM3 (первый контакт обозначен белым треугольником на корпусе):

PICkitTM3СигналНазначение
1MCLRVppНапряжение программирования
2VddTargetКонтроль напряжения питания микроконтроллера
3VssGroundОбщий (земля)
4PGDICSPDATСигнал данных
5PGCICSPCLKТактовый сигнал
6PGMLVPНизковольтное программирование

Документация от Microchip:
  1. PICkitTM3 Programmer/Debugger User’s Guide, DS51795B
  2. In-Circuit Serial ProgrammingTM (ICSPTM) Guide, DS30277D
Аватара пользователя
shatskikh
Начальник лаборатории
Начальник лаборатории
Сообщения: 136
Зарегистрирован: 03 мар 2020, 15:47
Откуда: НИЯУ МИФИ
Контактная информация:

Re: Загрузить HEX в микроконтроллер PIC

Сообщение shatskikh »

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

Для обеспечения прозрачности финансовой стороны инженерной деятельности, а также с целью уменьшить издержки при сопровождении жизненного цикла своих изделий принял решение: присвоить каждой разработанной печатной плате уникальный идентификатор, под которым она (а также основанное на её базе устройство) будет «жить», начиная от разработки конструкторской документации и заканчивая накладными на отгрузку готовой продукции.

Внедрение этой идентификации формировалось посредством творческих экспериментов, но сейчас глифы на печатной плате унифицированы как по структуре, так и по начертанию. Размещается вышеописанный идентификатор в верхнем или нижнем сигнальном слое печатной платы и формируется по шаблону: текстовый префикс «sva» (первые буквы из Shatskikh Vladimir Aleksandrovich) и шестизначный числовой код. Примеры идентификаторов: sva172605, sva217903, sva243308. а их отображение в программе для разработки топологии (P-CAD, слой bottom), на готовом текстолите и в бухгалтерских документах следующее:

Изображение
Аватара пользователя
shatskikh
Начальник лаборатории
Начальник лаборатории
Сообщения: 136
Зарегистрирован: 03 мар 2020, 15:47
Откуда: НИЯУ МИФИ
Контактная информация:

Re: Загрузить HEX в микроконтроллер PIC

Сообщение shatskikh »

Для исключения ошибок при коммутации программатора необходимо на разработанной печатной плате обозначить все контакты разъема внутрисхемного программирования ICSPTM, который должен быть рядной 6-и контактной вилкой с шагом 2,54 миллиметра (тип PLS-06). Такой вариант подключения задействует 4 вывода микроконтроллера, а возможности PICkitTM3 будут доступны как в режиме низко-, так и высоковольтного программирования.

Однако, реальность полнится нюансами, вынуждая оптимизировать способ подключения программатора и видоизменять разъем внутрисхемного программирования, при этом сохраняя взаимное расположение контактов ICSPTM на печатной плате. Несколько примеров из практики:
  • ограничено место на печатной плате или требуется освободить вывод микроконтроллера: использовать режим только высоковольтного программирования - задействованы 3 (вместо 4) вывода микросхемы и можно сократить ICSPTM до 5 контактов;
  • высота стандартного разъема ICSPTM превышает максимально допустимый габарит: использовать такую же рядную вилку, но в угловом исполнении PLS-06R - высота разъема над уровнем печатной платы уменьшается с 8,5 до 2,54 мм.;
  • разъем внутрисхемного программирования устанавливать нельзя (изменяется балансировка, нарушается внутренняя конвекция и др.) или на печатной плате нет маркировки: в сигнальном слое печатной платы первый контакт посадочного места под разъем ICSPTM сделать в виде квадратной площадки - при идентификации цоколёвки ошибки исключены.
Изображение
Аватара пользователя
shatskikh
Начальник лаборатории
Начальник лаборатории
Сообщения: 136
Зарегистрирован: 03 мар 2020, 15:47
Откуда: НИЯУ МИФИ
Контактная информация:

Re: Загрузить HEX в микроконтроллер PIC

Сообщение shatskikh »

Внутренняя память микроконтроллеров Microchip, предназначенная для хранения управляющей программы («прошивки»), является энергонезависимой и локализована в трёх тематических разделах: конфигурационная память, программная память и память пользователя - первые две изготавливаются по технологии FLASH, а третья по EEPROM.
  • Конфигурационная память содержит настройки ядра микроконтроллера, на основании которых функционирует конвейер команд: выбор тактового сигнала, фазовая автоподстройка частоты PLL, аппаратные делители/умножители, биты защиты и т.д.
  • Программная память содержит пользовательские команды, которые адаптированы компилятором в машинные инструкции для целевого микроконтроллера - выполнение этих команд формирует алгоритм работы устройства в целом.
  • Память пользователя предназначена для долговременного хранения изменяемых значений программы пользователя: таблицы калибровки детекторов, настройки устройства в процессе эксплуатации, параметры технологического процесса и др.
«Прошивка» для моих устройств предоставляется в виде файла и является самодостаточной, то есть содержит все необходимые данные с форматированием под разделы внутренней памяти целевого микроконтроллера: от пользователя требуется только выбрать название микросхемы - без установки бит конфигурации, без выбора адресов памяти и иных действий.

Имя файла «прошивки» формируется по шаблону hexИИИИИИ_ГГММДД_ХХХ.hex, где:

ПолеШиринаНазначениеДиапазон
hex3неизменяемый префикс файла
ИИИИИИ6цифровой код из идентификатора печатной платы000001..999999
ГГ2две последние цифры года формирования «прошивки»00,01..99
ММ2месяц формирования «прошивки»01,02..12
ДД2день месяца формирования «прошивки»01,02..31
ХХХ1..100краткое описание внесённых изменений
hex3фиксированное расширение файла

Например, файл hex174308_210524_usb.hex содержит «прошивку», которая:
  1. предназначена для устройства с идентификатором sva174308;
  2. сформирована 24 мая 2021 года;
  3. изменения в ней касаются алгоритма работы USB.
Аватара пользователя
shatskikh
Начальник лаборатории
Начальник лаборатории
Сообщения: 136
Зарегистрирован: 03 мар 2020, 15:47
Откуда: НИЯУ МИФИ
Контактная информация:

Re: Загрузить HEX в микроконтроллер PIC

Сообщение shatskikh »

Ещё не готово ...

Здесь будет краткое пояснение концептуальных моментов применительно к ПО.

Почему версия 5.45 у MPLAB® X IDE? Потому что является одной последних, которая работает на 32-х и на 64-битных Windows, в том числе на Windows XP.

выбор напряжений питания

Изображение
Аватара пользователя
shatskikh
Начальник лаборатории
Начальник лаборатории
Сообщения: 136
Зарегистрирован: 03 мар 2020, 15:47
Откуда: НИЯУ МИФИ
Контактная информация:

Re: Загрузить HEX в микроконтроллер PIC

Сообщение shatskikh »

Ещё не готово ...

1. Сначала необходимо импортировать «прошивку» в MPLAB® X IDE - для этого в меню главного окна выбрать «File > Import > HEX/ELF...(Prebuilt) File»:

Изображение

2. Затем выбрать аппаратную основу проекта - для этого в появившемся окне заполнить поля:
2.1. Prebuilt Filename - файл «прошивки»;
2.2. Family - семейство микроконтроллеров;
2.3. Device - марка микроконтроллера;
2.4. Hardware Tool - идентификатор программатора PICkit3TM (обычно содержит серийный номер).

Изображение

3. После этого выбрать имя проекта и расположение папки с файлами проекта:
3.1. Project Name - символьное имя, которое будет использоваться для создания папки с файлами проекта;
3.2. Project Location - путь на диске компьютера, где будет создана папка с файлами проекта по п.3.1.

Изображение

4. В результате вышеописанных действий должно появиться окно-вкладка «Output - [название проекта по п.3.1]» с сообщением «Loading completed» (Загрузка завершена). Расположение окна-вкладки может отличаться из-за индивидуальных настроек программы.

Изображение

5. Для записи «прошивки» в микроконтроллер необходимо нажать на стрелку около кнопки загрузки (в инструментальной панели - см. рисунок) и в выпадающем списке выбрать пункт «Make and Program Device (Project [название проекта по п.3.1])» (Подготовить и запрограммировать устройство):

Изображение

6. В результате успешного программирования микроконтроллера должно появиться окно-вкладка «Output» с сообщением «Programming/Verify complete» (Программирование и проверка завершены).

Изображение
Ответить