Введение
Программирование встроенных систем (ISP), также известное как внутрисхемное последовательное программирование (ICSP), – это возможность некоторых программируемых логических устройств, микроконтроллеров, чипсетов и других встраиваемых устройств быть запрограммированными непосредственно в установленной в полноценной системе, а не требовать предварительного программирования чипа до его установки в систему. Это также позволяет осуществлять обновление прошивки во встроенной памяти микроконтроллеров и связанных с ними процессоров без использования специализированных схем программирования на печатной плате, что упрощает процесс проектирования.
In system programming (ISP), or also called in circuit serial programming (ICSP), is the ability of some programmable logic devices, microcontrollers, chipsets and other embedded devices to be programmed while installed in a complete system, rather than requiring the chip to be programmed prior to installing it into the system. It also allows firmware updates to be delivered to the on chip memory of microcontrollers and related processors without requiring specialist programming circuitry on the circuit board, and simplifies design work.
Обзор
Не существует единого стандарта для протоколов внутрисистемного программирования микроконтроллеров. Почти все производители микроконтроллеров поддерживают эту функцию, однако каждый разработал собственные протоколы, которые часто различаются даже для разных устройств одного и того же производителя. Как правило, современные протоколы стремятся минимизировать количество используемых контактов, обычно до двух. Некоторые интерфейсы ISP достигают этого, используя всего один контакт, в то время как другие используют до четырех для реализации интерфейса JTAG. Основное преимущество внутрисистемного программирования заключается в том, что оно позволяет производителям электронных устройств объединить программирование и тестирование в единый производственный этап, что позволяет экономить средства, избегая необходимости отдельного этапа программирования перед сборкой системы. Это дает возможность производителям программировать микросхемы на собственной производственной линии, а не приобретать предварительно запрограммированные микросхемы у производителей или дистрибьюторов, что позволяет вносить изменения в код или конструкцию в процессе производства. Другим преимуществом является возможность всегда использовать самую актуальную прошивку, а новые функции и исправления ошибок могут быть внедрены и запущены в производство без задержек, связанных с использованием предварительно запрограммированных микроконтроллеров. Микроконтроллеры обычно припаиваются непосредственно к печатной плате и, как правило, не имеют схем или места для подключения громоздкого внешнего программирующего кабеля к другому компьютеру. Обычно микросхемы, поддерживающие ISP, имеют встроенные схемы для генерации необходимого напряжения программирования из стандартного напряжения питания системы и обмениваются данными с программатором по последовательному протоколу. Большинство программируемых логических устройств используют вариант протокола JTAG для ISP, чтобы упростить интеграцию с автоматизированными процедурами тестирования. Другие устройства обычно используют проприетарные протоколы или протоколы, определенные более ранними стандартами. В достаточно сложных системах, требующих значительной дискретной логики, разработчики могут реализовать подсистему программирования с управлением JTAG для устройств, не поддерживающих JTAG, таких как флэш-память и микроконтроллеры, что позволяет выполнять всю процедуру программирования и тестирования под управлением единого протокола.
История
Начиная с начала 1990-х годов наблюдалась важная технологическая эволюция в архитектуре микроконтроллеров. Первоначально они реализовывались в двух вариантах: с OTP (однократно программируемой памятью) или с памятью EPROM. В этих технологиях для стирания памяти требовалось воздействие ультрафиолетового света через специальное окно в корпусе микросхемы. В 1993 году Microchip Technology представила первый микроконтроллер с памятью EEPROM – PIC16C84. Память EEPROM может быть стерта электрически. Эта особенность позволила снизить стоимость производства за счет исключения окна для стирания в корпусе и внедрения технологии внутрисхемного программирования. С помощью ISP прошивка может быть выполнена непосредственно на плате в конце производственного процесса. Это дало возможность объединить этапы программирования и функционального тестирования в производственной среде, а также начать предварительное производство плат даже до завершения разработки прошивки. Таким образом, стало возможным исправлять ошибки или вносить изменения на более поздних этапах. В том же году Atmel разработала первый микроконтроллер с флэш-памятью, которую было проще и быстрее программировать, а срок службы был значительно дольше, чем у EEPROM. Микроконтроллеры, поддерживающие ISP, обычно оснащаются выводами, используемыми периферийным устройством последовательной связи для взаимодействия с программатором, флэш-/EEPROM-памятью и схемой, обеспечивающей необходимое напряжение для программирования микроконтроллера. Периферийное устройство связи, в свою очередь, подключается к периферийному устройству программирования, которое передает команды для работы с флэш- или EEPROM-памятью. При проектировании электронных плат для ISP-программирования необходимо учитывать определенные рекомендации для обеспечения максимальной надежности процесса программирования. Некоторые микроконтроллеры с небольшим количеством выводов используют одни и те же линии для программирования и ввода-вывода. Это может стать проблемой, если при проектировании платы не будут приняты необходимые меры предосторожности; устройство может быть повреждено компонентами ввода-вывода во время программирования. Кроме того, важно подключать линии ISP к схемам с высоким импедансом, чтобы избежать повреждения компонентов программатором и потому, что микроконтроллер часто не может обеспечить достаточный ток для управления линией. Для перехода в режим программирования многим микроконтроллерам требуется выделенная линия RESET. Необходимо следить за током, подаваемым на линию управления, и проверять наличие сторожевых таймеров, подключенных к линии RESET, которые могут вызвать нежелательный сброс и, следовательно, привести к сбою программирования. Кроме того, некоторым микроконтроллерам требуется более высокое напряжение для перехода в режим программирования, поэтому необходимо убедиться, что это значение не ослабляется и что это напряжение не передается на другие компоненты на плате.
Промышленное применение
В процессе системного программирования происходит на заключительном этапе производства продукта, и его можно выполнять двумя различными способами, в зависимости от объемов производства. В первом методе коннектор подключается к программатору вручную. Это решение требует участия человека в процессе программирования, которому необходимо подключить программатор к электронной плате с помощью кабеля. Следовательно, это решение предназначено для небольших объемов производства. Второй метод использует тестовые точки на плате. Это специальные области, размещенные на печатной плате (PCB), которые электрически соединены с некоторыми электронными компонентами на плате. Тестовые точки используются для проведения функциональных тестов компонентов, установленных на плате, и, поскольку они подключены непосредственно к выводам микроконтроллера, они очень эффективны для ISP. Для средних и больших объемов производства использование тестовых точек является оптимальным решением, поскольку позволяет интегрировать этап программирования в сборочную линию. На сборочных линиях платы размещаются на контактном основании, называемом фикстурой. Фикстуры, в зависимости от объемов производства, интегрируются в полуавтоматические или автоматические системы тестирования, называемые ATE (автоматическое тестовое оборудование). Фикстуры разрабатываются специально для каждой платы или, в максимальном случае, для нескольких моделей, схожих с платой, для которой они предназначены – поэтому они взаимозаменяемы в системной среде, в которой они интегрированы. Тестовая система, после установки платы и фикстуры в нужное положение, имеет механизм для контакта игл фикстуры с тестовыми точками на плате для проведения тестирования. К системе подключен или непосредственно интегрирован ISP-программатор. Он предназначен для программирования устройства или устройств, установленных на плате, например, микроконтроллера и/или последовательной памяти.
Микрочип ICSP
Для большинства микроконтроллеров Microchip программирование ICSP выполняется с использованием двух контактов: тактового (PGC) и данных (PGD), при этом высокое напряжение (12 В) подается на контакт Vpp/MCLR. Программирование при низком напряжении (5 В или 3,3 В) не требует высокого напряжения, но резервирует исключительное использование одного из выводов ввода-вывода. Однако для новых микроконтроллеров, в частности семейств PIC18F6XJXX/8XJXX от Microchip Technology, процедура входа в режимы ICSP несколько иная. Для входа в режим ICSP Program/Verify необходимо выполнить следующие три шага:
Кратковременно подается напряжение на вывод MCLR (master clear). На вывод PGD передается 32-битная ключевая последовательность. На вывод MCLR вновь подается напряжение. Для подключения к порту ввода-вывода ПК с одной стороны и к PIC с другой требуется отдельное устройство – программатор. Ниже приведен список основных характеристик каждого типа программирования:
Voltage is briefly applied to the MCLR (master clear) pin. A 32 bit key sequence is presented on PGD. Voltage is reapplied to MCLR. A separate piece of hardware, called a programmer is required to connect to an I/O port of a PC on one side and to the PIC on the other side. A list of the features for each major programming type are:
Параллельный порт – большой и громоздкий кабель, большинство компьютеров имеют только один такой порт, и может быть неудобно переключать кабель программирования с подключенным принтером. Большинство ноутбуков, выпущенных после 2010 года, не поддерживают этот порт. Программирование через параллельный порт очень быстрое. Последовательный порт (COM-порт) – когда-то наиболее популярный метод. Последовательные порты обычно не обеспечивают достаточного напряжения питания для программирования схемы. Большинство компьютеров и ноутбуков, выпущенных после 2010 года, не поддерживают этот порт. Сокет (для программирования в схеме или вне ее) – процессор необходимо либо извлечь из платы, либо прикрепить зажим к микросхеме, что затрудняет доступ. USB-кабель – небольшой и легкий, поддерживает источник питания, и большинство компьютеров имеют свободные порты. Расстояние между программируемой схемой и компьютером ограничено длиной USB-кабеля – обычно оно должно быть менее 180 см. Это может создать проблемы при программировании устройств, расположенных глубоко внутри оборудования или шкафов. Программаторы ICSP обладают множеством преимуществ, основными из которых являются размер, доступность компьютерных портов и источник питания. Из-за различий в схемах подключения и целевых схемах, окружающих микроконтроллер, не существует универсального программатора, работающего со всеми возможными целевыми схемами и подключениями. Microchip Technology предоставляет подробное руководство по программированию ICSP. Многие сайты предлагают примеры программирования и схемы. Микроконтроллеры PIC программируются с использованием пяти сигналов (шестой вывод 'aux' предусмотрен, но не используется). Данные передаются по двухпроводной синхронной последовательной схеме, а еще три провода обеспечивают питание и управление программированием. Сигнал тактирования всегда контролируется программатором.
Сигналы и отключение
Vpp Напряжение режима программирования. Оно должно быть подключено к выводу MCLR или выводу Vpp дополнительного порта ICSP, доступного на некоторых микроконтроллерах PIC с большим количеством выводов. Для перевода PIC в режим программирования эта линия должна находиться в определенном диапазоне, который варьируется для разных PIC. Для PIC с питанием 5 В это всегда некоторое значение выше Vdd и может достигать 13,5 В. PIC, работающие только от 3,3 В, такие как серии 18FJ, 24H и 33F, используют специальную сигнатуру для входа в режим программирования, а Vpp является цифровым сигналом, который находится либо на уровне земли (GND), либо на уровне Vdd. Не существует единого напряжения Vpp, которое бы соответствовало допустимому диапазону Vpp для всех PIC. Фактически, минимальный требуемый уровень Vpp для некоторых PIC может повредить другие PIC. Vdd Положительное входное напряжение питания PIC. Некоторые программисты требуют, чтобы это напряжение обеспечивалось схемой (схема должна быть хотя бы частично включена), другие ожидают, что они сами будут управлять этой линией и потребуют отключения схемы, в то время как третьи могут быть настроены как угодно (например, Microchip ICD2). Программисты Embed Inc ожидают управления линией Vdd самостоятельно и требуют отключения целевой схемы во время программирования. Vss Отрицательное входное напряжение питания PIC и опорный ноль для остальных сигналов. Напряжения других сигналов подразумеваются относительно Vss. ICSPCLK Тактовая линия последовательного интерфейса данных. Эта линия переключается между GND и Vdd и всегда управляется программистом. Данные передаются по спадающему фронту. ICSPDAT Линия последовательной передачи данных. Последовательный интерфейс двунаправленный, поэтому этой линией может управлять либо программист, либо PIC в зависимости от текущей операции. В любом случае эта линия переключается между GND и Vdd. Бит передается по спадающему фронту PGC. AUX/PGM Новые контроллеры PIC используют этот вывод для включения программирования с низким напряжением (LVP). Поддерживая высокий уровень сигнала PGM, микроконтроллер переходит в режим LVP. Микроконтроллеры PIC поставляются с включенным LVP, поэтому, если вы используете новый чип, вы можете использовать его в режиме LVP. Единственный способ изменить режим – использовать высоковольтный программист. Если вы программируете микроконтроллер без подключения к этому выводу, режим остается неизменным.
Вывод RJ11
Промышленный стандарт использования разъемов RJ11 с ICSP-программитором поддерживается компанией Microchip. Иллюстрация отражает информацию, представленную в их документации. Однако это может ввести в заблуждение. В документации PIC показан инвертированный разъем и отсутствует схематичное изображение расположения выводов, поэтому неясно, с какой стороны разъема находится контакт 1. Приведенная здесь иллюстрация не тестировалась, но использует стандартную распиновку, принятую в телефонной индустрии (разъем RJ11 изначально был разработан для проводных настольных телефонов).