Не Keil’ом единым…
Есть такая компания, называется она IAR Systems. Делает много вещей, в том числе и среды разработки и компиляторы для различных архитектур, список которых довольно обширен. Также в числе продуктов компании есть отладчики, наборы разработчиков и т.д. Более подробно со всем этим разнообразием можно ознакомиться на их родном сайте iar.com
Нас же сейчас интересует среда для разработки приложений для архитектуры ARM, в частности Cortex-M3. Есть в их ассортименте и такой продукт и называется он EWARM, что является сокращением от Embedded Workbench for ARM, что в свою очередь, в моем вольном переводе на великий и могучий, звучит примерно как «Среда разработки для встроенных систем на архитектуре ARM», впрочем, за точность я не ручаюсь…
Данная среда поддерживает большое количество микропроцессоров и микроконтроллеров построенных на базе архитектуры ARM разных версий. Полный список можно посмотреть на их сайте Т.к. это серьезная среда разработки, то она поддерживает различные отладочные интерфейсы и средства сопряжения как производства самой IAR так и сторонних компаний, имеет встроенный отладчик, симулятор и т.д.
IAR Создаем проект
Но по причине отсутствия у меня какого либо девайса для внутрисхемной отладки рассказать я про все это не могу. А пользоваться симулятором как-то в голову даже не приходило. Я по старинке, пишу, заливаю в контроллер и смотрю что происходит. (Зато их есть у меня. И я вам скоро выдам пример того, какой это рулез. прим. DI HALT)
Есть мнение, что компилятор С/С++ у IAR один из самых лучших, но за это я не ручаюсь, хотя кое какие мои сравнения с Keil uVision v3 показали его превосходство.
Сколько стоит данное чудо я, к сожалению, на их официальном сайте найти так и не смог, а лазить по сайтам дилеров как-то недосуг… На наше счастье, данный продукт доступен в демо режиме для ознакомления. (Я тоже полазил, не нашел. Кейл стоит около 3 килобаксов. IAR, думаю, в тех же пределах. Вполне подьемно для коммерческого применения прим. DI HALT)
И здесь есть 2 варианта
- 1. Полнофункциональная версия с ограничением использования в 30 дней.
- 2. Версия без ограничения по времени использования но генерирующая код не более 32Кб. Под наши ковыряния хватит с лихвой.
Обе версии, кроме того имеют следующие ограничения:
- Они не включают исходный код библиотек.
- Они не включают поддержку MISRA C (что это такое, к сожалению не знаю).
- Имеют ограниченную техническую поддержку.
- Версия с ограничением кода в 32Кб не имеет поддержки расширенной отладки (что это такое, к сожалению не знаю)
Ну и как всегда есть вариант найти на просторах сети дистрибутив включающий все, что нужно для снятия этих ограничений.
Итак, выбираем для себя вариант, который подойдет больше всего, скачиваем и устанавливаем. Здесь вопросов возникнуть не должно, все тривиально.
После установки можно приступать к созданию проекта. Запускаем IAR Embedded Workbench и видим следующее окно:
Безопасность в сети — метод Мориарти. Прослушка. Шпионаж. ФСБ.
![]() |
Лирическое отступление.
Если кто-то, как я, привык для копирования/вставки использовать сочетание клавиш Ctr+Insert/Shift+Insert, то его ждет засада! EWARM по умолчанию понимает только Ctrl+C/Ctrl+V и при нажатии Ctr+Insert или Shift+Insert только меняет режим вставки/перезаписи текста. Почти месяц меня это жутко бесило, пока однажды мне не стукнуло что-то в голову и не пришла мысль порыться в настройках… Оказалось, что это легко лечится путем назначения сочетаний клавиш командам! Делается это во вкладке меню Tools->Options, далее Keybindings.
Выбираем в меню:
Project->Create New Project
Project->Create New Project
Открывается окошко создания нового проекта.
На данном этапе можно выбрать из шаблонов, что именно мы хотим создать, но выбор там не велик, а все шаблоны содержат пустые заготовки файлов с нужным расширением и заголовками. Поэтому не ломаем голову а выбираем
C->main
и жмем кнопочку ОК
![]() |
Появится диалог выбора имени проекта и указания, куда его сохранить. Называем проект милым вашему сердцу названием и сохраняем в укромном месте. Я же назвал его LEDTest, что какбы намекает… В итоге получаем следующую картину:
![]() |
Создался новый проект содержащий только один файл main.c который содержит только одну пустую функцию main(). А вы хотели большего? Дальше все ручками.
На данном этапе желательно нажать на кнопку с изображением трех дискеток или через меню
File->Save All.
EWARM попросит ввести имя WorkSpace (воркспейс может содержать множество проектов) и не мудрствуя лукаво я назвал его также LEDTest.
В отличие от Keil’a EWARM не попросил указать целевое устройство и все остальное, поэтому лезем в свойства проекта и начинаем его настраивать.
По аналогии с Microsoft Visual Studio EWARM позволяет создавать произвольное число конфигураций и по умолчанию создает в проекте 2 конфигурации Debug и Release, что подразумевает 2 набора параметров, одни для компиляции кода содержащего отладочную информацию и другой для кода без нее. Выбираем наиболее подходящую для себя.
Я, например, сразу выставляю Release и настраиваю только ее, но это дело вкуса и наличия или отсутствия у вас средств отладки.
Итак, идем в меню
Project->Options
Либо нажимаем Alt+F7, либо тыкаем правой кнопкой мыши на корне дерева слева и выбираем в меню Options. Появляется окно настроек проекта.
Первая категория – General Options
Здесь желательно выбрать ядро для которого нужно откомпилировать код или указать конкретное устройство. По умолчанию указано ядро ARM7TDMI. Переключаем радиобуттон на Device, нажимаем на кнопку справа от поля ввода и в списке выбираем
ST->ST STM32F10xxY
, где Y соответствует семейству имеющегося у вас микроконтроллера. Я выберу ST STM32F10xxE.
![]() |
Далее по вкладкам и категориям буду пробегаться кратко и без картинок т.к. вкладок много и не все они важны для нас на данном этапе. На существенных остановлюсь подробно.
Output (вывод)
Здесь указываем что мы хотим получить навыходе, исполняемую программу или библиотеку. Оставляем без изменения – Executable. Также здесь можно прописать пути куда ложить откомпилированную программу/библиотеку, объектные файлы и файлы листингов. Меняем, если душа того просит.
Library Configuration (конфигурация runtime библиотеки языка С). Это тема отдельной телепередачи 🙂 но сейчас можно смело поставить None и пройти дальше.
Library options (опции стандартной библиотеки языка С)
Здесь настраивается работа функций printf и scanf. Вернее поддержка различных ключей строки форматирования. Ниже кратко расписано какая опция что поддерживает, а более подробно можно прочитать в документации идущей в комплекте с EWARM. Поддержка более сложных ключей форматирования увеличивает размер кода т.к. обработчики строки форматирования разные по сложности реализации.
В данном проекте нам это не важно т.к. данными функциями мы пользоваться не будем. А в последущием я освещу данный вопрос подробнее.
MISRA-C: 2004 и MISRA-C: 1998. Настройки расширений MISRA-C. Что это такое, я честно не знаю. 🙂
C/C++ Compiler (настройки компилятора С/С++)
Здесь настраивается поддержка расширений языков С/С++, режимы оптимизации компилятора, генерация отладочной информации, пути к инклудам и т.д. Здесь пока можно ничего не трогать.
Assembler
Соответственно настройки языка ассемблера. Здесь пока можно ничего не трогать.
Output Converter (конвертация вывода)
Вот это нам нужно. Дело в том, что по умолчанию EWARM генерирует исполняемый файл в формате ELF, что какбы намекает, что Unix и прочие линуксы IAR’у не чужды.
Но нам то они ни к чему, поэтому смело тыкаем галку Generate additional output (генерировать дополнительный выходной файл) и в списке Output format (формат выходного файла) выбираем подходящий для себя, вернее для используемого вами программатора, формат.
Выбор особо не велик и реально для большинства будет состоять из двух вариантов: Intel extended, в простонародье именуемый HEX или binary. Я лично пользуюсь вариантом binary. Здесь же, если того требуют ваши религиозные убеждения, можно задать имя выходного файла отличающееся от дефолтного.
![]() |
Custom build (пользовательская сборка)
Здесь можно задать дополнительные утилиты и их параметры которые будут использоваться при сборке проекта, но нам это ни к чему — пропускаем.
Build Actions (действия при сборке)
Здесь можно указать команды которые нужно выполнить перед сборкой или после. Поступаем аналогично предыдущему пункту.
Категория Linker (линковщик)
Вот и добрались до второго, после указания целевого устройства, важного момента! Ибо от линковщика, вернее его настроек, очень сильно зависит запуститься ваш проект в микроконтроллере или нет т.к. именно линковщик располагает код и различные таблицы (например векторов прерываний) по нужным адресам.
Вкладка Config (конфигурация). Здесь содержится ссылка на используемый файл конфигурации линковщика. Это очень важный файл т.к. именно в нем прописана конфигурация нашего микропроцессора в части памяти (ее наличия или отсутствия, адресации и размера), размещения таблицы векторов прерываний, размеры стека и кучи. По умолчанию проставлена ссылка на файл конфигурации идущий в комплекте с EWARM’ом и едином для всех устройств на базе ядра Cortex, что не есть хорошо, т.к. устройства все разные, объемы флеша и ОЗУ у них разные и т.д. К счастью, есть возможность отредактировать этот файл самостоятельно, что дает широчайший простор творчеству, либо с использованием кнопки Edit… находящейся здесь же.
![]() |
Самостоятельная конфигурация файла настроек линковщика, занятие бесспорно увлекательное и плодотворное, но оно выходит далеко за рамки данной статьи т.к. только об этом можно написать не одну статью. Подробно все описано в руководстве пользователя, идущем в комплекте с EWARM. Скажу лишь, что там можно создавать сегменты памяти, указывать их тип, размер, размещение и еще много чего. Иногда это очень нужно, но это уже в более серьезных проектах.
Поэтому ограничимся нажатием кнопочки Edit… Правда перед этим нужно решить один концептуальный вопрос.
Дело в том, что как я уже сказал выше, данный файл является заготовкой для всей архитектуры Cortex, поэтому если вы его измените, а потом захотите создать проект для другого контроллера, того-же NXP LPC17XX, то его опять придется редактировать уже под этот процессор. Тут есть 3 варианта решения:
- Сказать себе, что кроме STM32F меня ничего не интересует и отредактировать данный файл.
- Скопировать данный файл в той-же папочке где он лежит (а лежит он, как можно догадаться, в папке диск:путь куда установили EWARMarmCONFIG) во что-то типа STM32F10XXX.icf и редактировать его.
- Скопировать его в папочку с проектом переименовав во что-то типа STM32F10XXX.icf и редактировать его.
Итак, выбираем вариант себе по душе (я лично пользуюсь 3-им вариантом а путь прописываю так:
$PROJ_DIR$stm32f103re.icf
Переменная $PROJ_DIR$ разворачивается в путь до папки с проектом автоматически, т.е. путь получается относительным. Таким образом можно папку с проектами копировать потом куда угодно и файл не «потеряется» в отличие от использования жесткого пути), выбираем свой файл отредактировав путь или нажав кнопку выбора файла (кнопка с «…» справа от едита) и нажимаем кнопку Edit…
В появившемся окошке в первой вкладке Vector Table задаем адрес таблицы векторов прерываний. Что это такое, для тех кто не в курсе, я не буду раскрывать. (Я тоже не скажу :), т.к. все уже сказано в разделе про AVR. Тут все точно также, только векторов больше. прим DI HALT)
Адрес может быть либо 0х00000000 либо 0х08000000. Я предпочитаю ставить 0х08000000 т.к. он указывает на начало внутренней флеш памяти, а адрес 0х00000000 может мэпиться на флешку а может и нет, в зависимости от состояния входов BOOT в момент инициализации контроллера, но это нужно уже курить даташит на устройство.
![]() |
Вкладка Memory Regions (регионы памяти).
Здесь задается 2 важных для работы контроллера вида памяти ROM (ПЗУ) и RAM (ОЗУ) вернее их адреса начала и окончания. ROM — это наша внутренняя флеш память. Начинается она с адреса 0х08000000, это заложено в архитектуре контроллера. А вот заканчивается у каждого по разному. Зависит от объема который есть в вашем контроллере.
У меня ее 512Кб, а у вас может быть 32, 64, 128, 256. Т.е. адрес окончания этой области памяти вычисляете сами. Для меня он будет равен 0x0807FFFF (адрес начала 0x08000000 + размер флеша (512*1024) – 1 в шестнадцатеричном формате). Для вас это может быть 0x08007FFF, 0x0800FFFF, 0x0801FFFF и т.д. Желательно указывать точный размер чтобы полученная прошивка не превысила этот размер, а так линковщик ругнется в случае чего.
Но нам это не грозит пока. Аналогично заполняем поля для RAM, зная из чтения даташита, что она начинается с адреса 0x20000000 и посчитав где она закончится.
![]() |
Если ошибетесь в этих адресах, особенно начальных, например нолик пропустите или лишний напишите, то программа просто не будет работать.
Вкладка Stack/Heap Sizes (размеры стека и кучи)
Параметры говорящие сами за себя.
Стек нужен для передачи параметров функциям, сохранения точек возврата из них и т.д. Сильно большим его делать не имеет смысла т.к. зря будет расходоваться ОЗУ, а если сделать сильно маленьким, то может не хватить (особенно если будет использоваться много вложенных функций). Поставим его равным 0x200 т.е. 512 байт. В нашем проекте этого более чем достаточно.
Куча – это часть ОЗУ выделенная для функций работы с памятью языка С/С++ таких как malloc, оператор new и т.д. В данном проекте мы их использовать не планируем, поэтому ставим 0.
![]() |
Все, нажимаем кнопочку Save.
В остальных вкладках категории Linker настраиваются подключаемые внешние библиотеки, пути к ним, настройка имени выходного файла, настройки генерации листингов, расчета контрольных сумм и т.д. Нам в данном проекте ничего из этого не понадобиться, а объяснять все слишком долго. Будут конкретные вопросы — спрашивайте в комментах.
Категория Debuger (отладчик)
Здесь настраиваются аппаратные средства внутрисхемной отладки либо отладка в симуляторе. Как я уже говорил, аппаратных средств у меня нет, а симулятором я не пользуюсь. Поэтому рассказать тут особо ничего не могу.
С облегчением жмем кнопку Ок справа-внизу окошка, и применяем выбранные параметры.
Теперь можно смело нажать кнопку F7 или в меню
Project->Make
и откомпилировать наш проект.
В папочке которую вы указали для выходных файлов программы (если ничего не меняли, то это будет, в зависимости от выбранной конфигурации, папка Debug/exe либо Release/exe в папке с проектом) увидим 2 файла. Один с раширением .out и второй .bin или .hex, в зависимости от того, что вы указали в качестве дополнительного выходного файла.
Все, наша первая программа готова! Можно прошивать ее в контроллер и она заработает! Не верите? А вы попробуйте.
На этом позвольте закончить мою первую статью т.к. она и так получилась не маленькой. А к написанию более функционально насыщенной программы мы перейдем на следующем нашем шаге.
Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль.
Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!
А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.
Источник: easyelectronics.ru
IAR Embedded Workbench
Многофункциональная среда разработки приложений на языках C, C++ и ассемблере для целого ряда микроконтроллеров от различных производителей.
Основные преимущества пакета – дружественный пользовательский интерфейс и непревзойденная оптимизация генерируемого кода. Кроме этого реализована поддержка различных операционных систем реального времени и JTAG -адаптеров сторонних компаний.
В настоящее время IAR Embedded Workbench поддерживает работу с 8-, 16-, 32-разрядными микроконтроллерами от Atmel, ARM, NEC, Infineon, Analog Devices, Cypress, Microchip Technologies, Micronas, Dallas Semiconductor/Maxim, Ember, Luminary, NXP, OKI, Samsung, National Semiconductor, Texas Instruments, STMicroelectronics, Freescale, TI/Chipcon, Silicon Labs и Renesas. Для каждой платформы существует своя среда разработки, в частности 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-битных).
Распространение программы: платная. Есть бесплатная версия с ограничениями на размер кода в зависимости от МК
Источник: cxem.net
Образец информационно-аналитической работы
Информационно-аналитическая работа — это одно из направлений интеллектуальной деятельности человека, которая применяется в экономике, политике, образовании и пр.
ИАР осуществляется в сфере управления и состоит из обработки фактических данных, получения конкретных результатов и прогнозирования.
Цель — получение новых данных, которые помогут принять правильное управленческое решение. Например, получив объективные данные, руководство компанией готовит решение о ликвидации слабых мест в системе организации, и таким образом формируются основы для изменения направления развития компании.
Составные части процесса:
- подробный анализ объекта, детальное рассмотрение отдельных его частей;
- получение данных, сбор информации, обработка и систематизация.
С помощью ИАР осуществляется обобщение разрозненных знаний, начинается глубокая научно-исследовательская работа
Для проведения ИАР используется оригинальная методика. Занимаются такой работой специально созданные организации и подразделения.
Основные этапы подготовки ИАР
В вузах ИАР выполняют студенты гуманитарных вузов, анализируя текстовые данные. Этапы подготовки:
- постановка целей и задач;
- сбор информации;
- применение методов исследования;
- оценка и анализ полученных данных;
- характеристика предметов и явлений, подлежащих анализированию;
- формирование модели изучаемых объектов;
- планирование и проведение эксперимента;
- выводы и прогнозирование;
- обоснование результатов.
К готовой работе прикладываются схемы, графики, диаграммы и пр.
Разрабатываются методы, проводятся организационные мероприятия и создаются необходимые инструменты.
Начинается работа со сбора информации и обработки полученных данных. В результате отбора отсеиваются случайные данные, выделяются типичные зависимости, устанавливаются связи и особенности.
В процессе анализа исследуется полученный фактический материал, цель которого установление закономерностей. Далее следуют выводы, составной частью которых является прогнозирование предстоящих событий.
Принципы ИАР
- актуальность исследования;
- решение конкретной задачи, имеющей прикладное значение;
- объективность полученных данных;
- своевременность анализа;
- мониторинг процесса аналитики;
- современные подходы с учетом эффективных методик;
- комплексные решения всех полученных результатов.
Технология работы
- Подготовительный этап состоит из подробного описания выявленной проблемы, определения цели ИАР, определение методики исследования, формирования бюджета для осуществления процесса анализа.
- Создается рабочая группа, назначается руководитель проекта, распределяются задачи, устанавливаются сроки.
- Формируется список источников для получения информации.
- Этап исследования включает сбор информации, анализ всех данных, подготовка выводов.
- Нахождение критических точек, оценка результатов, выработка предложений для формирования стратегии.
Учитывая большой объем материалов, которые подлежат анализу, используются информационные технологии.
Особенности выполнения студенческой ИАР
В ряде гуманитарных вузов существует дисциплина «Информационно-аналитическая работа». Цель ее — научить студента аналитическому мышлению как средству решения социальных и других проблем общества.
Для выполнения работы студент должен
- знать методику проведения ИАР;
- уметь находить информацию в самых разных источниках и уметь с ними работать;
- владеть техникой изучения документов;
- систематизировать данные;
- анализировать результаты;
- формулировать прогноз;
- отвечать за объективность предоставляемых данных.
Если задание по выполнению информационно-аналитической работы представляется вам сложным и практически невыполнимым, обращайтесь за помощью к специалистам.
Закажите отчет по практике и получите скидку!
Хотите скидку на отчёт по практике? Сделайте заказ до 30 ноября и получите до 30% скидки.
Источник: fastfine.ru