Какой интерфейс микроконтроллера позволяет выполнять внутрисхемную отладку программного обеспечения

Обновлено: 17.05.2024

Современные программно-инструментальные средства разработки и отладки (средства разработки) позволяют провести весь этап разработки электронного устройства- от выработки схемотехнического решения до выпуска полного набора конструкторской документации и моделирования физических процессов, происходящих в устройстве. В статье представлена классификация средств разработки, в качестве примеров приводятся устройства, предлагаемые компанией "Терраэлектроника".

Преимущества современных средств разработки

Еще каких-нибудь 15-20 лет назад наиболее распространенным способом создания макета (прототипа) будущего устройства был "живой": подобрав электронные компоненты, разработчик брал в руки паяльник и собирал на макетных платах отдельные узлы или устройство в целом. Затем начинался процесс отладки: исправление ошибок принципиальной схемы, установка режимов работы, уточнение параметров применяемых компонентов и т.д. Этот вариант не потерял своей актуальности и по сей день, но применяется сейчас только при разработках относительно простых устройств, при производстве единичных экземпляров и при ограниченном бюджете разработки. Но если на первый план выходят такие критерии, как скорость, удобство и надежность разработки, то без профессиональных средств не обойтись. К преимуществам использования средств разработки можно отнести:

  • уменьшение времени выхода готовой продукции;
  • уменьшение материальных затрат и риска при разработке;
  • использование собственных ресурсов для ускорения разработки;
  • свободное использование собственных разработок в дальнейшем;
  • доступность простейших исходных кодов для быстрого освоения и ознакомления с новым прибором.

Классификация средств разработки

По функциональному назначению средства разработки можно классифицировать следующим образом:

  1. Оценочные и демонстрационные платы (Evaluation & demonstration board).
    Позволяют быстро ознакомиться с тем или иным прибором или семейством приборов и в короткие сроки разработать на нем устройство.
  2. Внутрисхемные эмуляторы (In-circuit emulator).
    Наиболее мощные и универсальные отладочные инструменты, представляющие собой набор аппаратно-программных средств и позволяющие замещать собой эмулируемый микроконтроллер в реальной схеме.
  3. Программные симуляторы (Simulator).
    Программные средства, способные имитировать работу микроконтроллера и его памяти.
  4. Отладчики (Debugger).
    Своего рода мост между разработчиком и отлаживаемым устройством, позволяющий пользователю одновременно контролировать ход выполнения программы и видеть соответствие между исходным текстом, образом программы в машинных кодах и состоянием всех ресурсов эмулируемого микроконтроллера.
  5. Эмуляторы ПЗУ (ROM emulator).
    Программно-аппаратные средства, способные замещать ПЗУ на отлаживаемой плате путем подстановки вместо него ОЗУ и загрузки программы с помощью компьютера через один из стандартных интерфейсов.
  6. Программаторы (Programmer).
    Устройства, позволяющие программировать м/с памяти, микроконтроллеры и программируемые логические интегральные схемы.
  7. Интегрированные среды разработки (Integrated Development Environment).

Реальные средства разработки часто объединяют в себе различные функции и режимы работы. Поэтому удобнее различать средства разработки по типу прибора (серии приборов), на работу с которым они ориентированы. Наиболее многочисленная группа средств разработки рассчитана на работу с микроконтроллерами, без которых сейчас редко обходится создание новых устройств. В настоящее время наибольшей популярностью в России пользуются микроконтроллеры таких производителей как Atmel, Microchip, Motorola, Philips, STMicroelectronics, Texas Instruments.

Cредства разработки для микроконтроллеров фирмы Atmel

ICE200 - внутрисхемный эмулятор фирмы Atmel для отладки устройств на МК семейства AVR (ATtiny12, AT90S2313, AT90S2333/4433, AT90S4414/8515, AT90S4434/8535). Эмулятор подключается к отлаживаемому устройству с помощью специальной эмуляционной головки и может использоваться с платами, на которых установлены панельки DIP8, DIP20, DIP28 и DIP40.
ATJTAGICE - внутрисхемный JTAG эмулятор с фоновой отладкой пользовательской программы, который может быть использован в качестве внутрисхемного программатора для микроконтроллеров AVR, имеющих JTAG-интерфейс.
ATSTK500 - отладочная система, облегчающая работу с AVR-микроконтроллерами и обеспечивающая поддержку программирования через параллельный и последовательный интерфейсы. Дополнительно система может быть использована в качестве ISP-программатора. Используя интегрированную среду разработки AVR Studio (начиная с 3.2 или выше), ATSTK500 обеспечивает режимы симуляции и эмуляции, а также внутрисхемное программирование AVR-микроконтроллера.
ATSTK501 - модуль расширения к ATSTK500, позволяющий увеличить список поддерживаемых устройств из семейства AVR: ATmega64, ATmega103, ATmega128.
ATSTK502 - модуль расширения, разработанный для введения в ATSTK500 поддержки микроконтроллеров ATmega169. В ATSTK502 входят разъемы, перемычки и аппаратные средства для полной поддержки всех особенностей mega169, в т.ч. управление встроенным ЖКИ.

Cредства разработки для микроконтроллеров фирмы Microchip

Cредства разработки для микроконтроллеров фирмы Motorola

DSP56F803EVM - оценочный набор для ознакомления с архитектурой линейки 56800 и демонстрирующий возможности гибридного микроконтроллера DSP56F803. Наличие встроенного порта JTAG/OnCE позволяет отлаживать загруженную в МК или во внешнюю память программу пользователя.
MC56F8300DSK - демонстрационно-стартовая плата для гибридных микроконтроллеров серии 56F8300. На плате установлены МК 56F8323 с производительностью 60 MIPS и новый датчик электрического поля MC33794 для бесконтактного обнаружения объекта и его перемещения в пространстве. На плате также реализован JTAG-to-LPT конвертер, упрощающий отладку программ пользователя. Отладочный комплект MC56F8300DSK включает все необходимые составляющие для начала работы, в т.ч. CD с пакетом ПО CodeWarrior Development Studio с бесплатной лицензией для программ, объем которых не превышает 16Kбайт.
M68DEMO908QT4 - демонстрационная плата для МК семейства Nitron (HC908Qx), позволяющая создавать новый код программы на ассемблере или Си, используя бесплатное ПО CodeWarrior TM Development Suite for HC08, отлаживать код в реальном времени и программировать МК.

Cредства разработки для микроконтроллеров фирмы Philips

EPM900 - внутрисхемный эмулятор и параллельный программатор для МК семейства P89LPC9xx Philips. На плате установлен МК P89LPC932, который по своим ресурсам перекрывает другие МК этой серии: P89LPC920/ 921/ 922 / 930/ 931. Для подключения этих микроконтроллеров на плате EPM900 предусмотрен интерфейс с целевой системой или с адаптером для программирования.
PE-ICD900 - внутрисхемный эмулятор/программатор для микроконтроллеров семейства LPC900 Philips.

Cредства разработки для микроконтроллеров фирмы Texas Instruments

MSP-FET430P410 - мощный инструмент для программирования МК MSP430F412 и MSP430F413 с Flash-памятью. Программатор поставляется в сопровождении интегрированной программной среды - "IAR Kickstart", включающей: ассемблер, трассировщик, симулятор, низкоуровневый отладчик и ограниченный по размеру кода Си компилятор.
MSP-PRGS430 - последовательный программатор второго поколения с функцией внутрисхемного программирования МК серии MSP430 FLASH, OTP или UV-EPROM.
ES149 - отладочная плата, позволяющая разработчику быстро освоить возможности микроконтроллера фирмы Texas Instruments MSP430F149. Плату можно подключать к программатору MSP-PRGS430.

Интегрированные среды разработки для микроконтроллеров

В настоящее время все большую популярность завоевывают так называемые интегрированные среды разработки (Integrated Development Environment) - совокупность программных средств, поддерживающая все этапы разработки программного обеспечения до ее компиляции и отладки, обеспечивающая простое и быстрое взаимодействие с другими инструментальными средствами. Примером может служить интегрированный пакет "Project" (Фирма Фитон) - объединение внутрисхемного эмулятора, программного отладчика-симулятора, компиляторов, текстового редактора, менеджера проектов и программатора в виде единой "интеллектуальной" среды разработки. На сегодняшний день разработаны и поставляются пакеты "Project", поддерживающие разработку и отладку систем на базе микроконтроллеров семейств: 8051, MCS-196, PICmicro, AVR Atmel, MSP430 Texas Instruments, Xemics, Sensory.

Средства разработки для цифровых сигнальных процессоров (ЦСП)

Это наиболее сложный и дорогой класс устройств, что объясняется не только высокой стоимостью самого процессора, но и потребностью в различных периферийных устройствах, без которых возможности ЦСП не будут использованы в разрабатываемой системе с максимальной эффективностью. В качестве периферии могут выступать: различные типы памяти объемом до нескольких мегабайт, аппаратная реализация различных интерфейсов с поддержкой соответствующих протоколов, включая USB и Ethernet, внешние АЦП и ЦАП с различной разрядностью, всевозможные датчики и источники опорных напряжений, стабилизаторы напряжений для питания цифрового ядра ЦСП и аналоговых цепей, и др.
KIT-761119A-LF2407 - автономная плата eZdsp LF2407 DSK, позволяющая разработчику изучить возможности цифрового сигнального процессора TMS320LF2407 фирмы Texas Instruments и определить, отвечает ли он его требованиям. Благодаря встроенной оперативной памяти программ и данных объемом 32Кб возможно решение самого широкого спектра задач. Упрощение разработки кода и сокращение времени отладки обеспечивается символическим ассемблером и оконным отладчиком. Встроенный разъем JTAG обеспечивает подключение к эмуляторам, работающим с другими отладчиками. Все выводы процессора доступны пользователю. Совместимость с C2000 Code Composer от Texas Instruments.
TMDSDSK5416-OE - недорогой стартовый набор для ускорения разработки и отладки приложений на базе цифровых сигнальных процессоров семейства TMS320C54x фирмы Texas Instruments с возможностью подключения дополнительных модулей для расширения функциональных возможностей: конвертеров данных, макетных плат, интерфейсов ввода-вывода и других периферийных устройств. Разработчик может использовать высокую производительность устройства (160MIPS) для реализации таких функций как компрессия и декомпрессия голоса, распознавание голоса, конвертирование текста в речь, обработка факсимильных данных и гашение эха.
TMDX3P761128E - отладочная плата eZdsp LF2812 для разработки и отладки программ пользователя для процессора TMS320LF2812. Встроенные разъем и контроллер JTAG обеспечивает подключение к эмуляторам, работающим с другими отладчиками.

Средства разработки для других компонентов

Помимо средств разработки для микроконтроллеров и ЦСП существует множество других оценочных и отладочных плат для новых компонентов ведущих производителей. Например, такие компании как International Rectifier и IXYS большое внимание уделяют сопровождению своих силовых приборов.
IRPLDIM1E - демонстрационная плата балласта на базе м/с драйвера балласта IR21592 и корректора мощности на L6561D. К балласту можно подключить одну лампу типа Т8 мощностью 36Вт. Имеется функция защиты от ошибок с автоматическим рестартом. Диапазон питания балласта ~185-255В 50-60Гц. Коэффициент мощности 0,98. Максимальное выходное напряжение 750В. Время прогрева 1сек с напряжением 220В.
IRDCiP2001C - демонстрационная плата DC/DC-конвертера на основе 4-х фазного ШИМ-контроллера HIP6311 и четырех ключей с интегрированным драйвером IP2001, позволяющего получить напряжения питания ядра процессора в диапазоне от 1.10V до 1.85V (шаг 0,025В) с токами потребления до 80А без охлаждения. Максимальный КПД - 91,5%, эффективная частота переключения - 2МГц (4х500кГц), входное напряжение от 5В до 12В.
EVDN404 - отладочная плата, содержащая в своем составе ИС драйвера затвора IXDN404 с предусмотренным местом под установку силового MOSFET-а. Отличительной особенностью драйверов является высокая динамическая нагрузочная способность и высокая скорость переключения емкостной нагрузки.

Программаторы

Особую группу средств разработки составляют программаторы. По функциональным возможностям программаторы условно можно разделить на следующие группы:

  • специализированные программаторы для микросхем памяти (EPROM, EEPROM, FLASH);
  • специализированные программаторы для микросхем памяти и внутренней памяти отдельных семейств микроконтроллеров;
  • универсальные программаторы микросхем памяти, внутренней памяти микроконтроллеров, микросхем программируемой логики (PLD).

Основные функциональные возможности современных программаторов:

  • тестовая колодка с нулевым усилием (ZIF- socket), обеспечивающая многократный надежный контакт с программируемой микросхемой в корпусе DIP;
  • для программирования микросхем с корпусами, отличными от DIP, программаторы снабжаются специальными адаптерами под соответствующий тип корпуса;
  • возможность обновления ПО для расширения количества программируемых микросхем;
  • программная установка параметров программирования: Vccp, Vvpp;
  • самотестирование при включении питания;
  • тестирование правильности установки микросхем;
  • проверка качества контакта по всем выводам программируемой микросхемы;
  • защита всех выводов микросхемы от перенапряжения и статического электричества.

Компания "Терраэлектроника" представляет программаторы фирм "Elnec" (Словакия) и "Фитон" (г. Москва), удовлетворяющих всем требованиям, предъявляемые к современным программаторам. Среди новейших приборов можно выделить: BeeProg - универсальный сверхбыстрый программатор с интерфейсом USB и функцией ISP. Поддерживает более 11200 устройств, имеет функцию тестирования логических микросхем и статической RAM. MEMProg - универсальный программатор микросхем памяти (более 5300 программируемых устройств): EPROM (серии 27xxx, 27Cxxx), EEPROM (серии 28xxx, 28Cxxx, 27EExxx ), Flash EPROM (серии 28Fxxx, 29Cxxx, 29Fxxx, 29BVxxx, 29LVxxx, 29Wxxx, 49Fxxx), Serial EEPROM (серии AT17Сххх, 24Cxxx, 24Fxxx, 25Cxxx, 59Cxxx, 85xxx, 93Cxxx), конфигурационной памяти PROM серии 17xxx, энергонезависимой памяти NV RAM (серий Dallas DSxxx, SGS/INMOS MKxxx, Simtek STKxxx, Xicor 2xxx, ZMD U63x).

О выборе средств разработки

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


Микроконтроллер AVR содержит: быстрый RISK-процессор, два типа энергонезависимой памяти (Flash-память программ и память данных EEPROM), оперативную память RAM, порты ввода/вывода и различные периферийные интерфейсные схемы.

Процессор

CISC и RISC
По числу команд микропроцессоры подразделяют на CISC (Complex Instruction Set Computer) и RISC (Reduced Instruction Set Computer). Термин CISC обозначает сложную систему команд, RISC – сокращенную.
Идея RISC – это тщательный подбор команд, которые можно было бы выполнить за один такт. Т. о. упрощается аппаратная реализация процессора, сокращается число транзисторов, снижается потребляемая мощность и цена.
Очевидно, что в общем случае одной CISC-команде должны соответствовать несколько RISC-команд. Однако обычно выигрыш в быстродействии у RISC перекрывает потери. Так, самая быстрая команда у 8051 выполняется за 12 тактов. Даже если для каждой CISC-инструкции потребуется выполнить три RISC-инструкции, то в итоге RISC-архитектура будет в 4 раза производительней.
В настоящее время грань между RISC и CISC стирается. Например, AVR имеют 133 команды, что соответствует CISC, но большинство из них выполняется за один такт, что является признаком RISC. Поэтому основным признаком RISC стало принято считать выполнение команд за один такт.

Память

В микроконтроллерах AVR реализована Гарвардская архитектура, в соответствии с которой разделены не только адресные пространства памяти программ и памяти данных, но и шины доступа к ним. Каждая из областей памяти данных (оперативная память и EEPROM) также расположена в своем адресном пространстве.

Память программ (Flash ROM или Flash ПЗУ)

Фоннеймановская и гарвардская архитектура
В 1945 г. американский математик Джон фон Нейман сформулировал основные принципы работы современных компьютеров. Им была предложена архитектура, получившая его имя (von Neumann architecture) и предполагающая хранение программ и данных в общей памяти (1946 г.). Сегодня такая архитектура наиболее характерна для микропроцессоров, ориентированных на использование в компьютерах. Примером могут служить микропроцессоры семейства х86.
Архитектура, предполагающая раздельное использование памяти программ и данных, носит название гарвардской (Harvard architecture). Гарвардская архитектура позволяет центральному процессору работать одновременно как с памятью программ, так и с памятью данных, что существенно увеличивает производительность.

Память программ предназначена для хранения последовательности команд, управляющих функционированием микроконтроллера, и имеет 16-ти битную организацию. Все AVR имеют Flash-память программ, которая может быть различного размера – от 1 до 256 КБайт. Ее главное достоинство в том, что она построена на принципе электрической перепрограммируемости, т. е. допускает многократное стирание и запись информации. Программа заносится во Flash-память AVR как с помощью обычного программатора, так и с помощью SPI-интерфейса, в том числе непосредственно на собранной плате. Возможностью внутрисхемного программирования (функция ISP) через коммуникационный интерфейс SPI обладают все микроконтроллеры AVR, кроме Tiny11 и Tiny28.
Все микроконтроллеры семейства Mega имеют возможность самопрограммирования, т. е. самостоятельного изменения содержимого своей памяти программ. Эта особенность позволяет создавать на их основе очень гибкие системы, алгоритм работы которых будет меняться самим микроконтроллером в зависимости от каких-либо внутренних условий или внешних событий.
Гарантированное число циклов перезаписи Flash-памяти у микроконтроллеров AVR второго поколения составляет не менее 10 тыс. циклов при типовом значении 100 тыс. циклов. (В официальной технической документации Atmel Corp. указывается значение 10 тыс. циклов.)

Память данных

Память данных разделена на три части: регистровая память, оперативная память (ОЗУ – оперативное запоминающее устройство или RAM) и энергонезависимая память (ЭСППЗУ или EEPROM).

Регистровая память (РОН и РВВ)

Регистровая память включает 32 регистра общего назначения (РОН или GPR), объединенных в файл, и служебные регистры ввода/вывода (РВВ). И те и другие расположены в адресном пространстве ОЗУ, но не являются его частью.
В области регистров ввода/вывода расположены различные служебные регистры (регистры управления микроконтроллером, регистры состояния и т. п.), а также регистры управления периферийными устройствами, входящими в состав микроконтроллера. По сути, управление микроконтроллером заключается в управлении этими регистрами.

Энергонезависимая память данных (EEPROM)

Для долговременного хранения различной информации, которая может изменяться в процессе функционирования микроконтроллерной системы, используется EEPROM-память. Все AVR имеют блок энергонезависимой электрически перезаписываемой памяти данных EEPROM от 64 Байт до 4 КБайт. Этот тип памяти, доступный программе микроконтроллера непосредственно в ходе ее выполнения, удобен для хранения промежуточных данных, различных констант, коэффициентов, серийных номеров, ключей и т.п. EEPROM может быть загружена извне как через SPI интерфейс, так и с помощью обычного программатора. Число циклов стирание/запись – не менее 100 тыс.

Оперативная память (ОЗУ или RAM)

Внутренняя оперативная статическая память Static RAM (SRAM) имеет байтовый формат и используется для оперативного хранения данных.
Размер оперативной памяти может варьироваться у различных чипов от 64 Байт до 4 КБайт. Число циклов чтения и записи в RAM не ограничено, но при отключении питающего напряжения вся информация теряется.
Для некоторых микроконтроллеров возможна организация подключения внешнего статического ОЗУ объемом до 64К.

Периферия

Порты ввода/вывода (I/O)

Прерывания (INTERRUPTS)

Система прерываний – одна из важнейших частей микроконтроллера. Все микроконтроллеры AVR имеют многоуровневую систему прерываний. Прерывание прекращает нормальный ход программы для выполнения приоритетной задачи, определяемой внутренним или внешним событием.
Для каждого такого события разрабатывается отдельная программа, которую называют подпрограммой обработки запроса на прерывание (для краткости – подпрограммой прерывания), и размещается в памяти программ.
При возникновении события, вызывающего прерывание, микроконтроллер сохраняет содержимое счетчика команд, прерывает выполнение центральным процессором текущей программы и переходит к выполнению подпрограммы обработки прерывания.
После выполнения подпрограммы прерывания осуществляется восстановление предварительно сохраненного счетчика команд и процессор возвращается к выполнению прерванной программы.
Для каждого события может быть установлен приоритет. Понятие приоритет означает, что выполняемая подпрограмма прерывания может быть прервана другим событием только при условии, что оно имеет более высокий приоритет, чем текущее. В противном случае центральный процессор перейдет к обработке нового события только после окончания обработки предыдущего.

Таймеры/счетчики (TIMER/COUNTERS)

Микроконтроллеры AVR имеют в своем составе от 1 до 4 таймеров/счетчиков с разрядностью 8 или 16 бит, которые могут работать и как таймеры от внутреннего источника тактовой частоты, и как счетчики внешних событий.
Их можно использовать для точного формирования временных интервалов, подсчета импульсов на выводах микроконтроллера, формирования последовательности импульсов, тактирования приемопередатчика последовательного канала связи. В режиме ШИМ (PWM) таймер/счетчик может представлять собой широтно-импульсный модулятор и используется для генерирования сигнала с программируемыми частотой и скважностью. Таймеры/счетчики способны вырабатывать запросы прерываний, переключая процессор на их обслуживание по событиям и освобождая его от необходимости периодического опроса состояния таймеров. Поскольку основное применение микроконтроллеры находят в системах реального времени, таймеры/счетчики являются одним из наиболее важных элементов.

Сторожевой таймер (WDT)

Сторожевой таймер (WatchDog Timer) предназначен для предотвращения катастрофических последствий от случайных сбоев программы. Он имеет свой собственный RC-генератор, работающий на частоте 1 МГц. Как и для основного внутреннего RC-генератора, значение 1 МГц является приближенным и зависит прежде всего от величины напряжения питания микроконтроллера и от температуры.
Идея использования стоpожевого таймеpа предельно проста и состоит в pегуляpном его сбpасывании под упpавлением пpогpаммы или внешнего воздействия до того, как закончится его выдеpжка вpемени и не пpоизойдет сбpос пpоцессоpа. Если пpогpамма pаботает ноpмально, то команда сбpоса стоpожевого таймеpа должна pегуляpно выполняться, пpедохpаняя поцессоp от сбpоса. Если же микpопpоцессоp случайно вышел за пpеделы пpогpаммы (напpимеp, от сильной помехи по цепи питания) либо зациклился на каком-либо участке пpогpаммы, команда сбpоса стоpожевого таймеpа скоpее всего не будет выполнена в течение достаточного вpемени и пpоизойдет полный сбpос пpоцессоpа, инициализиpующий все pегистpы и пpиводящий систему в pабочее состояние.

Аналоговый компаратор (AC)

Аналоговый компаратор (Analog Comparator) сравнивает напряжения на двух выводах (пинах) микроконтроллера. Результатом сравнения будет логическое значение, которое может быть прочитано из программы.
Выход аналогового компаратора можно включить на прерывание от аналогового компаратора. Пользователь может установить срабатывание прерывания по нарастающему или спадающему фронту или по переключению.
Присутствует у всех современных AVR, кроме Mega8515

Аналого-цифровой преобразователь (A/D CONVERTER)

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

Универсальный последовательный приемопередатчик (UART или USART)

Универсальный асинхронный или универсальный синхронно/асинхронный приемопередатчик (Universal Synchronous/Asynchronous Receiver and Transmitter – UART или USART) – удобный и простой последовательный интерфейс для организации информационного канала обмена микроконтроллера с внешним миром. Способен работать в дуплексном режиме (одновременная передача и прием данных). Он поддерживает протокол стандарта RS-232, что обеспечивает возможность организации связи с персональным компьютером. (Для стыковки МК и компьютера обязательно понадобится схема сопряжения уровней сигналов. Для этого существуют специальные микросхемы, например MAX232.)

Последовательный периферийный интерфейс SPI


Последовательный периферийный трехпроводный интерфейс SPI (Serial Peripheral Interface) предназначен для организации обмена данными между двумя устройствами. С его помощью может осуществляться обмен данными между микроконтроллером и различными устройствами, такими, как цифровые потенциометры, ЦАП/АЦП, FLASH-ПЗУ и др. С помощью этого интерфейса удобно производить обмен данными между несколькими микроконтроллерами AVR.
Кроме того, через интерфейс SPI может осуществляться программирование микроконтроллера.

Двухпроводной последовательный интерфейс TWI

Двухпроводной последовательный интерфейс TWI (Two-wire Serial Interface) является полным аналогом базовой версии интерфейса I2C (двухпроводная двунаправленная шина) фирмы Philips. Этот интерфейс позволяет объединить вместе до 128 различных устройств с помощью двунаправленной шины, состоящей из линии тактового сигнала (SCL) и линии данных (SDA).

Интерфейс JTAG

Тактовый генератор

Тактовый генератор вырабатывает импульсы для синхронизации работы всех узлов микроконтроллера. Внутренний тактовый генератор AVR может запускаться от нескольких источников опорной частоты (внешний генератор, внешний кварцевый резонатор, внутренняя или внешняя RC-цепочка). Минимальная допустимая частота ничем не ограничена (вплоть до пошагового режима). Максимальная рабочая частота определяется конкретным типом микроконтроллера и указывается Atmel в его характеристиках, хотя практически любой AVR-микроконтроллер с заявленной рабочей частотой, например, в 10 МГц при комнатной температуре легко может быть “разогнан” до 12 МГц и выше.

Система реального времени (RTC)

RTC реализована во всех микроконтроллерах Mega и в двух кристаллах “classic” – AT90(L)S8535. Таймер/счетчик RTC имеет отдельный предделитель, который может быть программным способом подключен или к источнику основной тактовой частоты, или к дополнительному асинхронному источнику опорной частоты (кварцевый резонатор или внешний синхросигнал). Для этой цели зарезервированы два вывода микросхемы. Внутренний осциллятор оптимизирован для работы с внешним “часовым” кварцевым резонатором 32,768 кГц.

Питание

AVR функционируют при напряжениях питания от 1,8 до 6,0 Вольт. Ток потребления в активном режиме зависит от величины напряжения питания и частоты, на которой работает микроконтроллер, и составляет менее 1 мА для 500 кГц,5 … 6 мА для 5 МГц и 8 … 9 мА для частоты 12 МГц.
AVR могут быть переведены программным путем в один из трех режимов пониженного энергопотребления.

Режим холостого хода (IDLE).

Прекращает работу только процессор и фиксируется содержимое памяти данных, а внутренний генератор синхросигналов, таймеры, система прерываний и сторожевой таймер продолжают функционировать. Ток потребления не превышает 2,5 мА на частоте 12 МГц.

Стоповый режим (POWER DOWN).

Сохраняется содержимое регистрового файла, но останавливается внутренний генератор синхросигналов, и, следовательно, останавливаются все функции, пока не поступит сигнал внешнего прерывания или аппаратного сброса. При включенном сторожевом таймере ток потребления в этом режиме составляет около 80 мкА, а при выключенном – менее 1 мкА. (Все приведенные значения справедливы для напряжения питания 5 В).

Экономичный режим (POWER SAVE).

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

Сброс при снижении напряжения питания (BOD)

Схема BOD (Brown-Out Detection) отслеживает напряжение источника питания. Если схема включена, то при снижении питания ниже некоторого значения она переводит микроконтроллер в состояние сброса. Когда напряжение питания вновь увеличится до порогового значения, запускается таймер задержки сброса. После формирования задержки внутренний сигнал сброса снимается и происходит запуск микроконтроллера.

Отличия разработки встроенного ПО от разработки обычных программ

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

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

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

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

Типичный процесс разработки встроенного программного обеспечения

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

Типичный процесс разработки встроенного программного обеспечения выглядит следующим образом:

Совместное проектирование

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

Дизайн-ревью

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

Аппаратная эмуляция

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

Тестирование платы

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

Сборка драйверов

Хорошие драйверы - основа любого устройства. Лучше потратить больше времени на написание хороших драйверов, чем потом тратить время на модификацию кода при добавлении нового периферийного устройства или аксессуара. Например, вы разрабатываете драйвер интеллектуального зарядного устройства. И вам нужно добавить новый аксессуар, который необходимо зарядить. Хороший драйвер потребует только описания того, как происходит процесс зарядки. Все остальное, что связано с конкретными выходами и элементами управления, будет уже описано внутри драйвера.

Реализация логики

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

Разумеется, разработка может включать несколько итераций прототипов. И для каждой итерации потребуется доработать код.

Операционные системы и языки программирования

Для многих встроенных решений требуется операционная система (ОС), которая работает в качестве посредника между драйверами оборудования и логикой приложения. Большинство ОС, используемых в микроконтроллерах, представляют собой операционные системы реального времени (RTOS), что означает, что они должны обрабатывать задачи за время, меньшее чем интервал между задачами. Это важная особенность устройств, которые управляют вещами реального мира в режиме реального времени.

Встраиваемые операционные системы

RTOS бывают разных размеров и возможностей. Некоторые из них проприетарные, а другие с открытым исходным кодом. Некоторые производители микроконтроллеров разрабатывают RTOS для своих продуктов, в то время как другие просто дают список совместимых ОС. Выбор операционной системы зависит частично от микроконтроллера (младшие семейства контроллеров имеют меньше памяти для программного обеспечения) и, частично, от сложности реализуемых задач. При выборе контроллера необходимо учитывать, сколько памяти потребуется для запуска драйверов, ядра системы и логики приложения. Многие разработчики встраиваемых систем предпочитают RTOS с открытым исходным кодом, поскольку она обеспечивают большую гибкость при обновлении системы.

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

И C, и Ассемблер позволяют непосредственно общаться с регистрами микроконтроллера и управлять периферийным оборудованием. Многие производители микроконтроллеров предоставляют свои собственные версии C и готовые библиотеки с оптимизированным кодом, облегчающие использование контроллера. Иногда для разработки встраиваемых решений используется язык C++, но это не всегда правильный выбор. Хотя этот язык обладает всеми преимуществами объектно-ориентированного языка программирования, реализованный с его помощью код часто занимает больше места и может работать медленнее. Разумеется, для некоторых встроенных решений, которые менее критичны к ресурсам, C++ может стать хорошим выбором. Также можно использовать C++, если у вас есть возможность заложить в проект контроллер с более высокой тактовой частотой и большим объемом памяти.

Интегрированная среда разработки (IDE)

Для большинства микроконтроллеров есть рекомендованные производителем IDE, кроме того, на рынке представлено множество сред разработки, подходящих для различных контроллеров. Например, Eclipse - широко используемая IDE с открытым исходным кодом, которая поддерживает широкий набор контроллеров. Некоторые производители выпускают свои расширения для Eclipse. В принципе, разработку можно вести в любой удобной вам среде, независимо от того, создана она производителем или сторонним разработчиком. В некоторых случаях, придется потратить часть времени на конфигурирование IDE и выбор драйверов.

Основные инструменты разработки встраиваемых систем

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

Использование осциллографа при разработке источника питания

Чтобы выполнить отладку, вам потребуется внутрисхемный эмулятор или JTAG- отладчик.(JTAG - это стандартный интерфейс, используемый для программирования, тестирования и отладки во многих микроконтроллерах). Кроме того, обязательно потребуется мультиметр, часто нужен осциллограф и другое контрольно-измерительное оборудование.

Синхронизация итераций разработки прототипов и встроенного ПО

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

Между разработчиками встраиваемых систем и программистами, создающими обычные приложения, есть еще одно фундаментальное отличие. Разработчики встроенного программного обеспечения ограничены аппаратным обеспечением. Их реальность такова, что сначала выбирается и разрабатывается аппаратное обеспечение, а затем программное обеспечение должно заставить его работать. Если плата работает не так, как ожидается, или плату изменили таким образом, что она перестала работать, как правило, ожидается, что проблема будет решена с помощью доработки программного обеспечения. В этом смысле разработчики встроенного ПО чем то похожи на хакеров.

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

Небольшое дополнение к статье от Алекса Элиума

Рекомендации по выбору языка для программирования встраиваемых систем

C++ - отличный выбор языка программирования для создания встроенного программного обеспечения. Раньше этот язык не мог конкурировать с C, так как для C++ просто не хватало оперативной памяти/Flash. Теперь это не так. Если вы, конечно, не разрабатываете очень массовый продукт, разница в себестоимости между контроллерами с 200 КБ ОЗУ и 20 КБ ОЗУ вряд ли будет так заметна, как потенциальная экономия от сокращения времени разработки.

Вот несколько моментов, которые стоит учитывать, если вы используете C++:

Имейте ввиду, что мир встраиваемых решений быстро меняется, особенно когда крупные игроки отрасли проявляют интерес к IoT. В конце концов мы, возможно, будем использовать что-то типа виртуальной машины на основе Java или Python. На всякий случай, уже сейчас стоит взглянуть на MicroEJ, embedded Java IDE и VM, и MicroPython.

Независимо от того, какой язык вы используете, нужно обратить внимание на автоматическое тестирование и выбор некоей процессорно-независимой операционной системы реального времени (RTOS), такой как mBed, FreeRTOS или Zephyr. RTOS позволит вам изменять процессоры без особых проблем. Автоматизированные тесты, на уровне модуля или системы, позволят вам быстро проверить код при выпуске нового прототипа.

Следующие шаги

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

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

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

Внутрисхемный эмулятор – программно-аппаратное средство, способное заменить эмулируемый микроконтроллер в реальной схеме. Стыковка внутрисхемного эмулятора с отлаживаемой системой производится при помощи кабеля со специальной эмуляционной головкой, которая вставляется вместо микроконтроллера в отлаживаемую систему.

Если микроконтроллер нельзя удалить из системы, то использование эмулятора возможно, только если этот микроконтроллер имеет отладочный режим, при котором все его выводы находятся в третьем состоянии. В этом случае для подключения эмулятора используют специальный адаптер-клипсу, который подключается непосредственно к выводам эмулируемого микроконтроллера.

Как минимум, эмулятор содержит следующие функциональные блоки:

- отладчик, позволяющий пользователю одновременно контролировать ход

выполнения программы и видеть соответствие между исходным текстом, образом программы в машинных кодах, и состоянием всех ресурсов эмулируемого микроконтроллера;

- узел эмуляции микроконтроллера;

- эмуляционную память, используемую вместо ПЗУ в отлаживаемой

- подсистему точек останова.

Более продвинутые модели могут содержать дополнительно:

- процессор точек останова, позволяющий останавливать выполнение

программы, или выполнять иные действия, при выполнении заданных пользователем условий;

- трассировщик, логический анализатор, работающий синхронно с

процессором и фиксирующий поток выполняемых инструкций и состояния выбранных внешних сигналов;

- профилировщик, анализирующий эффективность программного кода и

позволяющий оптимизировать структуру отлаживаемой программы;

- программно-аппаратные средства, обеспечивающие возможность чтения

и модификации ресурсов эмулируемого процессора "на лету", т.е. в процессе выполнения программы пользователя в реальном времени;

- программно-аппаратные средства, обеспечивающие синхронное

управление, необходимые для эмуляции в мультипроцессорных системах;

- интегрированную среду разработки.

Широкий набор функциональных возможностей, делает внутрисхемные эмуляторы наиболее мощным и универсальным отладочным средством, которое делает процесс функционирования отлаживаемого контроллера прозрачным, легко контролируемым, произвольно управляемым и модифицируемым. В таблице 1 приведена сравнительная характеристика наиболее распространенных эмуляторов для микроконтроллеров семейства Intel 8051.

Существенным недостатком таких средств отладки является ориентированность на определенный тип микроконтроллера и высокая стоимость.

Симулятор - программное средство, способное имитировать работу микроконтроллера и его памяти. Как правило, симулятор содержит в своем составе отладчик, модель ЦПУ и памяти. Более продвинутые симуляторы содержат в своем составе модели встроенных периферийных устройств, таких, как таймеры, порты, АЦП, и системы прерываний.

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

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

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

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

В некоторых моделях эта проблема решена: симуляторы имеют встроенные средства для создания моделей подключенных к МК внешних устройств, включая средства графического отображения информации.

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

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

На этой плате также устанавливают схемы связи с внешним компьютером. Как правило, там же имеется свободное поле для монтажа прикладных схем пользователя. Иногда предусмотрена уже готовая разводка для установки дополнительных устройств, рекомендуемых фирмой. Например, ПЗУ, ОЗУ, ЖК-индикатор, клавиатура, АЦП и др.

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

Для большего удобства платы развития комплектуются еще и простейшим средством отладки на базе монитора отладки. Используются два типа мониторов отладки: один для микроконтроллеров, имеющих внешнюю шину, а второй – для микроконтроллеров, не имеющих внешней шины.

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

Во втором случае плата развития имеет встроенные схемы программирования внутреннего ПЗУ микроконтроллера, которые управляются от внешнего компьютера. При этом программа монитора просто заносится в ПЗУ совместно с прикладными кодами пользователя. Прикладная программа должна быть специально подготовлена: в нужные места необходимо вставить вызовы отладочных подпрограмм монитора. Затем осуществляется пробный прогон. Чтобы внести в программу исправления, пользователю надо стереть ПЗУ и произвести повторную запись. На такой алгоритм отладки рассчитаны платы развития для МК семейств PICmicro (Microchip), 80С750 (Philips), 89С2051 (Atmel).

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

Эмулятор ПЗУ – программно-аппаратное средство, позволяющее замещать ПЗУ на отлаживаемой плате, и подставляющее вместо него ОЗУ, в которое может быть загружена программа с компьютера через один из стандартных каналов связи. Это устройство позволяет пользователю избежать многократных циклов перепрограммирования ПЗУ. Эмулятор ПЗУ нужен только для микроконтроллеров, которые могут обращаться к внешней памяти программ. Это устройство сравнимо по сложности и по стоимости с платами развития и имеет одно большое достоинство: универсальность. Эмулятор ПЗУ может работать с любыми типами микроконтроллеров.

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

Интегрированные среды разработки

Интегрированная среда разработки - Integrated Development Environment (IDE) - это совокупность программных средств, поддерживающая все этапы разработки программного обеспечения от написания исходного текста программы до её компиляции и отладки и обеспечивающая простое и быстрое взаимодействие с программным отладчиком-симулятором и программатором.

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

Использование IDE позволяет избежать большого объёма рутинной работы и там самым существенно повысить производительность труда программиста.

Интегрированная среда разработки программного обеспечения позволяет:

- использовать встроенный многофайловый текстовый редактор,

специально ориентированный на работу с исходными текстами программ;

- наблюдать одновременно (в многооконном режиме) диагностику

выявленных при компиляции ошибок и исходный текст программы, доступный редактированию;

- вести параллельную работу над несколькими проектами.

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

- подвергать перекомпиляции только редактировавшиеся модули;

- загружать отлаживаемую программу в имеющиеся средства отладки и

работать с ними без выхода из оболочки;

- подключать к оболочке практически любые программные средства.

Читайте также: