32-разрядные микроконтроллеры AT91SAM7S: с чего начать?
Около года назад в журнале «Компоненты и Технологии» была опубликована статья [1], посвященная новинке того времени — 32-разрядным микроконтроллерам АТ918АМ7в семейства БтаггАРМ производства корпорации Аше!. За прошедшее время эта платформа уже успела завоевать признание среди разработчиков благодаря своей высокой производительности и привлекательной цене. В данной статье представлено краткое опи-Алексей КУРИЛИН сание необходимого набора аппаратных и программных средств поддерж-
[email protected] ки разработок для начала работы с микроконтроллерами БтаггАРМ.
Аппаратное обеспечение: стартовый набор AT91SAM7S-EK
В качестве базового стартового набора корпорацией Atmel предлагается набор AT91SAM7S-EK, построенный на базе микроконтроллера AT91SAM7S256. В состав набора входит базовая плата (рис. 1), кабель USB A-B, а также диск с документацией и программным обеспечением. Вопреки сложившемуся мнению, что средства разработки для 32-разрядных микроконтроллеров недоступны по цене, розничная цена этого набора на российском рынке составляет $160-200.
AT91SAM7S-EK предназначен для оценки возможностей микроконтроллера SmartARM. Для этого на базовой плате реализованы следующие цепи (пронумерованы на рис. 1).
1. Распаянный микроконтроллер AT91SAM7S256. Тем не менее, при необходимости использовать этот стартовый набор для оценки возможностей других микроконтроллеров этой линейки инженеры компании Atmel предлагают демонтировать запаянную на плату микросхему AT91SAM7S256 и запаять другой микроконтроллер [8]. Для повышения помехоустойчивости каждая линия питания микроконтроллера (VDDIO,
VDD ANA, VDD IN, VDD CORE, VDD FLASH, VDD PLb) снабжена блокировочными конденсаторами. Фильтр второго порядка для блока ФАПЧ выполнен по П-образной схеме и содержит два конденсатора и резистор.
2. Для формирования сигнала со стабильной тактовой частотой генератор микроконтроллера снабжен внешним кварцем на частоту 18,432 МГц. Это значение выбрано для обеспечения работы программ, демонстрирующих работу интерфейсов USART и DBGU микроконтроллера. Во всех примерах программ (о них будет сказано ниже) код инициализации написан именно для этого значения частоты кварцевого резона-
тора. Следует отметить, что при включении питания микроконтроллер стартует от внутреннего ИС-генератора, а переключение на кварцевый генератор производится программно только после стабилизации его тактовой частоты, что составляет примерно 15 мс [1].
3. Все цифровые и аналоговые линии ввода/вывода микроконтроллера, которые могут потребоваться для подключения внешней периферии, выведены на отдельный разъем. Каждый вывод разъема пронумерован в соответствии с его функциональным назначением, а не в соответ-
ствии с номером вывода микроконтроллера. Например, вывод разъема с номером «21» соответствует выводу микроконтроллера с наименованием «PA21».
4. Макетная площадка, предназначенная для монтажа внешней периферии, требуемой для обеспечения разработки конечного устройства. Площадка имеет 22x8 изолированных друг от друга контактных площадок. Для питания монтируемых на эту площадку элементов предусмотрена линейка контактных площадок питания 3,3 В (сверху) и общего провода GND (снизу).
5. Для экспериментов с напряжением питания микроконтроллера на плате предусмотрена возможность установки джамперов вместо короткозамкнутых перемычек JP13 (VDDFLASH),
JP14 (Vdd io), JP20 (ADVREF*),
JP21 (Vdd pll), JP22 (Vdd in), JP23 (Vdd CORE). Такая функциональность может быть полезна, например, при необходимости подключения внешнего стабилизированного источника питания либо при включении в цепь амперметра для измерения энергопотребления отдельных блоков микроконтроллера.
6. При установке джампера JP28 на выводе ERASE микроконтроллера выставляется сигнал логической 1, что инициирует полную очистку Flash-памяти микроконтроллера и ее битов защиты (Lock и Security). В целевом устройстве этот вывод может быть использован для защиты интеллектуальной собственности разработчика от кражи, а на данной плате — для сброса битов защиты с целью дальнейшего перепрограммирования Flash-памяти.
7. В микросхемах AT91SAM7S предусмотрена возможность внутрисхемного программирования Flash-памяти по интерфейсам USB или DBGU без использования внешних программаторов. Функционально это реализовано следующим образом: в ROM-памяти всех микроконтроллеров AT91SAM7S содержится микрокод загрузчика SAM-BA, который должен быть загружен во Flash-память. После того как загрузчик в микроконтроллере активирован, на верхнем уровне (ПК) запускается одноименная программа, которая устанавливает связь с загрузчиком и программирует Flash-память. На плате стартового набора активация загрузчика инициируется установкой джампера JP5, который выставляет на выводе TST микросхемы сигнал логической 1. Сигнал должен быть удержан при включенном питании не менее 10 секунд, после чего при повторном включении питания происходит запуск загрузчика из Flash-памяти. О программе верхнего уровня будет написано ниже.
8. Питание платы может осуществляться от внешнего источника питания напряжением 7-14 В либо по интерфейсу USB.
* ADVREF — Vref для АЦП
Независимо от того, какой источник напряжения используется, стабилизированное напряжение 3,3 В формируется при помощи стабилизатора напряжения, установленного на плате (область 8). Стабилизатор имеет на входе выпрямительный мост, что позволяет не заботиться о полярности при подключении внешнего блока питания.
9. Для подключения внутрисхемного эмулятора на плате предусмотрен стандартный для ARM-контроллеров 20-контактный разъем JTAG. Перемычка JP19 определяет, в каком из режимов будет использоваться JTAG-интерфейс [4]:
- в режиме граничного сканирования (Boundary Scan) перемычка замкнута, на входе JTAGSEL — высокий уровень;
- в режиме аппаратной внутрисхемной отладки (ICE) перемычка разомкнута, на входе JTAGSEL — низкий уровень (используется внутренний резистор pulldown для входа JTAGSEL).
В зависимости от типа используемого внутрисхемного отладчика может потребоваться разомкнуть джампер JP4 (например, это может быть нужно при использовании устройства Wiggler фирмы Macraigor).
10. Два разъема DB9 предназначены для подключения микроконтроллера к компьютеру по интерфейсам USART и DBGU. Для согласования логических уровней RS232-KMOn на плате предусмотрены соответствующие микросхемы. Если на этапе отладки потребуется подключить сигналы USART или DBGU к устройствам с логическими уровнями, отличными от RS232, то можно отсоединить преобразователь уровней от микроконтроллера при помощи размыкания перемычек JP6-JP9, JP11 и JP12.
11. Интерфейс USB со всеми требуемыми элементами обвязки и цепями защиты насчитывает около 20 элементов. Сюда входят фильтрующие, стабилизирующие и защитные цепи, а также два ключа, выполненные на MOSFET-транзисторах TR1 и TR2. Ключи позволяют программно подключать и отключать подтягивающий резистор 1,5 кОм на линии D+ интерфейса USB, эмулируя тем самым отключение USB-устройства от хост-контроллера [5]. Если эмуляция не требуется, то необходимо разомкнуть перемычки JP1 и JP2.
12. В качестве интерфейса пользователя предусмотрены четыре кнопки, подключенные к линиям PA14, PA15, PA19 и PA20. Каждая кнопка осуществляет замыкание соответствующего вывода на общий провод.
13. Для ввода аналогового сигнала входы J7-J10 через буферный повторитель подключены к аналоговым входам AD4, AD5 и к мультиплексированным аналого-цифровым линиям PA17, PA19 микрокон-
троллера. На выходах буферного повторителя предусмотрены короткозамкнутые перемычки 1Р24-27, позволяющие отключить цепи аналогового ввода или включить какие-либо дополнительные цепи между буферным повторителем и микроконтроллером.
14. В качестве устройств индикации на плате предусмотрены четыре светодиода Б81-084, подключенных к линиям РА0-РА3, которые в микроконтроллерах АТ918АМ78 имеют удвоенную нагрузочную способность 16 мА (для всех остальных — 8 мА). Светодиоды, аналогично многим описанным выше цепям, могут быть отключены размыканием перемычек 1Р24-1Р27.
15. В качестве устройства внешней памяти, предназначенного для хранения данных, на плате размещена микросхема последовательной ЕЕРИОМ класса Сгур1оМешогу объемом 256 кбит, подключенная к микроконтроллеру по интерфейсу Т’Ш/РС. Следует помнить, что энергонезависимое хранение данных можно реализовать и во ЕЫЬ-памяти микроконтроллера, которая в АТ918АМ78 поддерживает функцию самопрограммирования.
Аппаратное обеспечение: внутрисхемный эмулятор АТ91БАМ-1СЕ.
Недорогой внутрисхемный эмулятор АТ91ЭАМ-1СЕ (рис. 2) был выпущен корпорацией А1ше1 совсем недавно. Он построен на базе популярного во всем мире эмулятора иЬтк фирмы Segger. Ввиду этой «родственной» связи АТ9^АМ-1СЕ подходят все программные средства, выпускаемые для иЬтк. Единственное отличие этих аппаратных устройств состоит в том, что эмулятор АТ9^АМ-1СЕ поддерживает только АИМ-микроконтроллеры производства А1ше1.
Данный эмулятор может быть использован для решения двух задач.
1. Внутрисхемная отладка на этапе разработки. Эмулятор может работать с любой целевой платой на базе микроконтроллера AT91SAM7S. Тем не менее, для разработчиков, не знакомых с данной платформой, рекомендуется использовать эмулятор в паре со стартовым набором AT91SAM7S-EK. ИОРДрайвер [6], поддерживающий АТ9^АМ-1СЕ, расширяет базовые возможности РЛ1-совмести-мых отладчиков следующим образом:
- поддержка неограниченного числа программных точек останова;
- поддержка точек останова при отладке программы из ЕЫЬ-памяти;
- поддержка АТ9^АМ-1СЕ в отладчиках, изначально его не поддерживающих.
2. Внутрисхемное программирование ЕЫЬ-памяти микроконтроллера при серийном производстве.
Рис. 2. Внутрисхемный эмулятор AT91SAM-ICE
Ориентированная на эту задачу программа J-Flash [6] поддерживает одновременное программирование нескольких устройств, соединенных последовательно по интерфейсу JTAG (в «дейзи»-цепочку). Поддерживаются бинарный и Intel-HEX форматы файлов.
Описанные выше аппаратные устройства составляют необходимый «минимум» для комфортной работы с испытуемым кристаллом.
Программные средства поддержки разработок
Программное обеспечение для МК SmartARM достаточно разнообразно. В основном это программные продукты сторонних фирм, полный список которых приведен на сайте w ww .at91.c om в разделе Third party.
С чего начать? Оценочная версия Си-компилятора (как правило, с ограничением на объем генерируемого бинарного/НЕХ-фай-ла) включена на DVD-диск, входящий в состав перечисленных выше аппаратных средств разработки Atmel. Ее также можно найти на сайте w ww .at91.c om в разделе Third party ^ Development Tools. Там же в разделе KIT ^ AT91SAM7S-EK ^ Software можно выбрать примеры программ для любой пары «микроконтроллер-компилятор». В разделе Getting Started ^ AT91SAM7S-EK выбираем используемый компилятор и следуем инструкциям по его установке и запуску демонстрационного проекта.
Отметим следующее:
1. В рекомендациях по установке могут упоминаться «заплатки» (patch) для компилятора, которые необходимо обязательно установить. Это позволит избежать ряда проблем, которые возникают при совместной работе аппаратной и программной части. Последнюю версию RDI-драйвера (файлы JLinkRDI.dll и JLinkARM.dll) лучше взять на сайте фирмы Segger [6] из набора J-Link ARM software and documentation pack.
2. При первом включении эмулятора AT91SAM-ICE системой будет запрошен драйвер, который необходимо взять из набора J-Link ARM software and documentation pack, упомянутого в п. 1. Сам процесс установки драйвера описан на сайте w ww .at91.c om в разделе Getting ^ Started-SAM-ICE.
3. Примеры программ включают в себя функции инициализации периферийных блоков микроконтроллера и их работы в различных режимах. Отдельно выделен пример реализации USB Flash-накопителя на базе AT91SAM7S и Flash-памяти типа NAND.
4. Каждый пример программы является законченным проектом. Информация о проекте в структурированном виде размещена в папке проекта (файл main.html) и содержит ссылки на описание функций библиотеки lib_AT91SAM7S64.h, которая при разработке собственного проекта станет хорошим подспорьем для программиста.
Если проект готов, а эмулятора AT91SAM-ICE
нет под рукой, то можно воспользоваться упомянутой ранее утилитой SAM-BA, которая при помощи встроенного в микроконтроллер одноименного загрузчика позволяет изменять содержимое Flash-памяти. Процесс установки утилиты описан на сайте w ww .at91.c om в разделе Getting Started.
Последовательность дальнейших действий проста. Для того чтобы запрограммировать бинарный файл во Flash-память микроконтроллера, необходимо после запуска программы перейти на закладку «Flash», выбрать требуемый бинарный файл и нажать кнопку «Send File». В статусной строке появится сообщение о результате операции. Командой «go 0x00100000» либо повторным включением питания микроконтроллера программа во Flash-памяти будет запущена на выполнение.
Помимо функции программирования Flash-памяти, утилита SAM-BA (рис. 3) позволяет выполнять следующие операции:
• просматривать содержимое заданного фрагмента памяти микроконтроллера и изменять его по словам;
• загружать из файла и сохранять заданный фрагмент памяти микроконтроллера;
• сравнивать содержимое памяти микроконтроллера с данными из файла;
• запускать программу в микроконтроллере с определенного адреса;
• выполнять действия TCL-интерпретатора [7], встроенного в программу (команды, не входящие в стандартный список TCL, описаны в руководстве пользователя SAM-BA). Последовательность действий, выполняемая
с помощью графического интерфейса и в командной строке, может быть записана и в дальнейшем многократно повторена одной командой запуска сценария (меню «Script File»).
Заключение
На современном этапе развития электроники наблюдается тенденция увеличения использования 32-битных МК, которые по своей стоимости и простоте освоения вплотную приблизились к 8-разрядным платформам. Такая тенденция стимулирует переход многих разработчиков к перспективным с точки зрения производительности и возможностей современным 32-разрядным микроконтроллерам. ■
Литература
1. Курилин А. И. 32-разрядные микроконтроллеры AT91SAM7S с интерфейсом USB производства компании Atmel // Компоненты и технологии. 2005. № 6.
2. w w w.atmel.c om
3. w ww .at91.co m
4. w ww .arm.c om
5. ww w .usb.o rg
6. w ww .segger.c om
7. w ww .tcl.tk
8. w ww .at91.c om/pdf/Datasheet/EvaluationBoard/ SAM7SEK/sam7s%20user%20guide.pdf