Процессор ARM для начинающих |
![]() |
Добавил(а) microsin |
Не буду рассказывать, чем же хорош чип ARM - если Вы читаете эту статью, то и сами знаете, почему. Итак, решение изучать ARM принято, но непонятно, с чего начинать, что выбрать и как изучать. Особенно тяжело, если нет квалифицированного консультанта, который помог бы сделать правильный выбор. В Интернете есть много информации, она в основном на английском языке - по крайней мере, хорошего описания языка ассемблера на русском я так и не нашел. Надеюсь, эта статья поможет Вам сделать первые шаги. [Выберите чип ARM] Современные чипы ARM очень сложны, и хорошо их изучить все просто невозможно. Чипы разных производителей различаются набором периферии, размером памяти. Определитесь, с каким чипом ARM будете работать. Я выбрал чип Atmel AT91SAM7X256. Ознакомьтесь с документацией на него - скачайте с сайта Atmel описание (на английском) или зайдите на сайт gaw.ru. Рекомендую также просмотреть ссылки [4, 5]. Купите книжку "32/16-битные микроконтроллеры ARM7 семейства AT91SAM7 фирмы Atmel" Редькин П. П., Москва, издательский дом "Додека-XXI", 2008 г. Книжка представляет из себя почти дословный перевод документации Atmel на чип AT91SAM7X256. Читать её несравненно легче, чем документацию на английском. Кроме того, в книге и на прилагаемом диске вы найдете примеры программ, опробованных автором. [Поставьте себе среду разработки] Рекомендую 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 [6]. Она стоила 6500 рублей в Чип-И-Дип, 4360 в Терраэлектроника. Забегая вперед скажу, что сам выбрал SAM7-EX256 от компании Olimex (в то время платы AT91SAM7X еще не было). Коротко перечислю различия плат SAM7-EX256 и AT91SAM7X-EK, их достоинства и недостатки. [Плюсы SAM7-EX256] [Плюсы AT91SAM7X-EK] Сильной стороной AT91SAM7X-EK от Atmel - роскошная документация и примеры, заточенные именно под эту плату. Если Вы решили заняться программированием ARM всерьез, то этот недостаток легко преодолим - все примеры правятся под плату SAM7-EX256 от Olimex, а некоторые работают и совсем без коррекции кода (точнее, без переделки работают все примеры, но не совсем так, как ожидалось). [Отладка] Определитесь, как будете отлаживать. Варианта два - первый дешевый (bootloader), второй удобный (JTAG). Если выбрали Boot Loader, то ройте Интернет по ссылкам на SAM-BA. Отлаживать тут сможете только по принципу прошил-проверил, и отладочную информацию можно выводить только в отладочный порт DBGU (RS232). Если выбрали JTAG (что сделал я, чего и Вам советую), то уже можно отлаживать с максимальным комфортом, используя точки останова и пошаговую отладку по коду. Отладчиков (внутрисхемных эмуляторов) для ARM много, но вариантов по сути только 2. И опять, первый дешевый Wiggler, его можно найти у Olimex [9], называется ARM-JTAG, он есть в Москве у многих продавцов. Девайс несложный, его можно даже спаять самому, благо схемы в Интернете есть), второй удобный (MT-LINK, питерская копия SEGGER J-Link, его тоже купить просто, но спаять самому - вряд ли). Догадайтесь с первой попытки, какой вариант я выбрал? Правильно, MT-LINK. Стоит 2305 руб. в ТерраЭлектроника. Китайский аналог J-Link можно купить на ebay.com по цене порядка $14 [10]. Для MT-LINK ставьте драйвера от SEGGER, подключайте и работайте. Если что-то не получится, читайте статью [11]. Программное обеспечение, схемы и документацию, упоминавшиеся в статье, можно скачать по ссылке [12], пароль на 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 представлен на рисунке. Это окно предоставляет пользователю возможность программирования и чтения как 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: записи чайника. |