Микроконтроллерные устройства
Главная | Каталог статей | Регистрация | Вход
Воскресенье
05.05.2024
15:02
Приветствую Вас Гость | RSS
Главная » Статьи » STM32 » STM32. Программирование и программное обеспечение

IAR EW for ARM. Создание проекта. Часть 1
IAR EW for ARM. СОЗДАНИЕ ПРОЕКТА

1. ПОНЯТИЕ И СОСТАВ ПРОЕКТА В IAR Electronic Workbench for ARM

1.1. Проект. Состав проекта

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

  • имена включаемых файлов-исходников и объектных библиотек;
  • опции средств генерации кода;
  • описание взаимосвязей подключаемых файлов.

Вся информация об отдельном проекте записывается в файле с расширением .ewp. Проект может быть представлен в нескольких конфигурациях – как правило, достаточно бывает двух: одна из конфигураций для отладки (Debug), другая – непосредственно для генерации программного кода (Release). Существенными отличиями этих простейших конфигураций, используемых «по умолчанию», являются опции оптимизации и использования отладочной информации, а также формат выходного файла.
Разрабатываемые проекты представляют собой достаточно сложные структуры, которые состоят из целого набора объектов, таких как библиотеки, файлы заголовков, командные файлы и множество исходных текстов. Количество файлов, включаемых в проект, не ограничено и может достигать нескольких десятков. Типы файлов определяются по их расширению. В табл. 1 приводится краткая информация об основных типах файлов, включаемых в проект, и об их назначении.

Таблица 1

Основные типы файлов проекта IAR EWARM
 

Расширение

Назначение файлов

.asm или .s Исходные тексты в кодах Ассемблера. Файлы используется при компиляции (ассемблировании) и компоновке.
.eww Файл конфигурации рабочей области (Workspace).
.ewp Файл, содержащий информацию о проекте.
.c* Исходные тексты программ на языке C/C++. Компилируются и компонуются.
.dep Файл с информацией о связях между составляющими проекта.
.h Заголовочные файлы, включаемые в проект. Содержат определения структур (регистровых файлов) и различных пользовательских констант.
.o* или .lib Объектные или библиотечные файлы. Могут быть использованы только на этапе компоновки.
Другое Файлы, не включаемые в проект по умолчанию.
 

1.2. Рабочая область проектов (Workspace)

Связанные по какому-либо признаку проекты можно объединять в т.н. «рабочей области» (Workspace) (РО). Например, это может быть удобным, если Вы разрабатываете один проект под разные МК; ведете проект системы, содержащий несколько МК, каждый из которых ответственен за выполнение определенной функции; или в составе одной из нескольких групп разработчиков работаете над проектом, в котором используются общие для групп исходные файлы (последние удобно организовать в виде проекта-библиотеки и включить в «свою» РО). Запуская РО, вы получаете доступ ко всем проектам и можете работать в них одновременно. Каждая РО может содержать один или более проектов, а каждый проект должен принадлежать как минимум одной РО.

2. СОЗДАНИЕ ПРОЕКТА

2.1. Создание проекта

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

[File] > New > Workspace.

Для создания проекта:

[Project] > Creat New Project.

В появившемся окне создания нового проекта, показанного на рис. 1,  из представленного списка простейших шаблонов (templates) выбрать C > main.
 

Рис. 1 – Диалоговое окно создания нового проекта
 
В результате будет сгенерирован "пустой" main-файл с соответствующим заголовком; предварительно Вам будет предложено записать файл на диск, дав ему имя. После для сохранения совокупного файла РО, содержащего информацию о всех проектах (как было уже сказано, в одной области может быть создано несколько проектов) выполняем команду Save All и записываем файл (.eww), указав для него путь и имя.

2.2. Настройка проекта

Необходимо напомнить, что в IAR EWARM возможны как минимум две конфигурации проекта: Debug (используется для отладки) и Release (код не включает отладочную информацию и используется для записи в память программ МК). Опции проекта для каждой из конфигураций задаются отдельно!!! Настройка проекта осуществляется после его создания в диалоговом окне, вызываемом с помощью пункта меню или сочетанием «горячих» клавиш:

[Project] > Options (Alt+F7)

Вид диалогового окна настройки опций проекта показан на рис. 2.

Рис. 2 – Диалоговое окно настройки опций проекта
 
Ниже приводится краткое описание наиболее значимых опций основных категорий (инструментальных средств) IDE.

     2.2.1. Category > General Option (Основные опции)

     Опции вкладки Target

[Processor variant]. Выбор целевого МК – либо обобщенно, указав лишь ядро (Core), например Cortex-M3, либо с указанием конкретного типа МК (Divice) (для STM32-Discovery это STM32F10xxB).
[Endian mode]. Выбор порядка следования байтов:
  • Little – младший байт размещается в ячейке с меньшим адресом (относительно старшего), старшему соответствует ячейка с большим ядресом;
  • Big – порядок размещения противоположный. Если предполагается организовывать в формате big-endian и программный код и данные, необходимо выбрать опцию BE32; если код организуется в формате little-endian, а данные – в формате big-endian, выбирается опция BE8.
[FPU]. Опция используется для генерации кода, выполняющего операции с числами в формате с плавающей точкой, с применением специализированного векторного сопроцессора. Использование такого сопроцессора дает определенные преимущества перед использованием программной библиотеки функций (используется по умолчанию – опция None) для всех поддерживаемых операций с числами в формате с плавающей точкой.

Опции вкладки Output

[Output file]. Выбор формата выходного файла:
  • Library – библиотека; ·
  • Executable – исполняемый файл (по умолчанию).

[Output directories]. Выбор путей (директорий) для размещения выходных файлов.

Опции вкладки Library Configuration

 Опции позволяют определить, какая из библиотек используется в проекте.  
[Library]. Конфигурация runtime-библиотеки языка С. На начальном этапе можно указать None.
 [Configuration file]. В данном текстовом блоке отражается имя файла конфигурации используемой библиотеки. Файл выбирается автоматически, в зависимости от используемой библиотеки. Если используется пользовательская библиотека (в ниспадающем списке [Library] указывается Custom), Вы должны определить соответствующий файл конфигурации.

Опции вкладки Library options (опции стандартной библиотеки языка С)

Настройка поддержки различных ключей строки форматирования (formatter) функций printf (Full, Large, Small, Tiny) и scanf (Full, Large, Small). Чем больше ключей поддерживается, тем больше размер кода, т.к. при этом неизменно усложняется реализация обработчиков строки форматирования. Необходимо отметить, что использование полной поддержки (опция Full) для большинства встраиваемых приложений является избыточным.

Опции вкладок MISRA-C: 2004 / MISRA-C: 1998

Подключение и настройка расширений языка Си – MISRA-C.
Примечание: MISRA-C – стандарт разработки программного обеспечения на языке Си, разработанный MISRA (Motor Industry Software Reliability Association. Цель стандарта — улучшить безопасность, переносимость и надежность программ для встраиваемых систем.

     2.2.2. Category > C/C++ Compiler

Настройки компилятора С/С++: поддержка расширений языков С/С++ (вкладка Language), режимы оптимизации компилятора (Optimization), генерация отладочной информации (Output), пути к подключаемым библиотечным файлам (Preprocessor) и т.д. Параметры, установленные по умолчанию, удовлетворяют начальному уровню и могут быть оставлены без изменения.
[Multi-file compilation]. Перед настройкой свойств компилятора, Вы можете определить, будете ли использовать технику групповой (multi-file) компиляции исходных файлов. В большинстве случаев использование групповой компиляции позволяет компилятору эффективно оптимизировать процесс. Вы можете использовать эту опцию для всего проекта или для групп файлов. При этом файлы проекта или соответствующая группа файлов будут скомпилированы совместно за одно обращение.

Опции вкладки Language

Настройка использования различных расширений языка C/C++.
[Language]. Определение поддержки различных расширений языка (при необходимости).
  • C – использование ISO/ANSI-стандарта языка (по умолчанию);
  • Embedded C++ – в этом режиме возможно использование программных единиц и возможностей, присущих Embedded C++, таких как классы и перегрузка;
  • Extended Embedded C++ – в этом режиме в пользовательском исходном коде можно использовать такие преимущества «расширенного» Си как пространство имен (namespaces) или STL библиотеки;
  • Automatic – если задействована эта опция, выбор того или иного стандарта языка будет производиться автоматически только лишь на основании расширения компилируемых исходных файлов (.c – используется стандартный Си, .cpp – Extended Embedded C++).
[Require prototypes]. При использовании данной опции компилятор проверяет все функции на наличие прототипов и соответствие им. Любой код, содержащий следующее, будет приводить к ошибке:
  • вызов функции без объявления, или с объявлением в стиле Кернигана и Ричи;
  • определение функции класса public без объявления прототипа;
  • косвенный вызов функции через указатель на функцию без объявления прототипа.
[Language conformance]. Для того, чтобы компилятор воспринимал специфические для ARM ключевые слова необходимо использовать расширения к стандартному языку С/С++. По умолчанию для этого установлена опция Allow IAR Extensions. Опция Relaxed ISO/ANSI отключает все расширения, и позволяет отступать от «строгого стандарта» С/С++. Опция Strict ISO/ANSI напротив предписывает следовать строгому стандарту.
[Plain 'char' is]. По умолчанию компилятор интерпретирует тип char как unsigned char. Для того, чтобы компилятор интерпретировал char как signed char (например, для совместимости исходного кода с другим компилятором), используйте эту опцию.

Опции вкладки Code

Определяют некоторые настройки для генерации кода, в зависимости от используемого целевого МК.
[Generate interwork code]. Опция используется по умолчанию для совместного использования ARM и Thumb кодов (инструкций).
[Processor mode]. Выбор режима процессора, используемого в Вашем проекте:
  • Arm – для генерации кода с использованием полной системы 32-разрядных команд;
  • Thumb – для генерации кода с использованием сокращенной системы 16-разрядных команд. Использование Thumb-кода позволяет минимизировать использование памяти и повысить производительность в системе с 8/16-разрядными шинами.

Опции вкладки Optimizations

Определяют тип и уровень оптимизации при генерации объектного кода.
[Level]. Компилятор поддерживает различные уровни оптимизации – в качестве критериев наиболее высокого из них Вы можете выбрать скорость либо размер кода:
  • None (облегчает отладку);
  • Low;
  • Medium;
  • High, balanced (компромис между оптимизацией по скорости и размеру);
  • High, speed (критерий оптимизации - скорость);
  • High, size (критерий оптимизации - размер).

Опции вкладки Output

Определяют общие настройки, имеющие отношение к выходным файлам.
[Generate debug information]. При активации этой опции (опция используется по умолчанию) компилятор добавляет в объектные модули дополнительную информацию, требующуюся для C-SPY и других символьных отладчиков. Замечание: Включение в объектные модули дополнительной отладочной информации, очевидно, приводит к увеличению размера соответствующих выходных файлов.
[Code section name]. Компилятор размещает функции в именованные секции, определяемые средствами компоновщика IAR ILINK Linker. Для размещения любой части исходного кода в отдельных секциях «не по умолчанию», Вы можете использовать это текстовое поле для определения пользовательского имени секции. Это может быть полезным, если Вы хотите контролировать размещение Вашего кода по различным диапазонам адресов, и при этом избегаете использования директивы #pragma как альтернативы предложенному способу. Замечание: будьте осторожны при размещении функции в предопределенную Вами секцию, отличную от используемой по умолчанию. Неправильное размещение может приводить к ошибкам различного рода, «невидимым» при компиляции и, как следствие, к компоновке неработоспособного приложения. Корректно рассматривайте условия; должны быть жесткие требования на объявление и использование функции или переменной. Кроме того, любые изменения в именах секций требуют соответствующей модификации файла конфигурации компоновщика.

Опции вкладки List

По умолчанию компилятор не генерирует list-файл – для генерации этого файла, или файла ассемблера необходимо выбрать следующие опции. При этом list-файл (с расширением .lst) будет сохранен в директории List.
[Output list file]. При выборе опции отметьте тип информации, включаемой в list-файл:
  • Asssembler mnemonics – мнемоника ассемблера;
  • Diagnostics – диагностическая информация.
[Output assembler file]. При выборе опции отметьте тип информации, включаемой в list-файл:
  • Include source – включение исходного кода в ассемблерный файл;
  • Include call frame information – включение служебной информации, генерируемой компилятором.

Опции вкладки Preprocessor

Позволяют определить символы и прописать пути к директориям для использования компилятором.
[Ignore standard include directories]. При использовании данной опции при компоновке проекта стандартные файлы подключаться не будут.
[Additional include directories]. Добавление путей к подключаемым библиотечным и исходным файлам в список путей для #include (прописывается полный путь).
Примечание: при поиске библиотечных и исходных файлов, подключаемых с помощью директивы #include, компилятор в первую очередь будет обращаться к дополнительно подключаемым директориям.
[Preinclude file]. Используйте эту опцию для предварительного (перед чтением исходного файла) подключения компилятором определенных Вами файлов. Это может оказаться полезным, если Вы хотите изменить что-нибудь в исходном коде для всего приложения, например, определить новый символ.
[Defined symbols]. Опция служит для удобного определения значения или для изменения определения, данного непосредственно в исходном файле. Для определения просто напишите символ, который Вы хотите ввести в проект:

TESTVER=1

Отметим, что строка определения печатается без пробелов между знаком равенства. Действие опции равносильно действию директивы #define, приводимой в «шапке» исходного файла. Например, Вы можете вводить в исходный файл фрагменты тестового кода, которые будут задействованы только при условии определения ключевой константы TESTVER. В таком случае тестовая версия исходного кода будет содержать следующие строки:

#ifdef TESTVER

…; строки тестового кода

#endif

Символ TESTVER при этом определяется только в конфигурации проекта, используемой для отладки – Debug.
[Preprocessor output to file]. По умолчанию компилятор не генерирует выходной файл препроцессора. Данная опция позволяет включить генерацию такого файла.

Опции вкладки Diagnostics

[Enable remarks]. Наименее критичные диагностические сообщения называются замечаниями (ремарками). Замечание указывает на конструкцию кода, которая может приводить к странному поведению в программе. По умолчанию такие замечания отключены.
[Suppress these diagnostics]. Опция запрещает вывод диагностической информации по определенному Вами признаку (ярлыку). Например, для запрета вывода предупреждений Pe117 и Pe177, их необходимо прописать в соответствующей строчке списка:
Pe117, Pe177
[Treat these as remarks]. Опция позволяет отнести любую диагностическую информацию в разряд замечаний. Например, для того чтобы указать компилятору, чтобы он трактовал предупреждение Pe177 как замечание, необходимо в отведенной для этого строчке просто написать:
Pe177
[Treat these as warnings]. Предупреждение (Warning) указывает на ошибки или упущения, которые хоть и заслуживают внимания, но не приводят к остановке компиляции до полного окончания процесса. Здесь ту или иную диагностическую информацию пользователь может самостоятельно определить как предупреждение. Например, для определения замечания с кодом Pe826 как предупреждения, этот код необходимо прописать в строке опции:
Pe826
[Treat these as errors]. Ошибка (error) указывает на существенное нарушение правил языка C/C++, препятствующее генерации выходного кода. Здесь определение диагностической информации как ошибки производится аналогично предыдущим случаям.
[Treat all warnings as errors]. Определение всех предупреждений как ошибки – все аналогично рассмотренному ранее.

2.2.3. Category > Assembler

Настройки ассемблера. На начальном этапе можно оставить без изменения.

Опции вкладки Language

Управление генерацией ассемблерного кода.

[User symbols are case sensitive]. Опция разделения заглавных и строчных букв. Включена по умолчанию, что означает, например, что объекты (переменные/константы) LABEL и label различаются компилятором. Если отключить опцию, эти записи будут иметь одинаковое значение.
[Macro quote characters]. Опция устанавливает символы, используемые для обозначения левой и правой кавычки/скобки, в которые заключается каждый макро-аргумент. По умолчанию, в качестве такого «обрамления» используются символы < и >. Выбор других символов выбирается из списка.
[Allow alternative register names, mnemonics and operands]. Опция позволяет переходить от существующего приложения к ассемблерному коду под IAR Assembler for ARM, для чего предусматриваются альтернативные имена для регистров, мнемоники и операндов. Для управления этой возможностью используется ассемблерная опция командной строки –j. Используйте эту опцию в исходном коде для ARM ADS/RVCT ассемблера. Более подробная информация в документе ARM IAR Assembler Reference guide.

Опции вкладки Output

Опции позволяют управлять генерацией информации, предназначенной для отладчика, например, такого, как IAR C-SPY Debugger.
[Generate debug information]. Опция задействуется при использовании отладчика в приложении.
 

Опции вкладки List

Опции вкладки используются управления генерацией ассемблером list-файла, для выбора содержимого list-файла, и генерации иной выводимой информации. По умолчанию, ассемблер не настроен на генерацию list-файла. При выборе опции Output list file ассемблер генерирует листинг и записывает его в файл sourcename.lst.
 
[Include header]. Заголовок (header) list-файла ассемблера содержит информацию о версии, дате и времени ассемблирования, и эквивалент используемых опций ассемблера в виде командной строки. Используйте данную опцию для включения заголовка в list-файл.
[Include listing]. Для определения типа информации, включаемой в list-файл, используются опции, приведенные в табл. 2
 
Таблица 2
Опции list-файла ассемблера
 

Опция

Описание

#included text Подключение файлов в list-файл через директиву #include
Macro definitions Включение макросов в list-файл
Macro expansions Включение макрорасширений в list-файл
Macro execution info Вывод информации при каждом вызове исполнении макроса
Assembled lines only Исключениеиз list-файла «неассемблируемых» строк из ассемблерных секций
Multiline code Вывод кода, генерируемого через директивы, в несколько строк (при необходимости)
 
[Include cross-reference]. Данная опция позволяет ассемблеру генерировать таблицу перекрестных ссылок. Таблица размещается в конце list-файла.
[Lines/page]. По умолчанию количество строк на странице list-файла равно 80. Опция позволяет установить произвольное число строк в диапазоне от 10 до 150.
[Tab spacing]. Установка ширины табуляции (от 2 до 9 позиций, по умолчанию – 8 позиций).

Опции вкладки Preprocessor

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

[Ignore standart include directories]. При выборе опции стандартные файлы при компиляции проекта игнорируются.
[Additional include directories]. Определение дополнительных путей для подключаемых через директиву #include файлов.
[Defined symbols]. Опция предоставляет удобный способ определения или переопределения значения. Для этого необходимо прописать каждый из определяемых символов отдельной строкой. Например, Вы можете организовать исходный файл так, чтобы он содержал в себе два варианта кода – для тестирования и основной – в зависимости от того определен или не определен символ TESTVER. Для этого в исходный файл необходимо включить подобную секцию:
 
#ifdef TESTVER
…; // строки дополнительного, проверочного кода
#endif
 
Символ TESTVER при этом определяется только в конфигурации проекта, используемой для отладки – Debug.
Как вариант, можно использовать возможности опции в случае, если в исходном коде есть переменная, которую приходиться часто изменять, например, переменная FRAMERATE. В этом случае Вы оставляете переменную неизменной в тексте кода, и для изменения значения переменной в проекте используете данную опцию, например, пишите FRAMERATE=3. Для удаления определенных символов используйте клавишу Delete.
[Diagnostics]. Опция используется для управления (включения/отключения) персональных предупреждений. Ассемблер выдает предупреждения в случае, когда лексически правильный элемент исходного кода может по его мнению приводить к программным ошибкам. По умолчанию все предупреждения включены. Опция позволяет активировать/дизактивировать лишь некоторые из предупреждений.
[Max number of errors]. По умолчанию количество ошибок, о которых сообщает ассемблер составляет 100. Опция позволяет увеличить или уменьшить это число.

Опции вкладки Extra Options

Опции обеспечивают доступ к интерфейсу командной строки ассемблера.

[Use command line options]. В поле можно определить дополнительные аргументы командной строки.

2.2.4. Category > Output Converter

Конвертация выходного файла.

Опции вкладки Output

По умолчанию EWARM генерирует исполняемый файл в формате ELF, для генерации дополнительного выходного файла > Generate additional output > в списке Output format выбирается подходящий для используемого Вами программатора формат, например, Intel extended (.hex).

2.2.5. Category > Custom Build

Пользовательская сборка. Задание дополнительных утилит, использующихся при сборке проекта и их параметров.

2.2.6. Category > Build Actions

Действия при сборке. Указание пользовательских команд, выполняющихся перед сборкой или после.
 
ИСПОЛЬЗОВАННЫЕ ИСТОЧНИКИ И ПОЛЕЗНЫЕ ССЫЛКИ
  1. IAR Embedded Workbench® IDE. User Guide for ARM. – IAR Systems AB, 2009.
  2. ARM. Учебный курс. IAR EWARM. Создание проекта. [Электронный ресурс]. – Режим доступа: http://easyelectronics.ru/arm-uchebnyj-kurs-iar-ewarm-sozdanie-proekta.html. – 20.02.2013.
     
 
 
 
UNDER CONSTRUCTION...
Категория: STM32. Программирование и программное обеспечение | Добавил: Dante (10.02.2013) | Автор: Ванцев Д.В. E
Просмотров: 20632 | Рейтинг: 3.0/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Категории раздела
STM32. Аппаратное обеспечение [1]
Используемые и рекомендуемые аппратные средства изучения МК семейства STM32 и разработки приложений на их основе.
STM32. Программирование и программное обеспечение [2]
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright MyCorp © 2024
Создать бесплатный сайт с uCoz