Главная arrow Программирование arrow ARM arrow Процессор ARM для начинающих Sunday, March 26 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

Процессор 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 )
 

Комментарии  

  1. #3 Петр
    2010-08-0615:15:33 MicroSin, просвети темного
    Пытаюсь запустить программу из sram, ничего не получается.
    Из флеша программа стартует нормально, выбираю в ewawr конфигурацию sram, пользуюсь sam-ba. Может, бит какой не выставляю? Такое ощущение, будто до программы не доходит - после выключения/включения платы не появляется надпись о неизвестном устройстве USB, можно сразу заливать новую программу.

    microsin: биты тут ни при чем. Скорее всего просто заливаемая программа с ошибкой. Возьмите готовый пример Atmel/IAR, ничего там не меняйте, проверьте, что он соответствует по схеме Вашей макетке, проверьте тип чипа при компиляции, настроечные макроопределени я, перекомпилируйт е, залейте через SAM-BA. Все должно работать одинаково в конфигурациях и flash и sram.
  2. #2 Игорь
    2010-02-0210:17:14 Пользуюсь IAR 5.40, прошиваю через SAM-BA. На макете прошивка как раз та, которая была по ссылке(она и была изначально + я нашёл в ссылке и исходники и уже скомпилированны й бинарник). В ближайшее время появиться
    виглер(знакомый обещал спаять), но я уже задумываюсь купить один из тех программаторов которые ты советовал(MT-LINK) - Это будет мой первый внутрисхемный дебагер ) я до него 6 лет прогал без внутрисхемной отладки ).

    Я попробую собрать проект на более младших Иарах - может проблема в компиляторе. я смотрел какие бинарники он собирает и углядел что они чрезвычайно отличаются от того бинарника что идёт по ссылке, начало очень похоже.. а потом идёт совершенно отличные символы. Думаю может настройка
    компилятора - хотя я там всё перебрал как мне кажется, может проект собран на чём то ещё, хотя в нём есть ВоркСпейсный файл для иара. Вобщем буду разбираться.

    microsin: Привет, Игорь. Разобрался с примером от Olimex. Проблема была в том, что у среды разработки IAR новой версии другой код поддержки инициализации процессора AT91SAM7X256, и из-за этого скомпилированны й проект не работал. Если интересно, то результаты моих изысканий здесь - http://microsin.ru/content/view/1090/44/, там же можно скачать рабочий проект уже для IAR 5.30 (см. Ссылки).
  3. #1 Игорь
    2010-02-0210:10:56 Я недавно приобрёл SAM7-EX256. И нарыл примеров с Олимекса… Сейчас меня очень интересует тот что базовый на индикатор выводит скалолаза и подпись Олимекс(http://www.olimex.com/dev/soft/arm/SAM7/SAM7_EX256.zip).
    У меня вышла небольшая Проблемка когда попытался зашить откомпилиный проект ИАРОМ 5.40 - бинарник после зашивки напрочь зависает даже без малейших изменений в коде…
    Собранный бинарник который шёл в комплекте с исходниками шьётся и замечательно работает… Не сталкивались ли вы с Аналогичной проблемой? я конечно догадываюсь что это может быть изменение компилятора… но для меня это был бы большой удар ))) напишите плиз на …@yandex.ru заранее благодарю!

    microsin: как только найду время, попробую поиграться с проектом SAM7_EX256.zip. Правда, корректного эксперимента не получится, даже если у меня все заработает - пробовать буду на IAR 5.20 (который отсюда - http://microsin.ru/content/view/1059/44/).

    Не расстраивайтесь , других примеров полно, поразбирайтесь пока с ними - загляните в папку c:\Program Files\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\examples\Atmel\at91sam7x-ek\:

    basic-can-project
    basic-dataflash-project
    basic-dhrystone-project
    basic-emac-project
    basic-internalflash-project
    basic-iso7816-project
    basic-pwm-project
    basic-rtt-project
    basic-serialflash-project
    basic-twi-eeprom-project
    basic-usart-hw-handshaking-project
    getting-started-project
    usb-device-ccid-project
    usb-device-cdc-serial-project
    usb-device-core-project
    usb-device-hid-keyboard-project
    usb-device-massstorage-project
    usb-device-massstorage-project-no-handler

    Все эти примеры будут отлично работать на Вашей макетке. Их можно брать за основу любого Вашего проекта. А из SAM7_EX256.zip просто будете выдирать понравившиеся куски кода.

    Вы каким дебаггером пользуетесь? Wiggler или J-LINK (MT-LINK)? Чем прошиваете AT91SAM7X256 на макетке?

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017