Кроме того, у корпорации ATMEL есть интересная разработка с применением ядра ARM – AT91CAP7. Это полузаказная микросхема, которая представляет собой кристалл с ядром SAM7 и логической программируемой матрицей объемом 200 тыс. ячеек, на которой можно реализовать периферийные модули по спецификациям заказчика. Программирование этой матрицы производится напылением верхнего слоя металлизации. Это требует немалых начальных вложений в разработку топологиии слоя металлизации, но зато себестоимость конечного изделия оказывается существенно ниже, чем в случае, когда используется контроллер и отдельная микросхема программируемой логики. Микросхемы CAP7 экономически целесообразно применять при заказе от 50 тыс. шт.
Микросхемы на базе ядра ARM7, выпускаемые различными производителями, имеют одинаковое ядро и примерно равные объемы встроенных ПЗУ и ОЗУ. Различаются они скоростью работы и набором периферийных модулей. Подход ATMEL заключается в насыщении кристалла разнообразными периферийными контроллерами, которые работают параллельно и разгружают ядро при выполнении операций ввода-вывода. Это позволяет существенно поднять производительность системы, не повышая тактовую частоту работы ядра контроллера, а следовательно, снижая энергопотребление.
Все микросхемы имеют раздельное питание ядра и периферийных модулей – 1,8 и 3,3 В соответственно. Встроенный преобразователь питания ядра позволяет обойтись без внешней микросхемы стабилизатора напряжения. Такое сочетание параметров позволяет применять микроконтроллеры SAM7 в самых различных приложениях, в том числе для построения систем с низким энергопотреблением, работающих в реальном времени.
Основные характеристики микроконтроллеров AT91SAM7
* производительность 30–60 MIPS;
* 32/16-разрядная шина команд (ARM/THUMB);
* 32-разрядная внутренняя шина данных;
* встроенный микромощный RC-генератор и модуль ФАПЧ;
* многоканальный контроллер прямого доступа к памяти (PDC);
* интерфейс device USB, 2.0 Full Speed, 12 Мбит/с со встроенным драйвером и FIFO;
* интерфейс SPI (режим Master/Slave), четыре выхода Chip Select, частота до 25 МГц;
* интерфейс SSC с поддержкой режима I2S, частота до 25 МГц;
* интерфейс USART, частота до 25 МГц;
* двухпроводный интерфейс TWI (совместимый с I2C), поддержка режима Master Mode;
* интерфейс CAN, поддержка версий 2,0 A и 2,0 B (микросхема SAM7X);
* Модуль Ethernet MAC 10/100 base T (микросхема SAM7X);
* расширенный тактовый генератор и контроллер управления энергопотреблением;
* четыре программируемых внешних источника тактирования;
* контроллер прерываний с расширенными функциями;
* 4-канальный 16-разрядный ШИМ-контроллер;
* встроенный модуль-эмулятор с коммуникационным отладочным каналом;
* встроенный модуль отладки (через UART);
* 32-разрядный таймер реального времени (Real-time Timer) с отдельным прерыванием;
* 2 или 3 трехканальных 16-битных таймера-счетчика;
* 20-разрядный интервальный таймер;
* сторожевой таймер;
* напряжение питания ядра 1,8 В;
* напряжение питания цепей ввода-вывода 3,0–3,6 В;
* 5В-толерантные входы;
* режимы снижения энергопотребления;
* встроенная схема задержки старта по включению питания Power-On Reset;
* встроенная схема сброса при понижении напряжения питания Brown-Out Detector;
* ROM-память с программой для загрузки флеш-памяти через UART или USB-порт;
* защита флеш-памяти от несанкционированного чтения.
Основные параметры контроллеров приведены в таблице.
Микросхемы имеют гибкую конфигурацию портов ввода-вывода. Каждая линия порта может быть входом, входом с подтягивающим резистором, входом с аппаратной фильтрацией ложных узких импульсов ("иголок"), обычным выходом, выходом с тристабильным состоянием, выходом с открытым стоком. Кроме этого, каждая линия портов ввода-вывода может являться входом прерывания. Управление состоянием каждой линии осуществляется через соответствующий бит регистра контроллера параллельного ввода-вывода (PIO Parallel Input/Output Controller). Таким образом, возможна как независимая манипуляция каждым битом, так и модификация состояния группы выводов за одну операцию записи. Структура порта ввода-вывода представлена на рис.1.
Корпорация ATMEL традиционно снабжает свои микроконтроллеры обширным набором интерфейсов, более того, периферия микроконтроллера может быть переинициализирована "на лету". Например, модуль USART можно запрограммировать на работу в обычном асинхронном режиме с использованием только линий TXD и RXD, а можно инициализировать его как "полноценный" 9-проводный интерфейс RS-232 или как синхронный 3-проводный интерфейс со скоростью обмена до 25 Мбит/с. Если же используется протокол RS-485 в полудуплексном режиме, можно запрограммировать дополнительный вывод микроконтроллера для аппаратного управления направлением передачи микросхемы-драйвера интерфейса.
Периферийный DMA-контроллер
Микроконтроллер должен, во-первых, обеспечивать взаимодействие с внешними устройствами и, во-вторых, предоставлять программисту наилучшие условия управления процессом выполнения этих операций. Также нужно обеспечить бесшовную и непрерывную передачу данных между памятью и периферийными устройствами без остановок на переинициализацию счетчика транзакций. Это особенно актуально, когда необходимо передавать потоки данных одновременно по нескольким каналам. Таким образом, в ряде задач на первое место выходит подсистема обслуживания обмена данными между внешними устройствами и внутренней памятью контроллера, т. е. модуль прямого доступа к памяти.
Каналы прямого доступа к памяти не являются неотъемлемой частью процессора ARM7TDMI. Центральный процессор может сам пересылать данные побайтно. Это просто, пока количество передаваемых данных односительно невелико. Однако когда скорость передачи данных превышает 1 Мбит/с, даже у быстрых процессоров может не хватит ресурсов. Например, на частоте ядра 50 МГц передача со скоростью 1 Мбит/с занимает 28% ресурса процессора ARM7TDMI. Передача со скоростью 2 Мбит/с занимает более половины ресурсов процессора, а при скорости 4 Мбит/с процессор уже не способен выполнять параллельно другие операции.
Если положить, что максимальная скорость передачи по интерфейсу USB 2.0 составит 12 Мбит/с, Ethernet будет работать на 100 Мбит/с, а порты SPI и USART на 25 Мбит/с, становится понятно, что процессы пересылки данных должны обслуживаться выделенной системой.
Компания ATMEL добавила в архитектуру процессоров семейства ARM7 многоканальный контроллер периферийных каналов прямого доступа к памяти (Peripheral DMA controller, PDC), который напрямую осуществляет обмен данными между периферийными устройствами, внутренними регистрами и внешней памятью.
Структурная схема периферийного контроллера прямого доступа к памяти представлена на рис.2.
Основная часть периферийных модулей AT91SAM7 имеет два выделенных канала PDC — один для приема, другой для передачи данных. Пользовательский интерфейс канала периферийного контроллера PDC встроен в память каждого периферийного модуля и содержит 32-битный регистр-указатель адреса, 16-битный регистр-счетчик пересылок, 32-битный регистр для указателя следующего адреса памяти и 16-битный регистр-счетчик для следующих пересылок. Периферийные модули переключают потоки данных PDC, используя сигналы приема-передачи. По окончании пересылки первого программного блока данных соответствующий периферийный модуль генерирует прерывание окончания пересылки. Автоматически начинается пересылка второго блока данных, а обработка данных первого блока может выполняться параллельно процессором ARM. Этим исключаются медленные прерывания в режиме реального времени, замедляющие обновление регистров-указателей в процессоре, и поддерживается высокоскоростная пересылка данных в периферийный модуль. PDC имеет выделенные регистры состояния, указывающие для каждого канала возможность или невозможность пересылки. В любой момент времени можно считать из памяти адрес размещения очередной пересылки и количество оставшихся пересылок.
Когда периферийный модуль принимает внешний символ, он посылает сигнал готовности приема на PDC, который, в свою очередь, запрашивает доступ к системной шине. По получении доступа PDC начинает считывание регистра удержания приема (Receive Holding Register — RHR) периферийного модуля и затем инициирует запись в память. После каждой пересылки счетчик-указатель памяти PDC инкрементируется, а количество оставшихся пересылок декрементируется. Когда достигается величина блока памяти, автоматически начинается пересылка следующего блока или на периферийный модуль посылается сигнал, и пересылка останавливается. Аналогичная процедура (в обратном порядке) повторяется в случае выдачи блока данных из памяти во внешнее устройство.
Если на идентичные периферийные модули приходят одновременно запросы одного типа (приема или передачи), приоритет определяется по порядковому номеру периферийного модуля. Если запросы на пересылку не одновременны, они обрабатываются в порядке поступления. Первыми обрабатываются запросы от принимающих модулей, затем – запросы от передающих модулей.
Модуль PDC содержит два набора регистров-счетчиков для обеспечения непрерывности передачи блоков данных большого объема. При переполнении одного счетчика PDC загружает значение следующего счетчика в сдвиговый регистр, генерирует прерывание и обновляет следующий счетчик. Один набор счетчиков-регистров используется для первоначальной пересылки, а другой – для последующей, что позволяет программисту поочередно переключать DMA-каналы, обеспечивая непрерывность процесса пересылки данных между DMA и периферийными модулями.
В отличие от традиционных структур прямого доступа к памяти, пересылки PDC не выражаются в количестве 8, 16, 32 бит или байт, слов или полуслов. Счетчик пересылок управляет циклами передачи по 32-битной шине, и при этом периферийный модуль определяет, какая именно будет пересылка (в объеме байта, слова или полуслова). Если периферийный модуль запрограммирован на пересылку 8-разрядных данных, контроллер PDC может пересылать 64 Кбайт данных методом пересылки блоков. Если запрограммированы 16-бит пересылки, он перемещает 128 Кбайт данных, и, соответственно, если пересылаются 32-разрядные данные, максимальный объем операции составляет 256 Кбайт.
Для упрощения программирования программные регистры PDC встроены в каждый периферийный модуль. Регистр и счетчик размещены в адресном пространстве устройств ввода-вывода, поэтому программист видит перечень регистров и указателей: адреса и объемы для текущего и следующего счетчиков и регистр контроллера разрешения-запрещения пересылки. Модуль PDC работает по прерываниям, не нарушая работу процессора. Таким образом существенно уменьшается количество циклов процедуры синхронизации, требуемых для пересылки данных, а также освобождается MCU от дополнительной работы по управлению. Схемы DMA в архитектуре SAM7 позволяют ему одновременно выполнять функции коммуникационного контроллера и универсального процессора даже при высоких скоростях пересылки данных. Например, процессор SAM7 использует только 2% своей вычислительной мощности для пересылок данных на скорости 4 Мбит/с. Он поддерживает пересылки на частоте 25 МГц по интерфейсам SPI или USART и при этом имеет 96% доступных ресурсов для выполнения основной программы.
Поддержка приложений реального времени
В ряде случаев встроенные системы функционируют как системы реального времени. К сожалению, большинство 32-разрядных контроллеров, обладающих достаточной вычислительной мощностью для реализации тех или иных алгоритмов, слабо приспособлены для работы в режиме реального времени.
Высокоскоростная 25-нс флеш-память на микроконтроллерах SAM7 позволяет за один цикл получить команду из памяти, исключая необходимость кэширования кода и гарантируя непрерывную обработку процессов. Структура без использования конвейера для хранения команд имеет очень малое время реакции на выполнение команд переходов и вызовов процедур, потому что при этом не нужно тратить дополнительное время на заполнение конвейера. SAM7 может обеспечить производительность 38 MIPS, не используя кэширование флеш-памяти, и 50 MIPS при выполнении программы из СОЗУ.
Системы реального времени, как правило, работают по прерываниям. SAM7 имеет набор индивидуально маскируемых векторов источников прерываний и контроллер прерываний с 8 уровнями приоритетов, постоянно хранящимися в SRAM, что позволяет оперативно управлять приоритетом прерываний.
Процедуры чтения, изменения и записи (Read/Modify/Write), которые индивидуально устанавливают или сбрасывают бит в пространстве ввода-вывода, достаточно известны в системах реального времени, но, как правило, выполняются 32-разрядными MCU неоптимально – стандартный ARM-контроллер требует 15 тактов для выполнения операции модификации состояния вывода микросхемы. В SAM7 каждый периферийный модуль имеет свои выделенные регистры "установки" (set) и "сброса" (clear). Это позволяет обойтись 6-цикловой последовательностью загрузки, перемещения и хранения (load/move/store) для управления маскированиями прерываний, процедурами установки и сброса битов. В итоге время на эти операции уменьшается на 60%.
Другое "узкое" место 32-битных процессоров – отсутствие "супервизорских" функций для предупреждения неожиданного сброса системы вследствие проблем с питанием. SAM7 содержит на кристалле полный набор модулей для слежения за питанием: схему задержки запуска при подаче питания, схему слежения за уровнем напряжения питания, встроенный RC-генератор и, естественно, сторожевой таймер.
Защита флеш-памяти
Контроллеры SAM7 имеют две системы защиты флеш-памяти, одна из которых отвечает за модификацию содержимого памяти, а вторая запрещает несанкционированное чтение флеш-памяти. Флеш-память контроллеров SAM7 разделена на регионы, например, контроллер AT91SAM7X256 имеет 16 регионов, каждый из которых содержит 64 страницы по 256 байт, суммарно 16 Кбайт. В контроллере флеш-памяти есть 16-разрядный регистр, каждый бит которого привязан к определенному региону памяти. Состояние бита разрешает или запрещает стирание/модификацию памяти в соответствующем регионе. В случае попытки произвести эти операции в "залоченном" регионе, генерируется прерывание. Каждый бит регистра может быть установлен или сброшен. При выполнении операции стирания флеш-памяти все биты этого регистра очищаются, и вся память доступна для модификации.
Еще один бит, бит защиты, выполняет функцию запрещения несанкционированного чтения содержимого флеш-памяти. При установленном бите защиты любой доступ к памяти, в том числе через JTAG-интерфейс или интерфейс быстрого программирования, запрещен. Есть единственная возможность сбросить этот бит – произвести операцию стирания микросхемы, причем бит защиты сбрасывается только после окончания процесса стирания всего массива флеш-памяти.
Микроконтроллер AT91SAM7X
Пожалуй, наиболее интересным представителем семейства SAM7 является микроконтроллер AT91SAM7X. Эта микросхема, несмотря на малогабаритный 100-выводной корпус, имеет очень богатый набор периферии:
* 2 порта SPI, поддержка режима Master/Slave, 8- и 16-битный обмен;
* порт TWI, аналог порта I2C;
* порт USB device, режим USB 2,0 Full Speed, 12 Мбит/с;
* порт SSC, поддержка режима I2S;
* порт CAN, поддержка режима 2,0 А и 2,0 В;
* 1 порт UART;
* 2 порта USART, аппаратная поддержка протоколов RS-485 и ISO7816 T0/T1 Smart Card;
* JTAG-порт;
* 10-битный 8-канальный АЦП с временем преобразования 2 мкс;
* модуль Ethernet MAC 10/100.
Структура микроконтроллера SAM7X представлена на рис.3.
Таким образом, пользователь получает систему на кристалле, позволяющую строить на ее основе высокоинтегрированные малогабаритные одноплатные контроллеры, которые могут общаться с внешним миром по интерфейсам семи различных типов. Следует отметить, что микросхема не имеет классического параллельного интерфейса с шинами адреса и данных. Однако, если проанализировать структуру типового прибора на микроконтроллере с параллельной шиной, то можно увидеть, что к ней обычно подключаются микросхемы внешних интерфейсов, которые уже входят в состав кристалла SAM7X, причем суммарная скорость обмена по этим последовательным интерфейсам существенно превосходит привычное решение с внешними периферийными контроллерами. Это можно наглядно проиллюстрировать на примере системной платы современного персонального компьютера, где параллельные интерфейсы практически вытеснены последовательными. На смену интерфейсу IDE пришел более быстрый SATA, принтеры теперь подключаются по интерфейсу USB, и даже требовательные к высокоскоростному обмену видеокарты отказались от параллельных PCI и AGP интерфейсов и перешли на последовательный PCI-Express, конечно, многоканальный. Да и микросхемы BIOS работают по последовательному интерфейсу SPI.
На самом деле параллельный интерфейс в современных условиях актуален только для высокоскоростного обмена с внешней памятью. Но учитывая, что микросхема SAM7X имеет "на борту" до 128 Кбайт оперативной памяти и до 512 Кбайт флеш-памяти, внешняя память потребуется далеко не в каждом случае. Если же объем программного кода окажется больше полумегабайта, можно его часть разместить во внешней 8-выводной микросхеме флеш-памяти с интерфейсом SPI серии AT25, емкостью от 1 до 8 Мбайт, и такое решение займет намного меньшую площадь печатной платы.
Программные средства компиляции
Так как микросхемы на базе ядра ARM7 выпускаются в течение продолжительного времени, для них предлагается множество пакетов программирования, коммерческих и бесплатных. На начальной стадии изучения микросхем SAM7 в качестве программной среды удобно использовать пакет IAR KickStart шведской компании IAR (www.iar.com). Это бесплатная полнофункциональная, но ограниченная размером кода 32 Кбайт версия пакета IAR Embedded Workbench. Если требуется компилировать код большего объема, можно воспользоваться evaluation-версией пакета со сроком действия 30 дней и без возможности переустановки. При необходимости можно приобрести полную версию пакета в конфигурации Standard (полная версия пакета), Limited (без отладчика C-SPY, модулей RTOS и поддержки MISRA C) или Baseline (ограничение по размеру кода и отсутствие годовой технической поддержки).
В отличие от IAR, английская компания Rowely (www.rowley.co.uk/) предлагает другую концепцию своего пакета CrossWorks. В состав пакета входит бесплатный компилятор С/С++ и ассемблер (GNU Compiler Collection), а также собственные библиотеки CrossWorks C Library и CrossWorks Tasking Library. Eще один программный пакет для работы с ARM-контроллерами предлагает немецкая компания KEIL (www.keil.com).
Пользователи, предпочитающие бесплатный Си-компилятор GCC, могут создавать в нем проекты для микросхем SAM7 как под операционной системой Linux, так и под Windows, если воспользуются портированной под эту ОС версией компилятора WinARM.
На сайте www.atmel.com есть файл с описанием работы в бесплатной среде программирования на базе платформы Eclipse, разработанным компанией IBM и предлагаемым к использованию на условиях Open Source. Проект называется YAGARTO (Yet another GNU ARM toolchain). Дополнительную информацию по этому некоммерческому проекту можно получить на сайте www.yagarto.de/. В этой среде можно использовать недорогой эмулятор Wiggler, что существенно уменьшает начальные затраты программиста. Рабочее окно среды на базе платформы Eclipse представлено на рис.4.
Аппаратные средства
Начинать работу с контроллером SAM7 удобно, имея какую-либо отладочную плату с примерами исходных кодов программ, которые можно запустить на плате. Для этого можно использовать отладочную плату компании ATMEL AT91SAM7X-EK (рис.5).
На плате AT91SAM7X-EK распаян контроллер AT91SAM7X256 и периферийные микросхемы. Внешние интерфейсы выведены на соответствующие разъемы. На плате также предусмотрено макетное поле для установки дополнительных компонентов. К плате AT91SAM7X-EK можно подключить внутрисхемный эмулятор AT91SAM-ICE (рис.6) и совместно с пакетом IAR KickStart получить законченную систему для освоения микроконтроллеров SAM7.
Существенно более дешевым решением является использование платы AS-sam7X и эмулятора AS-JTAG. Плата AS-sam7X является программно совместимым функциональным аналогом платы AT91SAM7X-EK, хотя имет ряд отличий. Она в два раза меньше, есть отличия и в периферии. Плата может быть использована не только как учебная, но и как центральный компонент пользовательского контроллера, поэтому на ней нет макетного поля, но зато сделана разводка под установку стандартных внешних компонентов, таких как, например, микросхема часов реального времени. Внешний вид платы AS-sam7X представлен на рис.7, а блок-схема – на рис.8.
Плата AS-sam7X имеет следующие аппаратные ресурсы:
* микроконтроллер AT91SAM7X256;
* стабилизатор напряжения питания (3,3 В);
* разъемы:
* Ethernet 10/100 Mbps;
* USB типа B, интерфейс USB;
* типа RJ45, интерфейс RS-485;
* DRB-9, интерфейс DBGU-RS-232;
* PLS-5, дополнительный интерфейс RS-232;
* PLD-10 (2 шт.), интерфейс SPI, графический ЖКИ;
* PLD-20 и PLD-40 для подключения внешних сигналов к портам контроллера;
* PLD-28 для подключения модуля радиоинтерфейса на базе трансивера ATR2406;
* PLS-5, два оптоизолированных ключа с "сухими" контактами;
* PLS-6 для четырех аналоговых входов с питанием;
* PLS-5 для вывода аналоговых сигналов с внешнего ЦАП;
* PLD-20 для подключения JTAG-эмулятора (AT91SAM-ICE или AS-JTAG);
* штыревые разъемы для подключения внешних аналоговых сигналов (до 8);
* пять пользовательских кнопок и кнопка "Reset";
* четыре пользовательских светодиода.
На плате предусмотрено место для распайки следующих дополнительных компонентов:
* микросхема ПЗУ серии DataFlash (AT45) в корпусе TSOP28;
* микросхема ПЗУ серии DataFlash (AT45) в корпусе SOIC8;
* микросхема двухканального 8-, 10- и 12-разрядного ЦАП AD5302/12/22;
* температурный датчик AD7415;
* микросхема трехосевого интегрального датчика ускорений ADXL330;
* микросхема часов реального времени DS1307 с возможностью подключения батареи питания;
* разъем карт памяти с интерфейсом SPI;
* генератор тактового сигнала для модуля радиоинтерфейса.
Так как схема платы AS-sam7X максимально совместима со схемой AT91SAM7X-EK, все программные примеры для платы также совместимы. Принципиальную схему платы можно посмотреть здесь: www.as-kit.com/hardware/AS-sam7X/AS-sam7X_sch.pdf.
В качестве недорогой альтернативы эмулятору AT91SAM-ICE можно рекомендовать Wiggler-совместимый эмулятор AS-JTAG (рис.9).
Этот эмулятор подключается к LPT-порту компьютера и через RDI-сервер H-JTAG – к IAR в качестве RDI-эмулятора. При настройке необходимо указать библиотеку hjtag.dll. Скорость работы по сравнению с AT91SAM-ICE конечно ниже, но это – неизбежная плата за дешевизну. AS-JTAG имеет гальваническую развязку, позволяющаю защитить LPT-порт компьютера от выхода из строя в случае некорректных действий с отлаживаемой платой. Попутно эта гальваническая развязка выполняет роль преобразователя уровня 5 В–3,3 В. Особенностью эмулятора AS-JTAG является использование 10-проводного кабеля, что позволяет применять на отлаживаемой плате 10-контактный разъем, при этом существенно экономится площадь платы. Для совместимости в комплект поставки эмулятора входит плата-переходник на стандартный 20-контактный JTAG-разъем. Дистрибутив бесплатного пакета H-JTAG можно загрузить, например, отсюда: www.as-kit.com/software/ARM/h-jtag.
Программирование микросхемы
Для внутрисхемного программирования микроконтроллера по порту USB или RS-232 требуется установить бесплатный пакет AT91 ISP, разработанный в корпорации ATMEL. Он содержит две программы: SAM-BA (SAM Boot Assistant – помощник загрузки) и SAM-PROG. SAM-BA позволяет программировать и настраивать микросхемы семейств AT91SAM7 по интерфейсу USB или RS-232, используя ROM-загрузчик микросхемы. В ROM-загрузчике прописаны константы инициализации модуля ФАПЧ, поэтому при загрузке микросхемы через порт USB на программируемой плате следует устанавливать предписанные номиналы компонентов ФАПЧ и использовать кварцевый резонатор с частотой 18, 432 МГц. В случае использования порта RS-232 требования к частоте кварца не столь жесткие, так как в ROM-загрузчике есть процедура подстройки скорости обмена под различные номиналы кварцевых резонаторов. Таблица с рекомендованными частотами кварцевых резонаторов имеется в файле документации на микросхему. При подаче питания происходит запуск программы ROM-загрузчика, и микросхема готова к программированию. При запуске SAM-BA необходимо правильно указать способ соединения и тип программируемой микросхемы. При первом подключении платы к USB Windows установит для нее драйверы из пакета AT91 ISP.
Для перевода микросхемы AT91SAM7X в режим программирования необходимо провести операцию стирания. Для этого при включенном питании платы на короткое время нужно замкнуть на плате джампер "ERASE", после чего выключить и снова включить питание платы. После подключения платы к компьютеру при помощи кабеля USB или RS-232 необходимо запустить программу SAM-BA. В первом окне нужно выбрать тип отладочной платы на соответствующей микросхеме (например, AT91SAM7X256-EK) и интерфейс обмена (например, "USB connection"). При этом откроется главное окно SAM-BA. Вид главного окна программы SAM-BA представлен на рис.10.
Это окно предоставляет пользователю возможность программирования и чтения как флеш- и СОЗУ, так и внешней памяти Data-флеш. Для загрузки кода во флеш-память микроконтроллера нужно выбрать в окне закладку "флеш", после чего с помощью кнопки "Browse" указать файл для программирования. Приложение SAM-BA поддерживает файлы кода с расширением bin. При нажатии на кнопку "Send File" выбранный файл будет записан во флеш-память контроллера. Процесс программирования занимает несколько секунд. Проверить правильность программирования памяти можно, нажав на кнопку "Compare send file with memory". По умолчанию, контроллер SAM7X выполняет программу из ROM-памяти, поэтому для запуска программы из флеш-памяти необходимо установить специальный бит, который переключит стартовый адрес на начало флеш-памяти с пользовательской программой. Сделать это можно, выбрав строку "Boot from Flash (GPNVM2)" в секции "Script(s)" главного окна SAM-BA и нажав на кнопку "Execute".
На этом работа с SAM-BA завершена, следует закрыть приложение и перезагрузить контроллер. При подключении по USB необходимо переподключить плату, поскольку определение USB-устройств происходит только при их подключении.
Если подключить UART0 (на плате AS-SAM7S-256 маркирован RS-232; не путать с портом DEBUG!) к порту RS-232 компьютера, то в стандартной терминальной программе можно увидеть сообщение, которое пишет плата при загрузке.
Литература
1. Королев Н. Atmel: микроконтроллеры SAM7 и SAM9 в 2008 году. – Электронные компоненты, 2008, №7.
2. Королев Н. 32 разряда от Atmel: развитие ARM-контроллеров. – Компоненты и технологии, 2008, №1.
3. Королев Н., Шабынин А. ARM-микроконтроллеры ATMEL: аппаратные средства разработчика. – ЭЛЕКТРОНИКА: Наука, Технология, Бизнес, 2007, №6.
4. Королев Н. Современные микроконтроллеры ATMEL: акцент на 32 разряда. – Электронные компоненты, 2006, №12.
5. Королев Н. 32-разрядные микроконтроллеры ATMEL на базе ядра ARM7. – Компоненты и технологии, 2006, №6.
6. Редькин П.П. 32/16-битные микроконтроллеры ARM7 семейства AT91SAM7 фирмы Atmel. – Издательский дом "Додека", 2008.