Главная Продукция Новое П.О. и Демо Цены/Заказ Поддержка Контакты/О нас

Корзина

Программирование микроконтроллеров

 

Программирование микроконтроллеров

Термин программирование микроконтроллеров обозначает процесс записи (программирования) информации в постоянное запоминающее устройство (ПЗУ) микроконтроллера. В общем случае, помимо программирования микроконтроллеров, в практике встречается программирование микросхем (мс.) памяти и программирование логических матриц.  Как правило, программирование микроконтроллеров и микросхем памяти производится при помощи специальных устройств – программаторов. Хороший программатор позволяет не только программировать (записывать), но и считывать информацию, а в ряде случаев, производить и другие действия с мс. и информацией находящейся в ней (стирание, защита от чтения, защита от программирования и т.п.).

Используя различные признаки, все многообразие мс. со встроенным ПЗУ можно систематизировать следующим образом:

1.   По функциональному назначению

1.1.   Микросхемы памяти;

1.2.   Микроконтроллеры с внутренним ПЗУ;

1.3.   Микросхемы программируемой логики (программируемые матрицы).

2.   По возможности программирования

2.1.   Однократно программируемые - устройства допускающие единственный цикл программирования;

2.2.   Многократно программируемые (перепрограммируемые) - устройства допускающие множество циклов программирования (перепрограммирования). 

3.   По допустимым способам программирования

3.1.   Микросхемы, программируемые в специальном устройстве – программаторе. Для осуществления необходимой операции (запись, стирание, чтение, верификация и т.п.), подобные мс. вставляются в специальную колодку программатора, обеспечивающую электрический контакт со всеми выводами микросхемы. Для реализации выбранного режима, программатор формирует в соответствии со спецификацией производителя необходимые последовательности сигналов, которые через колодку подаются на определенные выводы программируемого микроконтроллера (микросхемы).

3.2.   Микросхемы, поддерживающие режим внутрисхемного программирования (“ISP mode”), и программируемые непосредственно в плате пользователя.
Подобные микросхемы предполагают выполнение необходимой операции (программирование, стирание, чтение, верификация и т.п.) непосредственно в плате пользователя. Все действия по программированию (стиранию, чтению, верификации и т.п.) производятся с помощью внешнего программатора, определенным образом подключенного к плате пользователя. При этом плата пользователя должна быть разработана с учетом специфических требований данного режима.

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

Программирование микроконтроллера подразумевает заполнение внутренней памяти микроконтроллера нужной информацией. В зависимости от типа программируемого микроконтроллера, внутренняя память микроконтроллера обладает своей структурой и организацией. В общем случае, внутренняя память микроконтроллера это: память данных, память программ, регистры специального назначения (fuse - биты) - содержимое которых определяет режимы работы микроконтроллера и/или его периферии. Таким образом: программирование микроконтроллера - это заполнение каждой области памяти своей специфической информацией.

Каждый программируемый микроконтроллер обладает своим индивидуальным набором допустимых режимов:
программирование (запись), чтение, стирание, защита от чтения, защита от программирования и т.п.

Некоторые программируемые микроконтроллеры не имеют отдельного режима «стирание». Для них стирание прежней информации в памяти происходит в теневом режиме, при каждом новом цикле программирования микроконтроллера; 

Некоторые программируемые микроконтроллеры поддерживают различные режимы ограничения доступа. Выбор режима ограничения доступа производится при программировании микроконтроллера. В зависимости от выбранного режима, либо все ПЗУ микроконтроллера, либо его определенные части могут быть:

  1. - защищены от возможности записи/дозаписи;
  2. - защищены от возможности считывания содержимого извне. При попытке считать информацию, защищенный микроконтроллер будет выдавать либо «мусор», либо «все 0», либо «все 1».

Говоря о программируемых устройствах, можно считать общепринятой следующую систему мнемонических обозначений:

  1. PROM (Programmable Read-Only Memory) - программируемая пользователем энергонезависимая память (ПЗУ).
  2. EPROM (Erasable Programmable Read-Only Memory) - перепрограммируемое ПЗУ. Стирание содержимого производится при помощи ультрафиолетовых лучей, после облучения подобное ПЗУ готово к новому циклу записи информации (программированию). Устаревший тип памяти.
  3. EEPROM (Electrically Erasable Programmable Read-Only Memory) - электрически стираемое перепрограммируемое ПЗУ. Память такого типа может стираться и заполняться данными многократно, от несколько десятков тысяч раз до миллиона.
  4. FLASH (Flash Memory) - одна из технологических разновидностей энергонезависимой перезаписываемой памяти.
  5. NVRAM (Non-volatile memory) - «неразрушающаяся» память, представляющая собой ОЗУ со встроенным источником электропитания. По своей функциональности для пользователя – аналогична традиционному ПЗУ.
  6. PLD (Programmable Logic Device) - Программируемая логическая интегральная схема. (ПЛИС).
  7. MCU (Microcontroller Unit) – микроконтроллер.

 

Универсальный программатор - основные понятия для начинающих

Программатор это программно аппаратное устройство, предназначенное для записи (программирования) информации в ПЗУ микроконтроллеров, микросхем памяти, PLD. Программатор должен обеспечивать и возможность считывания информации из ПЗУ. Наряду с основными режимами записи и чтения, многие программируемые микросхемы имеют ряд дополнительных режимов: стирание, защита от чтения, защита от программирования и т.п. Принято считать, что программатор поддерживает микросхему, если он обеспечивает работу с микросхемой во всех режимах, предусмотренных разработчиком данной микросхемы.

Для выполнения своих функций, программатор, как минимум должен содержать:

- колодку, в которую можно вставить выбранную микросхему. Колодка должна обеспечивать электрический контакт с выводами микросхемы;

- интерфейс, позволяющий осуществлять ввод/вывод записываемой и считываемой информации;

 - программно аппаратные драйвера, способные формировать и считывать логические уровни и сложные тактовые сигналы.

Рассмотрим некоторые классификации программаторов по следующим параметрам.

По типу поддерживаемых устройств

  1. Специализированные программаторы. Программаторы, обеспечивающие программирование микроконтроллеров и/или памяти только одного типа или одного производителя.
  2. Условно универсальные программаторы. Программаторы, обеспечивающие программирование микроконтроллеров и/или памяти различных типов и производителей.
  3. Универсальные программаторы. Программаторы, обеспечивающие программирование микроконтроллеров памяти и PLD всех типов и производителей.

Очевидно, чем более широк спектр поддерживаемых устройств, тем более сложная программно аппаратная реализация программатора.

Аппаратная часть наиболее простых программаторов, позволяющих запрограммировать микроконтроллеры одной серии, как правило, представляет собой кабель и несколько резисторов, которые подключаются к одному из портов PC. 

Универсальный программатор строится на базе универсальных аппаратных драйверов. Аппаратные драйвера подключаются к выводам колодки, и должны обеспечивать:
- подачу и считывание логических уровней;
- подачу сложных тактовых последовательностей в широком диапазоне частот;
- подачу напряжения в широком диапазоне и с высокой точностью.

В общем случае, чем более универсальны аппаратные драйвера, и чем больше их количество - тем более универсален программатор.

По способу программирования

  1. Параллельные программаторы. Программирование микроконтроллеров (памяти, PLD)  происходит в колодке программатора;
  2. Внутрисхемные программаторы. Программирование микроконтроллеров (памяти, PLD) происходит непосредственно в устройстве пользователя (режим внутрисхемного программирования).

Параллельный программатор. Для того, что бы произвести необходимые действия с микросхемой, ее надо вставить в колодку программатора. Затем, в программной оболочке программатора выбрать соответствующий тип поддерживаемой микросхемы, после этого, запустить на исполнение необходимый режим (программирование, чтение, стирание, защита, программирование фьюзов, и т.п.).

Колодка программатора должна обеспечивать надежный электрический контакт между выводами микросхемы и аппаратными драйверами программатора. Как правило, универсальный программатор оснащается колодкой под DIP корпус микросхемы. Наиболее надежными и удобными для пользователя являются специальные колодки (сокетки) с нулевым усилием - (ZIF socket).

Для программирования микроконтроллеров (памяти, PLD) с корпусами, отличными от DIP, необходимо использовать специальные переходные адаптеры.

Внутрисхемный программатор. Внутрисхемное программирование возможно только тех устройств, которые рассчитаны на данный режим («ISP mode», In-System Programming). Как правило, подобные устройства имеют встроенные схемы, которые:
- из внешнего напряжения питания генерируют напряжения необходимые для программирования;
- обеспечивают коммуникацию с внутрисхемным программатором по последовательному интерфейсу (вариации протокола JTAG, SPI, UART).

Для поддержания режима внутрисхемного программирования, плата пользователя должна обеспечивать:
- необходимую коммутацию выводов микросхемы с выходами внутрисхемного программатора;
- необходимые режимы по нагрузке и питанию на соответствующих выводах программируемого микроконтроллера (памяти, PLD) в режиме программирования.

Главным преимуществом внутрисхемного программирования является возможность объединения процесса программирования и тестирования, исключив отдельную фазу программирования микросхем перед окончательной сборкой устройства.  

Отличительной особенностью программаторов серии ChipProg-xx является то обстоятельство, что помимо поддержания параллельного режима программирования (программирования в колодке программатора), они поддерживают и режим внутрисхемного программирования.

По подключению к компьютеру

Как правило, для подключения современного программатора к PC используется либо параллельный порт  (Line Print Terminal, LPT), либо порт USB.

По количеству одновременно программируемых микросхем

Как правило, универсальный программатор может работать одновременно не более чем с одной микросхемой. Для тиражирования микросхем выпускаются программаторы копировщики. Так например, программатор ChipProg-G4 снабжен четырьмя ZIF сокетками, и позволяет в асинхронном режиме программировать до 4 микросхем одновременно. Другой возможностью существенно увеличить скорость тиражирования партий микросхем – воспользоваться функциональными возможностями некоторых программаторов. В частности, универсальные программаторы серии ChipProg-XX  с USB интерфейсом предоставляют возможность мультипрограммирования. Любое количество USB программаторов может быть подключено к одному управляющему компьютеру через USB порты, либо через USB HUB. 

По дополнительным функциональным и сервисным возможностям

Различные программаторы, подчас существенно отличаются друг от друга по своим функциональным и сервисным возможностям.

.

назад