32-разрядные микроконтроллеры AT91SAM7S: с чего начать?
Около года назад в журнале "Компоненты и Технологии" была опубликована статья [1], посвященная новинке того времени - 32-х разрядным микроконтроллерам AT91SAM7S семейства SmartARM производства корпорации Atmel. За прошедшее время многие разработчики уже успели перевести свои проекты с 8-разрядных микроконтроллеров на эту быструю, удобную и привлекательную по цене платформу. Тем не менее, для некоторых разработчиков до сих пор остается не совсем ясным, с чего нужно начинать разработку на SmartARM и как оценить возможности кристаллов этой линейки. В данной статье представлено краткое описание необходимого набора аппаратных и программных средств поддержки разработок для начала работы с микроконтроллерами SmartARM.
Аппаратное обеспечение: стартовый набор AT91SAM7S-EK
В качестве базового стартового набора корпорацией Atmel предлагается набор AT91SAM7S-EK, построенный на базе микроконтроллера AT91SAM7S256. Тем не менее, данный набор был спроектирован в качестве универсального: он поддерживает все микросхемы данной линейки, в том числе AT91SAM7S32, выпускаемый в корпусе TQFP48.
В состав набора входит базовая плата (рис.1), кабель USB A-B, а также диск с документацией и программным обеспечением. Вопреки сложившемуся стереотипу, что средства разработки для 32-разрядных микроконтроллеров недоступны по цене, розничная цена этого набора на российском рынке составляет 160 - 200$.
Рис. 1. Базовая плата набора AT91SAM7S-EK
AT91SAM7S-EK предназначен для оценки возможностей ядра микроконтроллера SmartARM и его основных периферийных узлов. Для этого на базовой плате реализованы следующие цепи (пронумерованы на рис.1):
- Распаянный микроконтроллер AT91SAM7S256. При необходимости, его можно демонтировать и установить любой другой микроконтроллер серии AT91SAM7S. Для кристалла AT91SAM7S32, который опрессован в корпус TQFP48, предусмотрена посадочная площадка, которая в данный момент скрыта под уже распаянной на плате микросхемой. Для повышения помехоустойчивости каждая линия питания микроконтроллера (VDDIO, VDDANA, VDDIN, VDDCORE, VDDFLASH, VDDPLL) снабжена блокировочными конденсаторами. Резистор R15 и конденсаторы С23, С24 образуют фильтр второго порядка для блока ФАПЧ.
- Для формирования стабильной тактовой частоты генератор микроконтроллера снабжен внешним кварцем на частоту 18,432 МГц. Это значение выбрано для обеспечения работы программ, демонстрирующих работу интерфейсов USART и DBGU микроконтроллера. Во всех примерах программ (о них будет сказано ниже) код инициализации микроконтроллера низкого уровня написан именно для этого значения частоты кварцевого резонатора. Для удобства пользователя на плате также предусмотрена возможность установки кварца в корпусном исполнении для поверхностного монтажа и монтажа в отверстия.
Следует отметить, что при включении питания микроконтроллер стартует от внутреннего RC-генератора, а переключение на кварцевый генератор производится программно только после стабилизации его тактовой частоты, что составляет не более 15 мс [1].
- Все цифровые и аналоговые линии ввода/вывода микроконтроллера, которые могут потребоваться для подключения внешней периферии, выведены на отдельный разъем. Каждый вывод разъема пронумерован в соответствии с его функциональным наименованием, а не в соответствии с номером вывода микроконтроллера. Например, вывод разъема с номером "21" соответствует выводу микроконтроллера с наименованием "PA21".
- Макетная площадка, предназначенная для монтажа внешней периферии, требуемой для обеспечения разработки конечного устройства. Площадка имеет 22х8 изолированных друг от друга контактных площадок. Для питания монтируемых на эту площадку элементов предусмотрена линейка контактных площадок питания 3.3В (сверху) и общего провода (снизу).
- Для вариаций с питанием микроконтроллера на плате предусмотрена возможность установки джамперов вместо короткозамкнутых перемычек JP13 (VDDFlash), JP14 (VDDIO), JP20 (ADVREF), JP21 (VDDPLL), JP22 (VDDIN), JP23 (VDDCORE). Такая функциональность может быть полезна, например, при подключении внешнего стабилизированного источника питания либо при включении в цепь амперметра для измерения энергопотребления отдельных блоков микроконтроллера.
- При установке джампера JP28 на выводе ERASE микроконтроллера выставляется сигнал логической "1", что инициирует полную очистку Flash-памяти и битов защиты (Lock и Security) Flash-памяти микроконтроллера. В целевом устройстве этот вывод может быть использован для защиты интеллектуальной собственности разработчика, а на данной плате - для сброса битов защиты с целью дальнейшего перепрограммирования Flash-памяти.
- В микросхемах AT91SAM7S предусмотрена возможность внутрисхемного программирования Flash-памяти по интерфейсам USB или DBGU без использования внешних программаторов. Функционально это реализовано следующим образом: в ROM-памяти всех микроконтроллеров AT91SAM7S содержится микрокод загрузчика SAM-BA, который должен быть загружен во Flash-память. После того, как загрузчик в микроконтроллере активирован, на верхнем уровне (ПК) запускается одноименная программа, которая устанавливает связь с загрузчиком и программирует Flash-память. На плате стартового набора активация загрузчика инициируется установкой джампера JP5, который выставляет на выводе TST микросхемы сигнал логической "1". Сигнал должен быть удержан при включенном питании не менее 10 секунд, после чего при повторном включении питания происходит запуск загрузчика из Flash-памяти. О программе верхнего уровня будет написано ниже.
- Питание платы может осуществляться от внешнего источника питания напряжением от 7 до 14 Вольт либо по интерфейсу USB. Независимо от того, что используется в качестве источника, стабилизированное напряжение 3.3В формируется на выходе стабилизатора напряжения, реализованного на плате (область 8). Стабилизатор имеет на входе выпрямительный мост, что позволяет не заботиться о полярности при подключении внешнего блока питания.
- Для подключения внутрисхемного эмулятора на плате предусмотрен стандартный для ARM-контроллеров 20-контактный JTAG разъем. Перемычка JP19 определяет, в каком из режимов будет использоваться JTAG-интерфейс [4]:
- в режиме граничного сканирования (Boundary Scan) - перемычка замкнута, высокий уровень на входе JTAGSEL;
- аппаратной внутрисхемной отладки (ICE) - перемычка разомкнута, используется внутренний pull-down резистор входа JTAGSEL.
В зависимости от типа используемого внутрисхемного отладчика может потребоваться разорвать перемычку JP4 (например, это может потребоваться при использовании устройства Wiggler фирмы Macraigor).
- Два разъема DB9 предназначены для подключения микроконтроллера к компьютеру по интерфейсам USART и DBGU. Для согласования логических уровней RS-232 <-> КМОП на плате предусмотрены соответствующие микросхемы. Если на этапе отладки потребуется подключить сигналы USART или DBGU к устройствам с логическими уровнями, отличными от RS-232, то можно отсоединить преобразователь уровней от микроконтроллера при помощи короткозамкнутых перемычек JP6-JP9 и JP11, JP12. При этом можно воспользоваться образовавшимися свободными выводами для соединения с целевым устройством.
- Интерфейс USB со всеми требуемыми элементами обвязки и цепями защиты насчитывает порядка 20 элементов. Сюда входят фильтрующие, стабилизирующие и защитные цепи, а также 2 ключа, выполненные на MOSFET-транзисторах TR1 и TR2. Ключи позволяют программно подключать и отключать подтягивающий резистор 1.5кОм на линии D+ интерфейса USB, эмулируя тем самым отключение USB-устройства от хост-контроллера [5]. Если эмуляция не нужна, то необходимо разорвать короткозамкнутые перемычки JP1 и JP2, чтобы освободить управляющие линии PA13 и PA16 микроконтроллера.
В качестве интерфейса пользователя предусмотрено 4 кнопки, подключенные к линиям PA14, PA15, PA19 и PA20. Каждая кнопка осуществляет замыкание соответствующей линии на общий провод.
- Для ввода аналогового сигнала входы J7-J10 через буферный повторитель подключены к аналоговым входам AD4, AD5 и к мультиплексированным аналого-цифровым линиям PA17, PA19 микроконтроллера. На выходах буферного повторителя предусмотрены короткозамкнутые перемычки JP24-27, позволяющие отключить цепи аналогового ввода либо включить какие-либо дополнительные цепи в разрыв связи с микроконтроллером.
- В качестве устройств индикации на плате предусмотрено 4 светодиода DS1-DS4, подключенные к линиям PA0-PA3, которые в микроконтроллерах AT91SAM7S имеют удвоенную нагрузочную способность. Светодиоды, аналогично многим описанным выше цепям, могут быть отключены разрывом короткозамкнутых перемычек JP24-JP27.
- В качестве устройства внешней памяти, предназначенного для хранения данных, на плате размещена микросхема последовательной EEPROM класса CryptoMemory объемом 256кбит, подключенная к микроконтроллеру по интерфейсу TWI / I2C. Следует помнить, что энергонезависимое хранение данных можно реализовать и во Flash-памяти микроконтроллера, которая в AT91SAM7S поддерживает функцию самопрограммирования.
Специалисты отмечают, что принцип построения базовой платы AT91SAM7S-EK является удачным. Плата удобна как для начинающего разработчика, так и профессионала.
Аппаратное обеспечение: внутрисхемный эмулятор AT91SAM-ICE
Недорогой внутрисхемный эмулятор AT91SAM-ICE (рис.2) был выпущен корпорацией Atmel совсем недавно. Он построен на базе популярного во всем мире эмулятора J-Link фирмы Segger. Ввиду этой "родственной" связи, для AT91SAM-ICE подходят все программные средства, выпускаемые для J-Link. Единственное отличие этих аппаратных устройств состоит в том, что эмулятор AT91SAM-ICE поддерживает только ARM-микроконтроллеры производства Atmel.
Рис. 2. Внутрисхемный эмулятор AT91SAM-ICE
Данный эмулятор может быть использован для двух задач:
- Внутрисхемная отладка на этапе разработки.
Эмулятор может работать с любой целевой платой на базе микроконтроллера AT91SAM7S. Тем не менее, для разработчиков, не знакомых с данной платформой, рекомендуется использовать эмулятор в паре со стартовым набором AT91SAM7S-EK. RDI-Драйвер [6], поддерживающий AT91SAM-ICE, расширяет базовые возможности RDI-совместимых отладчиков:
- поддержка неограниченного числа программных точек останова;
- поддержка точек останова при отладке программы из Flash-памяти;
- поддержка AT91SAM-ICE в отладчиках, изначально его не поддерживающих.
- Внутрисхемное программирование Flash-памяти микроконтроллера при серийном производстве.
Ориентированная на эту задачу программа J-Flash [6] поддерживает одновременное программирование нескольких устройств, соединенных по JTAG в "дейзи"-цепочку. Поддерживаются бинарный и Intel-HEX форматы файлов.
Описанные выше аппаратные устройства составляют необходимый "минимум" для комфортной работы с испытуемым кристаллом.
Программные средства поддержки разработок
Программное обеспечение для SmartARM достаточно разнообразно. В основном - это программные продукты сторонних фирм, полный список которых приведен на сайте www.at91.com в разделе "Third party".
С чего начать? Оценочная версия С-компилятора (как правило, с ограничением на объем генерируемого бинарного/HEX файла) включена на DVD-диск, входящий в состав перечисленных выше аппаратных средств разработки Atmel. Ее также можно найти на сайте www.at91.com в разделе "THIRD PARTY" -> "DEVELOPMENT TOOLS". Там же в разделе "KIT" -> "AT91SAM7S-EK" -> "SOFTWARE" можно выбрать примеры программ для любой пары микроконтроллер-компилятор. В разделе "GETTING STARTED" -> "AT91SAM7S-EK" выбираем используемый компилятор и следуем инструкциям по его установке и запуску демонстрационного проекта.
Отметим следующее:
- В рекомендациях по установке могут упоминаться "заплатки" (patch) для компилятора, которые необходимо обязательно установить. Это позволит избежать ряда проблем, которые возникают при совместной работе аппаратной и программной части. Последнюю версию RDI-драйвера (файлы JLinkRDI.dll и JLinkARM.dll) лучше взять на сайте фирмы Segger [6] из набора "J-Link ARM software and documentation pack".
- При первом включении эмулятора AT91SAM-ICE системой будет запрошен драйвер, который необходимо взять из набора "J-Link ARM software and documentation pack", упомянутого в пункте 1. Сам процесс установки драйвера описан на сайте www.at91.com в разделе "GETTING STARTED" -> "SAM-ICE".
- Примеры программ включают в себя функции инициализации периферийных блоков микроконтроллера и их работы в различных режимах. Отдельно выделен пример реализации USB Flash-накопителя на базе AT91SAM7S и NANDFlash.
- Каждый пример программы является законченным проектом. Информация о проекте в структурированном виде размещена в папке проекта (файл main.html) и содержит ссылки на описание функций библиотеки lib_AT91SAM7S64.h, которая при разработке собственного проекта станет хорошим подспорьем для программиста.
Если проект готов, а эмулятора AT91SAM-ICE нет под рукой, то можно воспользоваться упомянутой ранее утилитой SAM-BA, которая при помощи встроенного в микроконтроллер одноименного загрузчика позволяет изменять содержимое Flash-памяти. Процесс установки утилиты описан на сайте www.at91.com в разделе "GETTING STARTED".
Последовательность дальнейших действий проста. Для того, чтобы запрограммировать бинарный файл во Flash-память микроконтроллера, необходимо после запуска программы перейти на закладку "Flash", выбрать требуемый бинарный файл и нажать кнопку "Send File". В командной строке появится сообщение о результате операции. Командой "go 0x00100000" либо повторным включением питания микроконтроллера программа во Flash-памяти будет запущена на выполнение.
Помимо этой функции, утилита SAM-BA позволяет выполнять следующие операции:
- просматривать содержимое заданного фрагмента памяти микроконтроллера и изменять его по словам;
- загружать из файла и сохранять в файл заданный фрагмент памяти микроконтроллера;
- сравнивать содержимое памяти микроконтроллера с данными из файла;
- запускать программу в микроконтроллере с определенного адреса;
- выполнять действия TCL-интерпретатора [7], встроенного в программу (команды, не входящие в стандартный список TCL, описаны в руководстве пользователя SAM-BA).
Рис. 3. Пользовательский интерфейс SAM-BA
Последовательность действий, выполняемая с помощью графического интерфейса и в командной строке, может быть записана и в дальнейшем многократно повторена одной командой запуска скрипта (меню "SCRIPT FILE").
Заключение
В современном мире программные и аппаратные средства поддержки разработок для 32-х разрядных микроконтроллеров по своей доступности для понимания приближаются к 8-разрядным платформам, снабжаются качественной и подробной документацией, становятся доступными по цене. Такая тенденция стимулирует переход многих разработчиков к перспективным с точки зрения производительности и возможностей современным 32-х разрядным микроконтроллерам.
Литература:
- Курилин А.И. "32-разрядные микроконтроллеры AT91SAM7S с интерфейсом USB производства компании Atmel" / Компоненты и технологии №6`2005
- www.atmel.com
- www.at91.com
- www.arm.com
- www.usb.org
- www.segger.com
- www.tcl.tk
Алексей Курилин
|