Процессор ARM для начинающих
Написал microsin   
27.12.2008

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

[Выберите чип ARM]

Современные чипы ARM очень сложны, и хорошо их изучить все просто невозможно. Чипы разных производителей различаются набором периферии, размером памяти. Определитесь, с каким чипом ARM будете работать. Я выбрал чип Atmel AT91SAM7X256. Ознакомьтесь с документацией на него - скачайте с сайта Atmel описание (на английском) или зайдите на сайт www.gaw.ru.

Рекомендую следующие ссылки:
http://atmel.com/dyn/products/product_card.asp?part_id=3755
   AT91SAM7X256 - документация, Application Notes, Tools & Software
http://www.gaw.ru/html.cgi/txt/ic/Atmel/micros/arm/AT91SAM7X256_128.htm
   AT91SAM7X256, AT91SAM7X128 - микроконтроллер семейства AT91 на основе ядра ARM Thumb
http://www.gaw.ru/html.cgi/txt/doc/micros/arm/arh_7dtmi/index.htm
   Справочное руководство по процессору ARM7TDMI

Купите книжку "32/16-битные микроконтроллеры ARM7 семейства AT91SAM7 фирмы Atmel" Редькин П. П., Москва, издательский дом "Додека-XXI", 2008 г. Книжка представляет из себя почти дословный перевод документации Atmel на чип AT91SAM7X256. Читать её несравненно легче, чем документацию на английском. Кроме того, в книге и на прилагаемом диске вы найдете примеры программ, опробованных автором.

Rumik2008_Atmel_ARM7.jpg

[Поставьте себе среду разработки]

Рекомендую IAR Embedded Workbench IDE for ARM (далее просто IAR EW ARM). Сейчас доступна уже версия 5.3 (на момент написания статьи 1 декабря 2008 года), но можно поставить и 4-ю версию. Позагружайте и покомпилируйте примерчики, которые можете найти в папке c:\Program Files\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\examples\Atmel\at91sam7x-ek\. Там есть довольно простые примеры (и что самое главное - полезные, сам брал оттуда рабочий код).

[Макетка]

Когда надоест играться с симулятором, определитесь с отладочной платой. Спаять макетку самому со 100-выводным чипом нет смысла, лучше купить. На рынке сейчас есть 3 платы для AT91SAM7X256 (а сейчас, может быть, уже больше):

1. SAM7-EX256 от компании Olimex http://www.olimex.com/dev/sam7-ex256.html, http://sam7-ex256.narod.ru/
Она стоит 6500 рублей в Чип-И-Дип, 4360 в Терраэлектроника.
2. AT91SAM7X-EK от Atmel http://atmel.com/dyn/products/tools_card.asp?tool_id=3759
стоит $390 в Терраэлектроника (http://www.terraelectronica.ru/catalog_info.php?CODE=219151&Name=AT91SAM7X-EK&Razdel=967&TableName=class_19_2_26_6&Open=1). В Чип-И-Дип она под заказ 13500 рублей.
3. Макетная плата AT91SAM7X (http://microsin.ru/content/view/779/44/). Готовая плата стоит 1600 (!) рублей, можно купить пустую плату (500 рублей) или набор для сборки (1000 рублей).

Самый дешевый вариант макетки - AT91SAM7X (сильно облегченный аналог SAM7-EX256) - 1600 рублей.

Забегая вперед скажу, что сам выбрал SAM7-EX256 от компании Olimex (в то время платы AT91SAM7X еще не было), хотя выбор далеко неоднозначный, каждый вариант имеет свои плюсы. Коротко перечислю различия плат SAM7-EX256 и AT91SAM7X-EK, их достоинства и недостатки.

[Плюсы SAM7-EX256]
- хорошая цена
- плата компактная
- в комплекте есть цветной графический LCD индикатор NOKIA6610 (поганый индикатор, конечно, но что вы хотели за такие деньги?)
- на плате имеется распаянный интерфейс CAN, выведенный на разъем DB9
- разведен чуствительный усилитель для микрофона, есть аналоговый спикер с усилителем, выход на наушники.
- просто организован USB-вход (без специального чипа)
- плата существенно проще
[Минусы SAM7-EX256]
- только один разъем RS232 (DB9), который можно переключить либо на USART, либо на DBGU
- нет индикационных светодиодов
- нет макетного поля
- отсутствует документация (есть только принциальная схема). Помню, поначалу это меня сильно возмутило =)
- мало портов процессора выведено "наружу" (на разъем)

[Плюсы AT91SAM7X-EK]
- есть 2 отдельных порта RS232 (DB9), один подключен на USART, другой на DBGU
- есть 5 индикационных светодиодов
- есть макетное поле
- все выводы процессора выведены на внешний коннектор
- плата гибко конфигурируется перемычками
- плата отлично документирована (кроме подробной приципиальной схемы, есть еще хорошее описание, что для новичка может оказаться важным)
- в IAR EW специально под эту плату есть много примеров
[Минусы AT91SAM7X-EK]
- дорогая
- нет в комплекте графического LCD индикатора
- не распаян CAN интерфейс
- аналоговый выход низкочастотный (только для очень низких частот и постоянного напряжения). Аналоговый вход низкочуствительный.
- все продавцы возят обычно только SAM7-EX256, а AT91SAM7X-EK только под заказ

Сильной стороной AT91SAM7X-EK от Atmel - роскошная документация и примеры, заточенные именно под эту плату. Если Вы решили заняться программированием ARM всерьез, то этот недостаток легко преодолим - все примеры правятся под плату SAM7-EX256 от Olimex, а некоторые работают и совсем без коррекции кода (точнее, без переделки работают все примеры, но не совсем так, как ожидалось).

[Отладка]

Определитесь, как будете отлаживать. Варианта два - первый дешевый (bootloader), второй удобный (JTAG). Если выбрали Boot Loader, то ройте Интернет по ссылкам на SAM-BA. Отлаживать тут сможете только по принципу прошил-проверил, и отладочную информацию можно выводить только в отладочный порт DBGU (RS232). Если выбрали JTAG (что сделал я, чего и Вам советую), то уже можно отлаживать с максимальным комфортом, используя точки останова и пошаговую отладку по коду. Отладчиков (внутрисхемных эмуляторов) для ARM много, но вариантов по сути только 2. И опять, первый дешевый (Wiggler, его можно найти у Olimex http://www.olimex.com/dev/index.html, называется ARM-JTAG, он есть в Москве у многих продавцов. Девайс несложный, его можно даже спаять самому, благо схемы в Интернете есть), второй удобный (MT-LINK, питерская копия SEGGER J-Link, его тоже купить просто, но спаять самому - вряд ли). Догадайтесь с первой попытки, какой вариант я выбрал? Правильно, MT-LINK. Стоит 2305 руб. в ТерраЭлектроника (тел. 2217804, ул. Дербеневская д.1, корпус 1, подъезд 23).

Для MT-LINK ставьте драйвера от SEGGER, подключайте и работайте. Если что-то не получится, читайте статью "ARM: как начать работать с MT-LINK".

Программное обеспечение, схемы и документацию, упоминавшиеся в статье, можно скачать здесь - http://depositfiles.com/files/dfkqhfdpr, пароль на rar-архив 3dqh5u4c2

[Программирование кристалла AT91SAM7X]

Для внутрисхемного программирования микроконтроллера о порту 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 представлен на рисунке.

SAM-BA-window.jpg

Это окно предоставляет пользователю возможность программирования и чтения как FLASH и SRAM, так и внешней памяти Data-FLASH. Для загрузки кода во flash-память микроконтроллера нужно выбрать в окне закладку "flash", после чего с помощью кнопки "Browse" указать файл для программирования. Приложение SAM-BA поддерживает файлы кода с расширением bin. При нажатии на кнопку "Send File" выбранный файл будет записан во flash-память контроллера. Процесс программирования занимает несколько секунд. Проверить правильность программирования памяти можно, нажав на кнопку "Compare send file with memory".

По умолчанию, контроллер SAM7X выполняет программу из ROM-памяти, поэтому для запуска программы из flash-памяти необходимо установить специальный бит, который переключит стартовый адрес на начало flash-памяти с пользовательской программой. Сделать это можно, выбрав строку "Boot from Flash (GPNVM2)" в секции "Script(s)" главного окна SAM-BA и нажав на кнопку "Execute".

На этом работа с SAM-BA завершена, следует закрыть приложение и перезагрузить контроллер. При подключении по USB необходимо переподключить плату, поскольку определение USB-устройств происходит только при их подключении. Если подключить UART0 (на плате AS-SAM7S-256 маркирован RS-232; не путать с портом DEBUG!) к порту RS-232 компьютера, то в стандартной терминальной программе можно увидеть сообщение, которое пишет плата при загрузке.

[Ссылки]

1. ARM: записи чайника.
2. Программы и утилиты для программирования ARM.
3. Книга + CD-ROM "32/16-битные микроконтроллеры ARM7 семейства AT91SAM7 фирмы Atmel" Редькин П. П., Москва, издательский дом "Додека-XXI", 2008 г.

 

Последнее обновление ( 18.09.2010 )