ARM. Учебный курс

ARM. Учебный курс
ARM. Учебный курс

Запускаем IAR AVR. Откроется окно Embedded Workbench Startup, можно создать проект ипользуя его, но мы пойдем другим путем, поэтому жмем Cancel. Окно закроется и перед нами во всей своей невзрачной красе предстанет IAR.

Выбираем в верхнем меню Project > Create New Project…

IAR предложит выбрать тип шаблона проекта (Project templates). Выбираем C > main и кликаем Ок.

В стандартном Save As диалоге находим или создаем папку и сохраняем проект. Проект готов. Приглядимся к IARу.

Верхняя строка – почти стандартный menu bar. Ниже - tool bar с кнопками.

С правой стороны находится редактор кода. Сейчас там открыт файл main.c, но в нем только пустая функция main().

С левой стороны расположено окно рабочего пространства (workspace), в котором отображается структура проекта. Любой IARовский проект должн находиться по-крайней мере в одном рабочем пространстве.

В верхней части рабочего пространства находится выпадающее меню. Это так называемые конфигурации проекта. По умолчанию их две – Debug и Release. Они отличаются между собой настройками проекта. Можно создавать свои конфигурации.

Сохраним рабочее пространство. Если не сделаем сейчас, придется делать это на этапе компиляции. Выбираем в меню File > Save Workspace

Зададим настройки проекта для конфигурации Debug. Выбираем в меню Project > Options

Или кликаем правой кнопкой мышки по галочке напротив названия проекта.

Откроется диалоговое окно с множеством настроек.

Выбираем тип микроконтроллера
General Options > Target > Processor configuration
У меня это ATmega8535.

Разрешаем использование имен битов определенных в хедер файле
В General Options > System ставим галочку Enable bit definitions in I/O-Include files

Хоть нам и не понадобится сейчас эта настройка, полезно знать где она находится.

Включаем генерацию ассемблерного листинга . Необязательная опция, но я обычно включаю, чтобы посмотреть что натворил компилер.
С/С++ Compiler > List > галочка Output List File

Меняем формат выходного файла
Linker > Output.
B поле Output file cтавим галочку Override default и заменяем расширение d90 на hex
В поле Format выбираем Other и в выпадающем меню Output format выбираем тип файла intel-standart

Жмем ОК.
Теперь копируем и вставляем текст нашей программы в main.c

#include
#include

int main(void )
{
unsigned char led = 1;
DDRC = 255;

while (1)
{
PORTC = ~led;
__delay_cycles (400000);
led = led<<1;
if (led == 0)
led = 1;
}
return 0;
}

Кликаем кнопку Make.

Если все сделано правильно, IAR откомпилирует и соберет проект, а внизу откроется окно Messages.

До того, как ARM купила компанию Keil , лучшими практически по всем показателям были компиляторы от IAR Systems . Сейчас ситуация выровнялась и по некоторым тестам компилятор от Keil даже превосходит компилятор от IAR. Но тем, кто привык работать в IAR нет большого смысла осваивать новую среду.

Миландр предоставляет файлы поддержки своих микроконтроллеров для среды IAR, но подключение этих библиотек не так очевидно, как в случае PACK для Keil. Эта статья будет посвящена тому, как начать работать с микроконтроллерами Миландр в среде IAR. Напишем обычный "HelloWorld", то есть помигаем светодиодами.

Создастся проект с пустой реализацией функции main. Откроем опции проекта и настроим его под конкретный микроконтроллер, выбираем пункт меню или жмем Alt+F7. Далее приведу только те опции, которые необходимо поменять, все остальное остается по умолчанию. По вкладкам:

General Options

Выбираем наш микроконтроллер, 1986ВЕ92У относится к группе 1986ВЕ9х.

Output Converter

Если будет необходим hex файл прошивки, то включить его создание можно в этой вкладке.

Linker

Здесь необходимо выбрать файл задающий раскладку памяти для МК. Этот файл MDR32F1.icf мы копировали ранее при установке SPL. Определение $TOOLKIT_DIR$ как раз содержит путь к директории установки, в которую мы копировали папки Milandr.

C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\arm\config\flashloader\Milandr\MDR1986VE9х\MDR32F1.icf

Области памяти можно скорректировать, нажав Edit, но тогда лучше сохранить измененную версию под новым именем, чтобы оставить рабочим исходный вариант.

Debugger

В закладке Setup необходимо выбрать наш отладчик, J-link уже присутствует в списке, выбираем его. Отладчика Ulink2 нет в списке, видимо необходимо ставить дополнительно. Кроме этого необходимо выбрать приведенные на картинке ниже файлы FlashMDR32F1x.mac и jbr_1986BE9x.ddf , которые мы так же копировали при установке SPL.

C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\arm\config\flashloader\Milandr\MDR1986VE9х\FlashMDR32F1x.mac
C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\arm\config\debugger\Milandr\MDR1986VE9х\jbr_1986BE9x.ddf

В следующей закладке Download выставляем опции "Verify download" и выбираем файл загрузчика FlashMDR32F1x.board , который загружает нашу программу в микроконтроллер. Это аналог flm файла в среде Keil.

C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\arm\config\flashloader\Milandr\MDR1986VE9x\FlashMDR32F1x.board

J-Link/J-Trace

В данном окне выставим опции аналогичные тем, что мы выставляем для данного отладчика в среде Keil. Укажем стартовую частоту микроконтроллера 8МГц и выставим Reset Pin. Далее можно выбрать использование Jtag или SWD, а так же увеличить скорость подключения, но мне сейчас это не критично, поэтому оставил по умолчанию.

После внесения изменений, да и вообще периодически, полезно нажимать кнопку Save All. При первом сохранении IAR предложит сохранить Workspace текущего проекта, сохраняем под таким же "HelloWord"-ом. При следующих запусках среды выбираем File - Recent Workspaces и IDE открывается в состоянии в котором мы ее оставили.

Организация папок проекта и SPL

При организации проекта я руководствовался данной статьей IAR EWARM. Создание проекта часть 2. CMSIS и Standard Peripherals Library.

Полагаясь на рекомендации статьи раскладывать исходники по папочкам, я завел группы аналогично тем, что создает Keil по умолчанию - Startup и Driver. Приведу сразу конечный вид дерева проекта и выпадающее меню, показывающее как создавать группу.

Согласно статье, я так же создал отдельную папку src и положил туда файл main.c. Для такого маленького и простого примера это не столь важно, но будем вырабатывать правильный стиль.

Теперь необходимо подключить сами библиотеки SPL позволяющие работать с периферией микроконтроллера. Во многих статьях в интернет необходимые файлы библиотек копируются в папку проекта на диске и затем подключаются в IAR. Мне такое решение не показалось удобным, поэтому я решил разместить библиотеку по стационарному адресу и подключать во всех проектах файлы из единого источника. Плюс данного решения в том, что при исправлении ошибки в общих исходниках, изменение проявится во всех связанных с библиотекой проектах. Потребуется только перекомпиляция. Если же в каждый проект копировать подборку необходимых исходников, то придется в каждый проект вносить исправления. Но тут каждый решает для себя как ему удобнее организовывать код. Зачастую изменение в общем коде, может затронуть уже старый, готовый и работающий проект. В таком случае, проект "ушедший в продакшн" лучше "заморозить" в текущем состоянии, собрав для него все исходники отдельно.

В итоге директории на диске я организовал следующим образом, есть одна общая папка IAR_CODE в которой лежит папка SPL и по папке для каждого микроконтроллера, внутри которых создаются отдельные проекты. Проекты используют исходники SPL, которые подключаются относительными путями от папки проекта. Использование абсолютных путей сделает проект непереносимым в другое место, поэтому пути лучше использовать относительные. При переносе или копировании проекта куда-то, необходимо будет скопировать проект и папку SPL, сохраняя их относительное расположение. Тогда проект будет успешно собираться из другого места.

Здесь приведены директории и файлы которые будут использоваться в нашем проекте.

IAR_CODE\ - Общая папка с проектами в IAR 1986VE9x\ - папка проектов под 1986VE9x MDR32F9Qx_board.h - файл выбора МК и ревизии HelloWorld - папка проекта SPL\ - папка SPL MDR32F9Qx_config.h - файл прочих настроек CMSIS\ CM3\ CoreSupport - поддержка ядра DeviceSupport\MDR32F9Qx\ - startup файлы inc startup\iar MDR32F9Qx_StdPeriph_Driver\ - driver файлы inc src

Чтобы получилась такая раскладка, вот что нужно скопировать из архива SPL:

В папку IAR_CODE\SPL: Исходные файлы SPL lib\MDR32F9_1986ВЕ4_2015\Libraries\все содержимое Файлы с настройкой SPL под конкретный микроконтроллер lib\MDR32F9_1986ВЕ4_2015\Config\MDR32F9Qx_config.h в папку IAR_CODE\1986BE9x: lib\MDR32F9_1986ВЕ4_2015\Examples\MDR1986VE9x\MDR32F9Q3_EVAL\MDR32F9Qx_board.h

В файле MDR32F9Qx_board.h осуществляется выбор микроконтроллера с помощью макроопределений, поэтому он лежит в папке с проектами под конкретный МК.

Файл MDR32F9Qx_config.h в архиве настроен для микроконтроллера 1986ВЕ4, необходимо открыть этот файл в Notepad и внести небольшую правку. Должно получиться так:

// !!! Раскомментировать блок: /* Seleсt the header file for target microcontroller */ #if defined (USE_MDR1986VE9x) #include "MDR32Fx.h" #elif defined (USE_MDR1986VE1T) #include "MDR1986VE1T.h" #elif defined (USE_MDR1986VE3) #include "MDR1986VE3.h" #elif defined (USE_MDR1986BE4) #include "MDR1986BE4.h" #endif //#include "MDR1986BE4.h" - ! Закомментировать строку, либо удалить.

Теперь чтобы среда IAR могла находить файлы SPL в нашей раскладке необходимо указать ей пути для поиска при сборке. В дереве проекта выбираем самый верхний пункт "HelloWorld - Debug" - просто кликаем на нем левой мышкой, чтобы он был активен и открываем опции проекта (Alt+F7). Если не выбрать верхний пункт проекта, а будет активен какой-то файл из групп в дереве проекта, то при нажатии Alt+F7 откроются опции для этой группы. Нам же необходимо указать пути для всех групп в проекте, поэтому выбираем самый верхний узел в дереве.

Заходим в категорию "С/С++ Compiler ", выбираем закладку Preprocessor . Здесь в поле "Additional include directories" необходимо добавить пути которые мы сформировали. Вот эти пути, добавляем их по одному c помощью диалога, вызываемого кнопкой с многоточием, либо можно скопировать пути прямо отсюда:

$PROJ_DIR$\..\..\SPL\CMSIS\CM3\CoreSupport $PROJ_DIR$\..\..\SPL\CMSIS\CM3\DeviceSupport\MDR32F9Qx\inc $PROJ_DIR$\..\..\SPL\CMSIS\CM3\DeviceSupport\MDR32F9Qx\startup\iar $PROJ_DIR$\..\..\SPL\MDR32F9Qx_StdPeriph_Driver\inc $PROJ_DIR$\..\..\SPL\MDR32F9Qx_StdPeriph_Driver\src $PROJ_DIR$\.. $PROJ_DIR$\..\..\SPL

Это и есть наши пути относительно папки проекта. При расположении прочих проектов по данной раскладке, эти пути останутся валидны.

При добавлении путей через диалоговое окно необходимо следующее, по картинке:

    Пути хорошо бы добавить с относительным путем

    При добавлении пути через диалоговое окно,

    Видно, что пути получаются абсолютными.

    Кликаем на кнопку с треугольником.

    Выбираем вариант с путем относительно проекта.

Собираем пустой проект

Для компиляции минимального проекта к уже существующему файлу main.c необходимо подключить startup-файлы с таблицей векторов прерываний и т.д.

Перед подключением файлов в проект давайте заведем переменную в среде IAR, которая будет задавать путь к нашей папке с кодом IAR_CODE. В главном меню выбираем Tools - Configure Custom Argument Variables .

В открывшемся окне создаем группу MDR_Lib и переменную MDR_CODE, которая будет задавать путь к нашей головной папке.

Если проект не был сохранен, а при первом сохранении сохраняется Workspace, то кнопки в данной форме будут неактивны. В этом случае необходимо перед заходом в данную форму нажать Save All.

Теперь подключая файлы из нашей директории IAR_CODE, пути в проекте будут указываться относительно переменной $MDR_CODE$, следовательно при переносе проекта в другое место достаточно будет переназначить новый путь в переменной MDR_CODE.

Давайте теперь подключим файлы необходимые для компиляции пустого проекта. Для подключения файлов кликаем правой клавишей мыши на созданной нами группе Startup, выбираем Add - Add Files, и подключаем следующие файлы:

Добавляем файлы: IAR_CODE\SPL\CMSIS\CM3\DeviceSupport\MDR32F9Qx\startup\iar\ startup_MDR32F9Qx.s system_MDR32F9Qx.c system_MDR32F9Qx.h

Удобно выделить все файлы и добавить за один раз.

После этого проект должен собираться - меню Project - Rebuild All . Наблюдаем ошибок 0, на ворнинги не обращаем внимания. Библиотека не сильно подчищена для среды IAR.

Для проверки того, что файлы подключились через переменную $MDR_CODE$ кликнем правой клавишей мыши на заголовок в дереве проекта "HelloWorld - Debug" и выберем в выпадающем меню Open Containing Folder . Откроется окно проводника в Windows с выделенным файлом HelloWorld.ewp. Открываем его notepad-ом и листаем в самый низ, где находим как подключены наши, только что добавленные файлы:

.... Startup $MDR_CODE$\SPL\CMSIS\CM3\DeviceSupport\MDR32F9Qx\startup\iar\startup_MDR32F9Qx.s $MDR_CODE$\SPL\CMSIS\CM3\DeviceSupport\MDR32F9Qx\startup\iar\system_MDR32F9Qx.c $MDR_CODE$\SPL\CMSIS\CM3\DeviceSupport\MDR32F9Qx\startup\iar\system_MDR32F9Qx.h ....

Видно, что пути указаны через переменную $MDR_CODE$. Надеюсь данный подход поможет при необходимости перенести весь репозитарий с проектами, то-есть папку IAR_CODE, в новое расположение или на другой компьютер с минимальными усилиями.

Собираем "HelloWorld"

Скопируем в наш файл main.c код из проекта Hello World - светодиод . В этом коде используются библиотечные файлы управления портами и тактовой частотой. Давайте их так же добавим в проект.

Добавляем файлы: IAR_CODE\SPL\MDR32F9Qx_StdPeriph_Driver\src\ MDR32F9Qx_port.c MDR32F9Qx_rst_clk.c

Подключать *.h файлы не будем, пути у нас прописаны и они найдутся сами. Компилируем проект через кнопку в меню или F7. Проект должен успешно скомпилироваться.

Для того, чтобы прошить получившуюся программу в микроконтроллер выбираем в меню Project - Download - Download active application . В Debug Log окне выскакивают некоторые "ворнинги", но прошивка заканчивается успешно и микроконтроллер приветствует Мир!

В случае использования программаторов Segger, при загрузке в устройство подключенное впервые, драйвера Segger запрашивают какое ядро Cortex подключено.

Выбор должен быть таким:

    1986ВЕ9х - "Unspecified Cortex-M3" .

    1986ВЕ1Т, 1986ВЕ3Т - "Unspecified Cortex-M1" ,

    1986ВЕ4У - "Unspecified Cortex-M0"

SPL и пример на GitHUB

Данный пример мигания светодиодом можно скачать с GitHub - IAR_CODE , так же как и аналогичные реализации для 1986ВЕ1Т и 1986ВЕ3Т. В репозитории содержится библиотека SPL на которой реализованы примеры. Эта библиотека собрана из официальной версии, были лишь вырезаны файлы не относящиеся к IAR и исправлены некоторые ошибки.

Многофункциональная среда разработки приложений на языках C, C++ и ассемблере для целого ряда микроконтроллеров от различных производителей. Среда разработки платная, но бесплатная версия с ограничениями на размер кода в зависимости от микроконтроллера.

Подробнее

Flowcode

Один из передовых графических языков программирования для микроконтроллеров. Поддержка русского языка. Платная, но есть бесплатная версия с ограничениями и только для микроконтроллеров PIC.

Подробнее

Algorithm Builder

Бесплатная графическая среда программирования для разработки приложений под микроконтроллеры с архитектурой AVR от отечественных разработчиков.

Подробнее

Мощнейшая среда разработки программ для микроконтроллерных устройств, включающая редактор кода, компилятор, отладчик, программные и аппаратные библиотеки, использующие готовые функции. Программа платная. Есть бесплатная версия с ограничениями.

Подробнее

Ic Prog

Одна из самых популярных бесплатных оболочек для программирования, поддерживающая огромное число микроконтроллеров, ППЗУ и адаптеров различной конструкции. На русском языке.

Подробнее

Pony Prog 2000

Нетребовательная и многофункциональная программа - программатор, предназначенная для работы с микроконтроллерами и постоянными запоминающими устройствами с последовательным доступом различных производителей. На русском языке.Freeware.

Подробнее

SinaProg

Графическая оболочка для программы AVRdude, включающая в себя простой и функциональный AVR fuse-калькулятор. Freeware.

Подробнее

Простой, бесплатный, универсальный программатор для микроконтроллеров семейства AVR.

Подробнее

Code Composer Studio

Интегральная среда проектирования, предназначенная для создания программного обеспечения, использующегося в процессорах и микроконтроллерах компании Texas Instruments Incorporated. Программа платная, бесплатная версия CCS-FREE с рядом ограничений.

Подробнее

TivaWare

Набор высококачественных, полноценных библиотек для контроллеров семейства TIVA от Texas Instruments. Freeware.

Подробнее

Один из лучших компиляторов Basic-подобного языка для серии восьмибитных микроконтроллеров AVR.

Подробнее

Sourcery CodeBench

Самодостаточная интегрированная среда разработки, предназначенная для создания приложений на C/C++ для IA32, ColdFire, Power, MIPS, ARM и некоторых других архитектур микроконтроллерных устройств. Платная 400$ (есть 30-дневная ознакомительная версия)

Подробнее

Программно-инструментальный комплекс, основанный на стандарте IEC 61131-3 и предназначенный для программирования промышленных контроллеров и компьютеров. На русском языке. Freeware.

Подробнее

Flash Magic

Бесплатное приложение для программирования микроконтроллеров компании NXP Semiconductors

Подробнее

STEP 7-Micro/WIN

Простое и удобное программное обеспечение, созданное для работы с программируемыми контроллерами серии SIMATIC S7-200 компании Siemens AG. Платная.

ПодробнееАнализ сред программирования для мк

Программирование микроконтроллеров является неотъемлемой частью разработки самостоятельного электронного устройства. На данном этапе развития электроники, наиболее популярными микроконтроллерами (МК) есть: PIC, MSP, AVR, STM, ARM (процессор). Для каждого вида МК есть узконаправленная среда программирования. Это связано с внутренней структурой МК и технического обеспечения записи программы в память МК. Если проанализировать существующие среды программирования МК , то найти универсальные среды программирования МК очень сложно. При анализе сред программирования было выявлено только одну универсальную среду программирования микроконтроллеров – FlowCode, функции которой позволяют программировать МК PIC, AVR, ARM.

FlowCode – графическая универсальная середа программирования МК. Программирование осуществляется благодаря построению логической структуры, т.е. блок-схем, аналогично среде HiAsm. Функция экспорта позволяет экспортировать написаний код PIC МК в программу AVR МК и наоборот. Дополнением данной среды программирование является создание HEX-кода, который может быть использовать при прошивки МК, или при проектировании схемы с поддержкой МК, например, в среде Proteus.

Большинство проанализированных сред программирования МК были предназначены для AVR. Среда Algorithm Builder – это графическая среда программирования МК AVR. Тип графической разработки в данной среде, отличается от FlowCode. Як говорит автор программы, написание кода осуществляется в 3-5 раз быстрее. Среда русифицирована и поддерживает автоматическое перекодирование строк в ANSI-кода Windows в код русифицированного буквенно-цифрового ЖКИ. Среда программирования объединяет в себе графический редактор, компилятор алгоритма, симулятор микроконтроллера, внутрисхемный программатор, функции работы с EEPROM.

Среди платных сред программирования AVR МК есть AVR Studio, IAR Systems, Image Craft, WinAVR, CodeVisionAVR.

CodeVisionAVR–популярная условно-бесплатная среда программирования AVR МК. Объединяет в себе Си-подобный язык программирования и ассемблер. Функции программы позволяют самостоятельно прошивать МК и устанавливать fuse-бити и ПЗУ.Конечным результатом разработки программы под. МК есть создание HEX, BIN или ROM-файла, для прошивки МК с помощью программатора.

Среда IAR Systems поддерживает программирования МК AVR и MSP430, но функции программирования двух МК не объединены в одной среде. Для каждого МК были разработаны отдельные среды программирования. Аналогичным образом была разработана среда программирования Image Craft (ICC). ICC поддерживает Си-подобный синтаксис и ассемблер. IAR Systems и Image Craft в их состав входит целенаправленные библиотеки по работе с отдельными частями МК. В состав ICC добавлена утилита для генерации кода и инициализации периферии МК, внедрен ANSI Terminal Emulator, который предоставляет возможность работать с COM-портом.

Среда Code Composer Studio (CCS) для программирования МК MSP основана на базе стоковой универсальной среды программирования Eclipse. CCS как вышеперечисленные среды программирования, имеет Си-подобный язык программирования. Данная среда программирования поддерживает разработку для DSP (Digital signal processor) микроконтроллеров, процессоров АРМ семейства TMS320 и MSP430. Данная среда в сравнении с ICC или CCS использует Java-машину и требует больше системных ресурсов.

Energia – среда программирования для МК MSP430 , которая наиболее популярной средой программирования среди начинающих. Имеет Си-подобный язык программирования, но он отличается от языков, которые используются в вышеперечисленных средах. Язык Energia (и Arduino IDE) более понятный, подобный английским словам. Energia поддерживает дополнительные библиотеки, в состав которых входят драйвера для подключение платформы LaunchPad MSP430 на базе ARM Cortex, FraunchPad и lm4f120 StallerPad. Данная среда программирования является модифицированной версией среды Arduino IDE. Работает c 1, 16МГц МК MSP430 и 80 МГц lm4f120. Внедрена функция просмотра COM-порта.

Virtual breadboard – середа разработки с поддержкой проектирования электрической схемы на базе платформы Arduino под управлением МК ATMEL AVR. При анализе использовалась программа версии 4.2.9, которая поддерживает разработку программ под. МК PIC. Синтаксис подобный среде программирования Energia и Arduino IDE. Данная середа является платной, в программу внедрены примеры, и модели электронных элементов на основе которых проектируется устройство.

Для разработки программ под МК PIC существует среда MPLAB IDE. Создание программы проходит в структурированном виде, встроенный программный симулятор моделирования исполнения программ в МК с учетом состояния портов ввода-вывода, эмулятор работы МК в масштабе реального времени непосредственно в устройстве пользователя. Разработка проекта ведется на языке С или ассемблер. Еще одной средой программирования для МК PIC является mikгоС. Среда mikгоС включает в себя библиотеки, которые поддерживают следующие устройства и интерфейсы:

Встроенный аналого-цифровой перекодировщик (АЦП) микроконтроллера; - встроенную энергонезависимую память EEPROM микроконтроллера; - встроенные широтно-импульсные модуляторы (PWM) микроконтроллера; - внешние сменные карты памяти типа MMC, SD и Compact Flash; - файловую систему FAT; - алфавитно-цифровой жидкокристаллические индикаторы (LCD PKI); - графические жидкокристаллические индикаторы (GLCD, РК-дисплей); - интерфейсы I2C, SPI, 1-Wire, USART, RS-485, CAN, PS / 2, USB (HID) и Ethernet.

Подведя итоги, хочу сказать, что при выборе среды программирования необходимо учитывать ее основной функциональный состав, язык программирования, поддерживаемые порты и интерфейсы.

Если Вы используете другую среду программирования МК, которая в данном посте не указана, пожалуйста, напишите. Указанная вами среда будет проанализирована и добавлена в пост.

Используя разные микроконтроллеры, возникает необходимость выбрать удобную среду разработки. Нам есть из чего выбирать – будь то IAR или Keil µVision, или, даже Code Composer Studio.
Ниже пойдет речь об IAR Embedded Workbench IDE на примере STM32F10x. Эта среда разработки достаточно мощная. Имеются всякие вкусняшки.

Настройка IAR

В первую очередь нужно настроить IAR.
Основные настройки
После запуска IAR заходим в опции (Tools->Options… ). Сразу же будет выбран пункт Editor . В поле Ident size число указывает на количество пробелов при нажатии Tab. Для меня удобно использовать число 4 .
Стоит уделить внимание пункту Key Bindings . Здесь можно назначить горячие клавиши. Согласитесь, все-таки, удобно и быстро пользоваться комбинациями клавиш. Пока что, можно назначить комбинацию Ctrl+W как закрытие активных вкладок. Для этого в Menu выбираем Window и для команды Close active tab назначаем Ctrl+W .
С остальными горячими клавишами познакомимся ниже.
Настройки проекта
Допустим, создавать новый проект мы умеем (если нет, то Project->Create New Project… ). После создания проекта нам доступны две конфигурации проекта – Debug и Release . Переключаться между ними можно в окне Workspace :


Рис. 1

Удобно использовать несколько конфигураций. В конфигурации Debug можно выбрать симулятор программатора, а в Release – конкретный программатор (к примеру, J-Link). Что позволит сначала отлаживать в симуляторе, не теряя время на прошивку микроконтроллера, а потом уже прошивать под конфигурацией Release .
Добавлять новые конфигурации можно через меню: Project->Edit Configurations .
Опции самого проекта – Project->Options… (Alt+F7 ). Для открытия окна опций проекта нужно выделить сам проект в окне Workspace , иначе откроются опции того файла, который был выделен.
Настройки буду приводить для конфигурации Debug (в скобках – для Release ).
Открываем опции (Alt+F7 )

Некоторые приемы

Горячие клавиши
Поиск:
Обычный поиск – Ctrl+F
Найти дальше – F3
Поиск по файлам проекта – Ctrl+Shift+F
Шагать по найденному (или по ошибкам/ворнингам) – F4
Навигация по проекту:
Перейти к объявлению переменной (даже, если она в другом файле) – F12 - очень полезная функция!
Навигация вперед – Alt+Right
Навигация назад – Alt+Left
Разное:
Открыть header/source – Ctrl+Shift+H (или П.К.М в редакторе, и в контекстном меню выбрать Open Header/Source File )
Закомментировать выделенный блок – Ctrl+K
Разкомментировать – Ctrl+Shift+K
Выделить содержимое скобок – Ctrl+B
Автовыравнивание – Ctrl+T
Поставить/убрать Breakpoint – F9
Вставить шаблон – Ctrl+Shift+Space – тоже интересная штука.

Чтобы добавить свой шаблон, нужно открыть файл CodeTemplates.ENU.txt через меню Edit->Code Templates->Edit Templates
Теперь можно ввести примерно следующее:

#TEMPLATE "&Warning","Введите текст:"="Не забыть изменить" #warning %1

Синтаксис шаблона:

#TEMPLATE ,[=default value], ...

Знак «&» нужен для быстрого доступа (буква будет подчеркнута). Можно использовать знак «>» для создания подменю. Все интуитивно понятно.

Сохраним файл и вызовем Template menu (Ctrl+Shift+Space ). В нем выберем Warning:


Рис. 3

Введем необходимый текст:


Рис. 4

Жмякаем по кнопке OK. В результате, появится строчка:

Рис. 5

При компиляции все ворнинги и ерроры (#error <текст>) будут выводиться в окне Build .

Заключение

В этой статье были приведены основные возможности IAR, позволяющие достаточно быстро ориентироваться в проекте. Рекомендую использовать горячие клавиши. Это значительно сокращает время работы над проектом.
Буду признателен, если читатель дополнит или поправит меня.

Многофункциональная среда разработки приложений на языках C, C++ и ассемблере для целого ряда микроконтроллеров от различных производителей.

Основные преимущества пакета – дружественный пользовательский интерфейс и непревзойденная оптимизация генерируемого кода. Кроме этого реализована поддержка различных операционных систем реального времени и JTAG -адаптеров сторонних компаний.

В настоящее время IAR Embedded Workbench поддерживает работу с 8-, 16-, 32-разрядными микроконтроллерами от , ARM, NEC, Micronas, Dallas Semiconductor/ , Ember, Luminary, OKI, Samsung, TI/Chipcon, Silicon Labs и . Для каждой платформы существует своя среда разработки, в частности ARM микроконтроллерам соответствует версия пакета IAR Embedded Workbench for ARM.

Программная среда включает в себя:
1. C/C++ компилятор – один из самых эффективных в своем роде. В нем также присутствует полная поддержка ANSI C.
2. Транслятор ассемблера, включающий в себя макроассемблер для программ реального времени и препроцессор для C/C++компилятора.
3. Компоновщик, поддерживающий более тридцати различных выходных форматов для совместного использования с внутрисхемными эмуляторами.
4. Текстовый редактор, настроенный на синтаксис языка Си и имеющий удобный пользовательский интерфейс, автоматическое выделение ошибок программного кода, настраиваемую инструментальную панель, подсветку блоков, а также удобную навигацию по именам подпрограмм, макросов и переменных.
5. Симулятор и отладчик в кодах Си и ассемблера. Отладчик позволяет просматривать области EEPROM, DATA, CODE, а также регистры ввода/вывода, устанавливать точки останова и аппаратные флаги, обрабатывать прерывания с предсказанием. Кроме этого предусмотрен контроль стека и любых локальных переменных, режим пошагового выполнения программы. Тип отладчика и его настройки устанавливаются в свойствах проекта. Если отладчик отсутствует, то на помощь приходит симулятор, который, однако, не имеет возможности эмулировать работу процессора.
6. Менеджер проектов, облегчающий контроль и управление рабочими модулями.
7. Дополнительные утилиты для работы с оптимизированной CLIB/DLIB библиотекой.

Интегрированная система помощи облегчает написание программ в данной среде. Предусмотрено взаимодействие с утилитой AVR Studio. Помимо прочего в IAR Embedded Workbench существует возможность самостоятельного управления оптимизацией отдельных модулей проекта, что упрощает процесс отладки, а также позволяет ускорить работу программы или сэкономить на памяти.

IAR Embedded Workbench была разработана IAR Systems, более двадцати лет являющейся одной из ведущих компанией по созданию C/C++ компиляторов для встраиваемых микроконтроллерных устройств и систем. Ее штаб-квартира находится в старинном городе Уппсала (Швеция). В настоящее время программы IAR Systems используют по всему миру более сотни тысяч разработчиков, производителей телекоммуникационного и промышленного оборудования, медицинской и компьютерной техники, среди которых такие гиганты, как Apple Computer, Cisco Systems, Motorola, Hewlett-Packard и Siemens.

IAR Embedded Workbench является коммерческим продуктом, его стоимость составляет около 3000 долларов за одну пользовательскую лицензию. Однако, в качестве дополнения к полнофункциональной версии, существует бесплатный вариант среды программирования с единственным ограничением на размер выходного кода до 4 или 8 КБ в зависимости от модели контроллера. Этот вариант подойдет для первого знакомства с программой, а также написания небольших приложений. Можно найти и взломанную версию, но для ее нормальной работы придется отключать выход в интернет.

Язык интерфейса IAR Embedded Workbench – английский.

Рассматриваемая среда работает под управлением только операционной системы Microsoft Windows версий 95, 98, NT, 2000, XP, Vista, 7 (не имеет значения 32- или 64-битных).

Распространение программы: платная. Есть бесплатная версия с ограничениями на размер кода в зависимости от МК