Iar embedded: Использование среды разработки IAR Ebedded Workbench IDE / Хабр

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-битных).

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

Официальный сайт IAR Embedded Workbench: http://www.iar.com

Скачать IAR Embedded Workbench

Обсуждение программы на форуме

IAR Workbench — IDE для STM32 — Avislab

IAR — IAR Embedded Workbench for ARM 7.80

Установка и настройка. Создание первого проекта. Официальный сайт: https://www.iar.com/ Платная среда разработки для микроконтроллеров STM32. В бесплатном варианте имеет ограничение либо на 30 дней, либо по объему программы до 32Кб. Скачать можно с официального сайта.

Установка и настройка IAR

Устанавливаем IAR. Здесь все просто — скачал, установил. После установки попросит регистрацию. Нужно зарегистрировать для бесплатного использования. При регистрации указываем вариант ограничения для бесплатной версии на 30 дней, либо по объему программы до 32Кб. После регистрации на электронную почту придет регистрационный ключ. Вводим ключ регистрации.

Установка библиотек SPL

IAR для STM32 поставляется без библиотек SPL. Поэтому нужно скачать библиотеки с сайта st.com. Для STM32F103 ссылка: http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries/stsw-stm32054.html Создадим папку, в которой будут наши проекты, например
C:\STM32_Projects
. В этой папке создаем папку Libraries и в нее распаковываем содержимое архива en.stsw-stm32054.zip (скачанная библиотека SPL). Точнее не все содержимое, а содержимое папки Libraries из архива, остальное нам не столь интересно. Создаем папку, в которой будет первый проект нашей программы: C:\STM32_Projects\Example_First_Programm Создаем Workspace (меню File->New->Workspace) Сохраняем Workspace в папку C:\STM32_Projects (меню File->Save Workspace As. ..) Создаем проект (меню Project->Create New Project…) Выбираем Tool chain:
ARM
Сохраняем проект в папку C:\STM32_Projects\Example_First_Programm Получаем следующую картину: Добавляем группу для библиотеки с именем Lib (имя группы особой роли не играет) В группу Lib добавляем файлы из библиотеки CMSIS:
C:\STM32_Projects\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\iar\startup_stm32f10x_md.s
C:\STM32_Projects\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c Открываем настройки проекта: В настройках в закладке Target указываем Device В закладке Library Configuration указываем Use CMSIS и DSP library. Переходим в категорию C/C++ Compiler В закладке Preprocessor в поле Additional include directories Добавляем следующие пути: C:\STM32_Projects
C:\STM32_Projects\Libraries
C:\STM32_Projects\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\iar
C:\STM32_Projects\Libraries\STM32F10x_StdPeriph_Driver\inc
C:\STM32_Projects\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x Лучше указывать относительные пути: $PROJ_DIR$
$PROJ_DIR$\. .\Libraries
$PROJ_DIR$\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\iar
$PROJ_DIR$\..\Libraries\STM32F10x_StdPeriph_Driver\inc
$PROJ_DIR$\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x Указываем Defined symbols: STM32F10X_MD
USE_STDPERIPH_DRIVER Переходим в Категорию Output Converter и выбираем формат выходного файла. Переходим в Категорию Linker Здесь нам нужно указать Linker configuration file. Можно оставить как есть. Но, если предполагается редактировать этот файл, лучше его скопировать в папку проекта. Для этого отмечаем Override default и нажимаем кнопку с тремя точками для выбора файла. Диалоговое окно для выбора файла откроется в папке с файлами
icf
. Находим нужный для нашего контроллера, кликнем на нем правой кнопкой мыши и выполняем пункт Копировать. Далее переходим в папку STM32_Project и вставляем в папку нашего проекта. После чего заходим в папку проекта и выбираем скопированный файл Теперь нажав кнопку Edit… можно редактировать icf файл для своего проекта. Переходим в категорию Debugger и указываем используемый отладчик. В моем случае это ST-Link В папке проекта или в папке C:\STM32_Projects\Libraries\, кто как привык, создаем файл stm32f10x_conf.h Например, такого содержания:

/**
  ******************************************************************************
  * @file    stm32f10x_conf.h
  * @author  MCD Application Team
  * @version V3.4.0
  * @date    10/15/2010
  * @brief   Library configuration file.
  *********************************************************************

IAR Embedded Workbench® для STM8

Прошло уже много времени с первого знакомства с микроконтроллерами STM8, на текущий момент у меня сложилось уже некоторое “понимание” компилятора Cosmic и появилось желание сравнить его с популярным продуктом IAR Embedded Workbench ®. Точнее меня интересует как реализовано выполнения кода из ОЗУ.

IAR Embedded Workbench® это интегрированная среда для разработки и отладки программ для различных платформ, в данном случае для микроконтроллеров серии STM8A, STM8S и STM8L.

На текущий момент предлагается версия 1.30 и два варианта использования:

  • 30-day evaluation edition — 30 дневная пробная версия, без ограничения по размеру кода
  • 8kB KickStart edition – почти без ограничения по времени (на текущий момент выдают лицензию до 2036 года), но с ограничением по размеру кода (8 кБ)

И ещё два варианта: купить полноценную версию или крякнуть 😉

Переустанавливать программы я не люблю, взламывать не наши методы, поэтому я выбрал 8kB KickStart edition для пробы более чем достаточно.

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

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

Первый запуск

Как и в эклипсе первым делом необходимо создать рабочее пространство Workspace:

и новый проект:

я выбрал обычный Си.

Получилась вот такая заготовка:

Осталось только настроить проект под наши нужды.

Для этого открываем настройки проекта (Alt+F7) и производим следующие:

  • выбираем необходимый микроконтроллер, в моем случае это STM8S105C6
  • изменяем уровень оптимизации на максимальный
  • и выбраем ST-Link

Для примера я взял инициализацию OLED дисплея, скопировал все файлы в директорию проекта и подключил исходник для OLED дисплея:

Собралось все без проблем, что удивило 🙂

Разница в размере получилась не большая:

  • IAR – 762 байт
  • Cosmic — 701 байт

Но это для меня не главное, как я уже говорил мне интересно выполнение кода из ОЗУ.

Дело в том что если в коде используются какие либо библиотечные функции, то они по прежнему остаются во флеш. В космике я не смог пока решить эту проблему.

Для проверки объявил функцию задержки с атрибутом __ramfunc , но чуда и тут не произошло

как видим идет вызов встроенной подпрограммы load32_10_dbsp расположенной по прежнему во флеш 🙁 (адрес 0x822C)

Так что пока вопрос остался открытым, буду искать решение дальше.

Если кто знает как решить или есть какие-то мысли по этому поводу напишите пожалуйста.

Electronics — IAR Systems — Установка IAR Embedded Workbench и активация лицензии

Если у вас уже были некоторые трудности при установке IAR Embedded Workbench, позвольте мне объяснить, как получить лицензию с ограничением по времени или с ограничением размера кода.

Этот туториал поможет вам устранить ошибку такого рода при попытке собрать проект без лицензии:

Неустранимая ошибка [LMS001]: лицензия не найдена. Для решения проблемы воспользуйтесь диспетчером лицензий IAR [LicenseCheck: 2. 13.8.154, RMS: 3.4.2.0085, Функция: ARM.EW.COMPILER, Версия: 1.00]

Не так уж и сложно, но настроить IDE иногда не так просто.

Загрузка IDE

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

Перейдем на официальный сайт IAR Systems: http://www.iar.com/
Для прямой ссылки: http://www.iar.com/en/Service-Center/Downloads/

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

Установка IDE

Запустите двоичный файл, например EWARM-CD-6503 , и установите его на свой компьютер.

Управление лицензией

Теперь нам нужно открыть диспетчер лицензий.

Для этого откройте IDE и> Справка> Диспетчер лицензий …

В новом окне нажмите «Лицензия»> «Получить ознакомительную лицензию».

Появится окно мастера лицензий с просьбой зарегистрироваться.
Нажмите кнопку «Зарегистрироваться».

Откроется ваш браузер, и вы должны заполнить форму, чтобы получить номер лицензии для активации IAR Embedded Workbench.

Вам отправлено электронное письмо.
Щелкните ссылку для подтверждения в своем электронном письме, и откроется новая страница с номером лицензии.

Введите его и нажмите Далее в мастере лицензирования.

Нажмите «Далее» еще раз, чтобы активировать лицензию.
Щелкните Готово.

Если вы уже установили

Возможно, однажды вы откроете свою IDE и появится новая ошибка:

Неустранимая ошибка [LMS001]: не удалось получить функцию: «ARM.EW.COMPILER_KS «версия:» 1.00 «.

Для этой функции нет лицензии. Код состояния 0x12. [LicenseCheck: 2.12.3.454, RMS: 8.5.0.0021, Функция: ARM.EW.COMPILER,

Версия: 1.00]

Ошибка при запуске компилятора C / C ++

myfile. c

Связывание

Причина в том, что вам нужно попросить другой ключ.
Да, я знаю, что это странно, ведь постоянный ключ уже активирован.

В любом случае, повторите процесс, чтобы запросить ключ, как если бы это был ваш первый раз.

Заключение

Попробуйте пересобрать свой проект.
Молодец, вы сделали это.
Теперь вы можете использовать EWARM как амулет.

IAR Embedded Workbench | База данных совместимости

13628 iar-embedded-workbench 0 0 3 0

IAR Embedded Workbench — это среда разработки для встроенных систем.

Mac Рейтинг

Ограниченная функциональность
Последнее тестирование: 16. 1.0 (1)

CrossOver Linux Рейтинг

Без рейтинга

2

Установить программное обеспечение Windows

Установить сейчас

2

Требуется установка вручную

Модифицированный

8 мая 2015 г. , 14:21

Как установить CrossOver для запуска IAR Embedded Workbench

Нажмите кнопку «Загрузить бесплатную пробную версию» выше и получите 14-дневную полнофункциональную пробную версию CrossOver.После того, как вы загрузили CrossOver, посмотрите наше обучающее видео на YouTube слева или посетите пошаговое руководство CrossOver Chrome OS, чтобы узнать о конкретных шагах. После установки и запуска CrossOver вы можете вернуться на эту страницу и нажать кнопку «Шаг 2» или следовать руководству по ручной установке, чтобы начать установку приложения Windows. Нажмите кнопку «Загрузить бесплатную пробную версию» выше и получите 14-дневную полнофункциональную пробную версию CrossOver. После того, как вы загрузили CrossOver, посмотрите наше обучающее видео на YouTube слева или посетите пошаговое руководство CrossOver для Mac, чтобы узнать о конкретных шагах. После установки и запуска CrossOver вы можете вернуться на эту страницу и нажать кнопку «Шаг 2» или следовать руководству по ручной установке, чтобы начать установку приложения Windows. Нажмите кнопку «Загрузить бесплатную пробную версию» выше и получите 14-дневную полнофункциональную пробную версию CrossOver.После того, как вы загрузили CrossOver, посмотрите наше обучающее видео на YouTube слева или посетите пошаговое руководство CrossOver Linux, чтобы узнать о конкретных шагах. После установки и запуска CrossOver вы можете вернуться на эту страницу и нажать кнопку «Шаг 2» или следовать руководству по ручной установке, чтобы начать установку приложения Windows.

{«prikey»: null, «blk»: «», «acmd»: «», «req»: [«app_plnk», «app_name»], «unq»: [«app_plnk»], «opt»: [«hplatform», «app_mode»], «override»: {«app_plnk»: «plnk», «hthumb»: «url», «in_beta»: «onoff», «in_stats»: «onoff», «oem_blurb» : «html», «og_image»: «html_image», «img_icon»: «html_image», «img_box»: «html_image», «app_desc»: «html», «install_text»: «html», «about_text»: » html «,» app_exes «:» minp_text «,» medal_android «:» stars «,» medal_mac «:» stars «,» medal_linux «:» stars «,» dl_count «:» number «,» app_timestamp «:» date » , «c4p_creation»: «date», «c4p_edittime»: «date»}}

Подождите. ..

eyJjb3VudHJ5IjoiUlUiLCJsYW5nIjpudWxsLCJjYXJ0IjowLCJ0enMiOi02LCJjZG4iOiJodHRwczpcL1wvbWVkaWEuY29kZXdlYXZlcnMuY29tXC9wdWJcL2Nyb3Nzb3Zlclwvd2Vic2l0ZSIsImNkbnRzIjoxNjA4MTUxMjM3LCJjc3JmX3Rva2VuIjoiOVVFM0h5YWtjUGZ1bmdWciIsImdkcHIiOjB9 АРМ 之 七 主流 编译 器 (ARMCC, IAR, GCC для руки) 详细 介绍 _itexp-CSDN 博客 _armcc 编译 器

讲解 编译 器 之前 , 先 以下 文件。 这些 文件 在 下 编译 生成 目标 平台 的 可执行 经常 见到。 此外 Linux 文

  • .o 文件 : 的 的 是 object 文件 , 俗称 目标 文件。 Linux 扩展 名 缩写 为.o windows 下 通常 为 .obj 文件。
  • .a 文件 : 的 是 archive 文件 , 俗称 静态 库 文件。 Linux 下 扩展 名 缩写 .a windows 下 通常 为 .lib14 文件.
  • .so 文件 : 的 是 shared object 文件 , 用于 动态 连接 的。 在 Linux 下 扩展 名 缩写 为 .so , windows 下 通常 通常 .dll 文件。

.o 文件 是 文件 ,. a 静态 库 文件 , 需要 .o 文件 生成 作为 一个 库 为 外部 程序 函数。 的 可以 看 一下 博 文 ARM 之一 镜像 文件 (Image) / 可执行 文件 / ELF 文件 / 对象 文件 详解。

中 , 有 大量 的 .o .a 文件。 文件 在 编译 的 会 用到 的 编译 链 链 .o. a 文件 呢? 这 是 因为 编译 链 是 在 Linux 系统 中 编译 生成 的! 。 看下 图 :

如果 有 亲自 编译 过 交叉 那么 就 target build 、 host这 几个 参数 :

  • –build = 编译 该 软件 (就是 指 的 交叉 编译 工具 链 本身) 所 使用 的 平台
  • –host = 该 软件 (就是 指 的 交叉 编译 工具 链) 的 平台
  • –target = (就是 指 的 交叉 编译 工具 链 本身) 所 要 处理 的 目标 平台。 即 交叉 链 编译 出来 的 程序 的 平台

, 针对 于 ARM 的 主流 编译 器 主要 有 以下 三者 :

(配套 9018 9018 18 //
比较 ARMCC IAR GCC для ARM
命令 行 工具 随 IDE 发布 , , 6 IDE 6
开发 ARM IAR ARM 、 Linaro 、 Mentor
的 的 平台 Windows 、 Linux Windows Windows Linux 、 Mac Keil MDK 、 ARM Development Studio 5 S ADS ВСТРОЕННАЯ РАБОЧАЯ СТАНЦИЯ IAR ДЛЯ ARM 两者 外 的 其他 ARM 的 IDE 例如 : eclipse 、 Visual Studio
官186arm. com/tools-and-software/embedded/arm-compiler/downloads https://www.iar.com/iar-embedded-workbench/ 1. https://launchpad.net/gcc-arm -встроенный
2. https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

ARM 网上 除了 提供 了 配套 IDE (参考 博 文 《ARM 之 各 集成 开发 环境 (IDE) 说明 (Keil 、 RVDS 、 ADS 、 DS-5 、 MDK)》) 以外 , 15 每次 都会 提供 器 器下载 用户 可以 安装 器 采用 命令 行 形式 使用。。
ARM 的 IDE 和 编译 器 是 使用者Arm Compiler 6 ARM Arm Compiler 5 的 者 的Arm Compiler 6, LLVM, Clang,

, ARM,
, Общие выпуски обновлений для последней ветки, версия 5.06, завершился в третьем полугодии 2017 года 5.06у6. После этого дальнейшая поддержка и обслуживание будут доступны через выпуски Arm Compiler с долгосрочным обслуживанием, обслуживание будет продолжаться как минимум до лета 2020 года. Каждый выпуск Arm Compiler 5.06 для сертификации и Arm Compiler 5. 06 с долгосрочным обслуживанием будет поддерживаться комплектом квалификации Arm Compiler Qualification Kit.
Используется Arm Compiler 5 для ARM-компилятора 6, для Arm Compiler 5 для IDE. Arm Compiler 5, Arm Compiler 6

, 了 , ARM 也 独立 例如即可! 我 本身 安装 了 多个 的本 的 ARM 编译 器 , 如下

  1. Edison Design Group Создание и поддержка个人 重要 的 , vo 家 公司 只有 只有 5 个人。
    。。 个人 依次 是 : Майк Миллер, Дэйвид Вандевурд, Стив Адамчик, Джон Спайсер, Майк Херрикл。 Дэвид Вандеворд 写过 Шаблоны C ++》 Решения C ++ Майк Миллер, С ++, С ++, С ++, Майк Херрик, Белл, 19, Стив Адамчик, Джон Спайсер, EDG, прохождение,
  2. ,
  3. , IDE, ARM,.如 ADS 时代!

armcc.exe

Компилятор ARM и Thumb®. Это компилирует ваш код C и C ++, поддерживает встроенные и встроенные ассемблеры, а также включает компилятор векторизации Advanced SIMD. ARM Thumb® 器。 将 编译 您 的 C C ++ 代码。 它 支持 汇编 程序 , 还 包括 SIMD 矢量。
标准 C ++源 代码 编译 为 ARM 和 Thumb® 代码 :

  • Стандарт ISO C: 1990 источник.
  • Стандарт ISO C: 1999 источник.
  • Стандарт ISO C ++: источник 2003.
  • Стандарт ISO C ++: 2011 источник.

armcc 符合 Базовый стандартный двоичный интерфейс приложения для ARM Architectur (ARM 体系 结构 的 基本 应用 程序 接口 BSABI)。 特别 是 编译 器 :

  D: \ ARM \ ARM_Compiler_5.06u4> armcc
Продукт: ARM Compiler 5.06
Компонент: ARM Compiler 5.06 обновление 4 (сборка 422)
Инструмент: armcc [4d3604]

Использование: armcc [параметры] файл1 файл2 ... файл
Основные возможности:

--arm Сгенерировать код ARM 创建 ARM 代码
--thumb Создать код большого пальца 创建 Thumb 代码
--c90 Перейти в режим C (по умолчанию для файлов .c) 切换 到 C 模式 (默认 是 .c 文件)
--cpp Перейти в режим C ++ (по умолчанию для файлов .cpp) 切换 到 C ++ 模式 (默认 .cpp 文件)
-O0 Минимальная оптимизация 最小 优化 级别
-O1 Ограниченная оптимизация для отладки 受限 的 调试 级别 优化
-O2 Высокая оптимизация 高 优化
-O3 Максимальная оптимизация 最大 优化
-Ospace Optimize для размера кода 对 代码 大小 进行 优化
-Otime Optimize для максимальной производительности 优化 最大 优化 级别 的 运行 时间
--cpu  Выбрать ЦП для генерации кода 选择 ЦП
--cpu list Вывести список всех выбираемых процессоров 输出 所有 被 选中 的 CPU 列表
-o <файл> Назовите конечный выходной файл компиляции 最终 输出 文件 的 名字
-c Только компилировать, не связывать 只 进行 编译 , 不 链接
--asm Вывести ассемблерный код, а также объектный код 输出 汇编 以及 obj 文件
-S Выводить ассемблерный код вместо объектного кода 只 输出 汇编 文件
--interleave Источник чередования с дизассемблированием (использовать с --asm или -S) 交叉 反 汇编 (использовать с --asm или -S)
-E Предварительная обработка только исходного кода C C 预处理 C 代码
-D  Определить  при входе в компилятор 定义  符号 并且 传入 编译 过程
-g Создать таблицы для высокоуровневой отладки 为 高 级别 调试 创建 表
-I <каталог> Включить <каталог> в путь поиска #include 在 编译 的 时候 包含 <каталог> 作为 头 文件 搜索 目录
  

其 默认 的 头 文件 搜索 路径 如下 图 所示 :

армасм. exe

Ассемблер ARM и Thumb. Это собирает исходные коды ассемблера ARM и Thumb. ARM 和 большой палец 汇编 器。 这 将 汇编 ARM 和 большой палец 汇编 语言 源 文件。

  D: \ ARM \ ARM_Compiler_5.06u4> армасм
Продукт: ARM Compiler 5.06
Компонент: ARM Compiler 5.06 обновление 4 (сборка 422)
Инструмент: armasm [4d35cf]
Только для образовательных целей
Программное обеспечение предоставлено: ARM Limited

Использование: armasm [параметры] исходный файл

Параметры:
--list listfile Записать файл списка (параметры см. в руководстве) 生成 列表 文件
 -o outputfile Назовите файл окончательного вывода 命名 最终 输出 文件 名
--depend verifyfile Сохранение зависимостей исходного файла 'make' '' make '源 文件 依赖
--errors errorfile Поместить диагностику stderr в файл ошибок 把 标准 错误 判断 файл ошибок
 -I dir [, dir] Добавить каталоги в путь поиска исходного файла 添加 源 文件 的 搜索 目录
--pd
--predefine directive Предварительно выполнить директиву SET {L, A, S} 预 执行 SET {L, A, S} 指令
--maxcache  Максимальный размер кеша (по умолчанию 8 МБ) 最大 闪存 空间 (по умолчанию 8 МБ)
--no_esc Игнорировать escape-последовательности в стиле C (\ c) 忽略 C 风格 (\ c) 转义 序列
--no_warn Отключить предупреждающие сообщения 关闭 警告 信息
 -g Выводить таблицы отладки 输出 调试 表
--apcs /  Сделать предварительные определения для соответствия
                           выбранный стандарт вызова процедуры 进行 预定 义 以 匹配 选择 的 程序 调用 标准
--checkreglist Предупреждать о выходе из строя списков регистров LDM / STM 警告 LDM / STM 寄存器 列表 出现 故障
--help Распечатать эту информацию 打印 帮助 信息
--li с прямым порядком байтов ARM 小 端 模式 的 ARM
--bi с прямым порядком байтов ARM 大端 模式 的 ARM
 -M Записывать списки зависимостей исходного файла в stdout 将 源 文件 依赖 关系 列表 写入 stdout
--MD Записать списки зависимостей исходного файла в файл ввода. d 将 源 文件 依赖 关系 列表 写入 файл ввода. d
--keep Сохранять локальные метки в таблице символов объектного файла 将 本地 标签 保存 在 目标 文件 的 符号 表 中
--regnames none Не определять имена регистров заранее 不 预定 义 寄存器 名称
--split_ldm Сбой длинный LDM / STM
--unsafe Понижать некоторые ошибки до предупреждений 将 某些 错误 降级 为 警告
--via <файл> Прочитать дополнительные аргументы из <файл> 从 <файл> 中 读取 更多 参数
--cpu  Установить целевой тип ядра ARM 设置 目标 ARM 核心 类型
--cpu list Вывести список всех выбираемых процессоров 输出 所有 可选 CPU 的 列表
--fpu  Установить целевую версию архитектуры FP 设置 目标 FP 架构 Version本
--fpu list Вывести список всех выбираемых архитектур FP 输出 所有 可选 FP 架构 的 列表
--thumb Инструкции по сборке Thumb 汇编 Thumb 指令
--arm Сборка инструкций ARM 汇编 ARM 指令
  

armlink.exe

Компоновщик. Это объединяет содержимое одного или нескольких объектных файлов с выбранными частями одной или нескольких объектных библиотек для создания исполняемой программы. Также предоставляется 64-битная версия armlink, которая может получить доступ к большему объему памяти, доступному на 64-битных машинах. Он поддерживает все функции, которые поддерживаются 32-битной версией armlink в этом выпуске.器。.
Если вы используете ARM Compiler как отдельный продукт, по умолчанию используется 32-разрядная версия.Версия компоновщика ARM в DS-5 зависит от платформы хоста, для ARM-компилятора. 32-битные инструменты имеют 32-битный компоновщик, а 64-битные инструменты имеют 64-битный компоновщик. Вы не получаете обе версии. Для Microcontroller Developer Kit (MDK) предоставляется только 32-битный компоновщик.对于 DS-5 中 的 ARM , 链接 器 器 本 平台。 32 位 工具 具有 32 位 链接 器 , 64 位 工具 具有 64 位 链接 器 没有 获得 这 两个包 (MDK) , 仅 提供 32 位 链接 器。

  D: \ ARM \ ARM_Compiler_5.06u4> armlink
Продукт: ARM Compiler 5.06
Компонент: ARM Compiler 5.06 обновление 4 (сборка 422)
Инструмент: armlink [4d35d2]
Только для образовательных целей
Программное обеспечение предоставлено: ARM Limited

Использование: список-опций armlink список-входных-файлов
где
    option-list - это список параметров без учета регистра.不 区分 大小写 的 选项 列表。
    input-file-list - это список файлов входных объектов и библиотек.输入 对象 或者 库 文件 列表。

Общие параметры (сокращения показаны с заглавной буквы):
   --help Распечатать это резюме.显示 帮助 信息。
   --output file Укажите имя выходного файла.指定 输出 文件 名。
   --via file Прочитать дополнительные аргументы из файла.Опции для указания информации о карте памяти:
   --partial Создать частично связанный объект.创建 一个 被 分散 链接 的 对象 文件。
   --scatter file Создать карту памяти, как описано в файле.按 文件 (分散 加载 文件) 中 的 描述 创建 内存 映射。
   --ro-base n Установить адрес exec области, содержащей разделы RO.设置 执行 地址 空间 域 , 包含 RO 段 (只读 数据 段)。
   --rw-base n Установить exec-адрес региона, содержащего разделы RW / ZI.设置 执行 地址 空间 域 , 包含 RW / ZI 段。

Варианты управления содержимым изображения:
   --bestdebug Добавить отладочную информацию, обеспечивающую наилучшее отображение отладки к изображению.添加 调试 信息 , 为 镜像 提供 最佳 调试 视图。
   - датакомпрессор выключен
                   Не сжимайте разделы данных RW.不要 压缩 RW 数据 段。
   --no_debug Не добавлять отладочную информацию к изображению.不 添加 调试 信息。
   --entry Указать разделы и точку входа.指定 输入 段 与 输入 点。
   --libpath Укажите путь для поиска системных библиотек.指定 系统 库 文件 路径。
   --userlibpath Укажите путь для поиска пользовательских библиотек.指定 用户 库 文件 路径。
   --no_locals Не добавлять локальные символы в таблицу символов изображения.添加 局部 标号 到 image 的 标号 列表。
   --no_remove Не удалять неиспользуемые разделы с изображения.不要 移除 image 的 未 使用 段。

Варианты управления информацией, связанной с изображением:
   --callgraph Создать статический граф вызовов функций.创建 一个 函数 静态 调用 图。
   --feedback file Генерировать обратную связь, которая может использоваться компилятором в файле.
   --info список тем Разное. информация об изображении.
                    Доступные темы: (разделите несколько тем запятыми)
                     common Список общих разделов, удаленных с изображения.
                     В списке отладки исключены входные разделы отладки.
                     sizes Список кодов и размеров данных для объектов в изображении.totals Список общих размеров всех объектов на изображении.
                     виниры Перечислите созданные виниры.
                     неиспользуемые разделы списка удалены из изображения.
   --map Показать карту памяти изображения.显示 изображение 内存 映射。
   --symbols Список символов на изображении.列出 изображение 符号。
   --xref Перечислить все перекрестные ссылки между входными разделами.列出 输入 的 段 之间 所有 的 交叉 引用. 最终 输出 会 放在 .map 文件 里面。
  

armar.exe

Библиотекарь. Это позволяет собирать наборы объектных файлов ELF и хранить их в архивах или библиотеках.Вы можете передать такую ​​библиотеку или архив компоновщику вместо нескольких файлов ELF. Вы также можете использовать архив для распространения третьим лицам для дальнейшей разработки приложений.库 文件 管理 工具。 这 ELF 对象 文件 集 可以 一起 收集 并 维护 在 文件 或 中。 您 可以 将此 类库 或 存档 传递 链接 以 代替 ELF 文件。 您 还 可以 使用三方 以 进行 进一步 的 应用 程序 开发。

  D: \ ARM \ ARM_Compiler_5.06u4> армар
Продукт: ARM Compiler 5.06
Компонент: ARM Compiler 5.06 обновление 4 (сборка 422)
Инструмент: armar [4d35c8]

Инструмент для создания и обслуживания архивов

Формат команды:

Архив опций armar [file_list]

Подстановочные знаки '?' и '*' можно использовать в file_list

Параметры:-

 -r Вставить файлы в , заменить существующие элементы с тем же именем.在  中 插入 文件, 替换 掉 已经 存在 的 同名 成员。
 -d Удалить элементы из .从 <список_файлов> 中 删除 成员。
 -x Извлечь элементы из , помещая их в файлы с тем же именем.从  中 提取 同名 的 成员。
 -m Переместить файлы в <список_файлов>.在 <список_файлов> 中 移动 文件。
 -p Печатать файлы на стандартный вывод.打印 文件 到 标准 输出 设备。
 -a pos Вставить / переместить файлы после файла с именем .插入 / 删除  后面 的 文件。
 -b pos Вставить / переместить файлы перед файлом с именем .插入 / 删除  前面 的 文件。
 -u Обновлять только старые файлы, используемые с -r.只 更新 旧 的 文件, 与 -r 一起 使用。

 -n Не добавлять таблицу символов в архив объектов.不要 向 объект 文件 中 添加 符号 表。
 -s Принудительное восстановление таблицы символов архива.强制 重新 生成 文档 符号 表。
 -t Распечатать содержание архива.打印 文档 的 内容 表。
--zs Показать таблицу символов.显示 符号 表。
--zt Суммировать содержимое архива (размеры + записи).汇总 文档 内容 (大小 和 输入)。
 -c Подавить предупреждение при создании нового архива.当 一个 新 文档 被 创建 的 时候 不 显示 警告。
 -C Не перезаписывать существующие файлы при распаковке.提取 的 时候 不要 覆盖 一个 已经 存在 的 文件。
 -T Обрезать имена файлов до максимальной длины системы.截取 系统 最大 长度 文件 名。
 -v Вывести подробный вывод.提供 详细 输出。
--create Принудительное создание нового архива.强制 创建 一个 新 文档。
--via file Принимать дополнительные аргументы из файла via.从 через 文件 中 获取 额外 参数。
--sizes Вывести размер каждого члена и общий объем библиотеки.列出 所有 成员 大小 与 库 的 总 大小。
--entries Список разделов, содержащих точки ВХОДА.列出 包括 入口 点 的 部分。
--vsn Вывести текущую версию Armar.打印 最新 的 armar 中。
--help Распечатать это сообщение.打印 帮助 信息。

Примеры:-

        armar -r mylib.объект obj1 obj2 obj3 ...
        armar -x mylib.a? сортировать *
        armar -d mylib.a hash.o
        armar -tv ansilib.a
  

fromelf.exe

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

  D: \ ARM \ ARM_Compiler_5.06u4> из
Продукт: ARM Compiler 5.06
Компонент: ARM Compiler 5.06 обновление 4 (сборка 422)
Инструмент: fromelf [4d35cb]

Утилита преобразования изображений ARM.ARM 镜像 转换 工具
fromelf [параметры] input_file

Параметры:
       --help отобразить этот экран справки 显示 帮助 信息
       --vsn отобразить информацию о версии 显示 本
       --output file выходной файл. (по умолчанию используется стандартный вывод для текстового формата) 输出 文件 名. (默认 输出 -текст 格式)
       --nodebug не помещать области отладки в выходной образ 不要 输出 调试 信息 到 映像 文件 中
       --nolinkview не помещать разделы в выходное изображение 不要 输出 段 信息 到 映像 文件 中

Форматы двоичного вывода:
       --bin Обычный двоичный 普通 二进制
       --m32 Motorola 32-битное шестнадцатеричное 摩托罗拉 32 位 шестнадцатеричное 码
       --i32 Intel 32-битное шестнадцатеричное 英特尔 32 位 шестнадцатеричное 码
       --vhx Байт-ориентированный шестнадцатеричный формат 定向 字节 的 Hex 格式

       --base addr Необязательно установить базовый адрес для m32, i32, m32, i32 设置 基 地址 (可选 的)

Форматы вывода, требующие отладочной информации 输出 格式 要求 的 调试 信息
       --fieldoffsets Описание структур / классов на языке ассемблера.Структуры / классы 的 汇编 描述
       --expandarrays Массивы внутри и снаружи структур расширяются.展开 内部 和 外部 结构 的 数组

Другие форматы вывода:
       --elf ELF ELF 格式
       --text Текстовая информация 文本 信息

                Флаги для текстовой информации 文本 信息 的 标志
                -v подробный 详细 信息
                -a распечатать адреса данных (для изображений, созданных с помощью отладки) 打印 数据 的 地址 信息 (得到 的 .axf 映像 文件)
                -c код дизассемблирования 汇 编码
                -d распечатать содержимое раздела данных 打印 数据 的 段 内容
                -e печатать таблицы исключений 打印 异常 表
                -g печатать отладочные таблицы 打印 调试 表
                -r распечатать информацию о перемещении 打印 重 定位 信息
                -s вывести таблицу символов 打印 符号 表
                -t вывести таблицу строк 打印 字符 表
                -y распечатать содержимое динамического сегмента 打印 动态 段 内容
                -z печатать код и информацию о размере данных 打印 代码 与 数据 的 大小 信息
  
Плечо

ARM 的 灵活 安装 IAR 的 编译 器 则只 跟随 IDE 发布 , 不 独立 IAR 安装 后 : 下面 这个 子 了 :

我们 重点 关注 arm目录 下 的 相关 内容。 其中 内容 有 很多 主要 介绍 一下 编译 器 相关 的 那些 , 首先 看下

我们 可以 手动 器 , 来 作为 命令 行。 但是 对于 IAR 还是 建议, 个人 感觉 IAR 在 设计 时 , 估计 没 考虑 用户 使用 命令 行 模式 来 独立 套件 , 因为 其 编译 套件 和 其他 好多 都 放在 了 一个 目录 中 中 , ARM 将 编译 套件 独立。 但是Компилятор, ассемблер и компоновщик также могут быть запущены из среды командной строки, если вы хотите их использовать. в качестве внешних инструментов в уже созданной проектной среде.
的 介绍 文档 主要 就是 IAR C / C ++ Development Guide Compiling and Linking》

  1. IAR 我 用 的 比较 少 , 主要 于 官方 文档。 管 方 文档 更加 详细 , 如有 疑问 直接 去 官方 文档 查看 即可! 官方 文档 目录 IAR 目录 \ arm \ doc
    1. 《Руководство по разработке на C / C ++ IAR Компиляция и компоновка》 , 文档 名为 EWARM_DevelopmentGuide.ENU.pdf
    2. 《Справочное руководство по ассемблеру IAR》 , 文档 名为 EWARM_AssemblerReference.ENU.pdf
    3. ® Catic Analysis-STAT文档 名为 EW_MisraC1998Reference.ENU.pdf
  2. 还 直接 IAR 的 IDE 的 : : 菜单 -> help

iasmarm.exe

Asse IAR 的 汇编 语言 的 编译 器。 文档 是 这么 介绍 的 : Ассемблер IAR для Arm - это мощный перемещающий макроассемблер с универсальным набором директив и операторов выражения. Ассемблер имеет встроенный препроцессор языка C и поддерживает условную сборку. 大意 就是 : Ассемблер IAR для Arm.的 说明 文档》 Справочное руководство по ассемблеру IAR , 里面 有 该 工具 的 详细 使用 说明。

  E: \ Program Files (x86) \ IAR Systems \ Embedded Workbench 8.2 \ рука \ корзина> iasmarm

    Ассемблер IAR V8.32.3.193 / W32 для ARM
    Авторские права 1999-2019 IAR Systems AB.

Использование: iasmarm {<параметры>} <исходный файл> {<параметры>}
Исходный файл: исходный файл с расширением по умолчанию: .msa, .asm или .s.

Окружающая среда: ИАСМАРМ
Опции (указанный порядок не имеет значения):
-B Распечатать отладочную информацию для макросов ассемблера
-c {DEAOM} Параметры листинга
                 D: отключить список, E: отключить раскрытие макроса
                 A: перечислить только собранную часть O: перечислить несколько строк кода
                 M: определение макроса списка
-DSYMB Эквивалент: #define SYMB 1
-DSYMB = xx Эквивалент: #define SYMB xx
-e Использовать прямой порядок байтов
-Enumber Разрешить <количество> ошибок
-f файл Расширить командную строку с помощью <файл> <.xcl>
-g Система не включает
-G Открытый стандартный ввод как источник
-i Список # включенных файлов
-Ipath Добавить путь поиска #include
-j Включить альтернативные имена регистров, операторы и мнемонику
-l файл Создать список: <файл> <.lst>
-Lpath Создает список по:  \  <.lst>
-Mab Изменить символы кавычек аргументов asm.macro,
                  где a - начало цитаты, а b - символ конца кавычки.
                  по умолчанию a == <и b ==>.-N Нет заголовка в листинге
-o файл Поместить объект в: <файл> <.o>
-Opath Поместить объект на: <путь> \ <источник> <.o>
-pnn Список страниц с nn строками на страницу (10-150)
-r Включить вывод отладчика в объекте
-S Тихая работа ассемблера
-s {+ | -} Установить чувствительность к регистру для пользовательских символов
                 -s и -s + включает чувствительность, -s- отключает.
-tn Установить интервал табуляции от 2 до 9 (по умолчанию 8)
-USYMB Эквивалентно: #undef SYMB
-ws Чтобы предупреждения генерировали код выхода 1
-wstring Отключить предупреждения
                 строка: <+ | -,> <+ | -диапазон> <, + | -диапазон>...
                 диапазон: low_warning_nr <-high_warning_nr>
                 пример: -w отключает все предупреждения
                          -w -, + 10-12, + 20 выключает все, кроме 10,11,12 и 20

-x {DI2} Создать список перекрестных ссылок
                 D: Показать все #defines, I: Показать внутреннюю таблицу
                 2: Перечень двухстрочных пробелов
--aarch64 Сгенерировать код для AArch64, аналогично --cpu_mode A64

--abi {lp64 | ilp32}
              Укажите ABI для AArch64: ilp32 или lp64.
--arm Сгенерировать код в режиме охраны, аналогично --cpu_mode arm

--cmse
              Целевой безопасный режим в CMSE (расширения безопасности ARMv8-M)
--cpu core Указать целевое ядро
                 Допустимые варианты - имена ядер, такие как Cortex-M3.
                 и названия архитектуры, такие как 7M
                 По умолчанию Cortex-M3
--cpu_mode {рука | a | thumb | t}
              Выберите режим по умолчанию для директивы CODE, ARM по умолчанию

--endian {маленький | l | большой | b}
              Укажите целевой порядок байтов
--fpu {VFPv1 | VFPv2 | VFPv3 {_D16} {_ FP16} | VFP9-S | none}
              Укажите поддержку сопроцессора целевого FPU
                 По умолчанию нет, выбирается программное обеспечение.
                 библиотека с плавающей запятой.--legacy {legacyOption}
              Создавать объектные файлы, совместимые с
              старые инструменты. Допустимые варианты:
              RVCT3.0
--no_dwarf3_cfi
              Инструкции по подавлению Dwarf 3 Call Frame Information
--no_it_verification
              Не проверяйте, что следующие инструкции
              ИТ-инструкция имеет правильный набор условий

--no_literal_pool
              Используйте MOV32 для LDR Rd, = expr (требуется ARMv7-M)
--no_path_in_file_macros
              Удаление пути из макросов __FILE__
--source_encoding {locale | utf8}
Кодировка, используемая для исходных файлов без спецификации
--suppress_vfe_header
              Не генерировать информацию заголовка VFE

--system_include_directory <путь>
              Установить каталог системного заголовка
--thumb Сгенерировать код в режиме большого пальца, аналогично --cpu_mode thumb

--version Вывести информацию о версии и выйти
  

iccarm.exe

是 IAR 的 C / C ++ 编译 器。 官方 文档 是 这么 介绍 的 : Компилятор IAR C / C ++ для Arm - это современный компилятор, который предлагает стандартные функции языков C и C ++, а также расширения, предназначенные для использования возможностей, специфичных для Arm. . Компилятор IAR C / C ++ для Arm. . \ arm \ inc \ <поставщик>

  E: \ Program Files (x86) \ IAR Systems \ Embedded Workbench 8.2 \ arm \ bin> iccarm

   Компилятор IAR ANSI C / C ++ V8.32.3.193 / W32 для ARM
   Авторские права 1999-2019 IAR Systems AB.
   Лицензия с блокировкой ПК - IAR Embedded Workbench для ARM

Доступные параметры командной строки:
--aapcs {std | vfp}
                Укажите соглашение о вызовах.
--aeabi Сгенерировать код, совместимый с aeabi
--align_sp_on_irq
                Сгенерируйте код для выравнивания SP при входе в функции __irq
--arm Сгенерировать код в режиме охраны, аналогично --cpu_mode arm
--c ++ C ++
--c89 Использовать стандарт C89
--char_is_signed
                'Обычный' символ обрабатывается как знаковый символ
--char_is_unsigned
                'простой' символ обрабатывается как символ без знака
--cmse Включить создание безопасных объектов CMSE
--cpu core Указать целевое ядро
                Допустимые варианты - имена ядер, такие как Cortex-M3.
                и названия архитектуры, такие как 7M
                Cortex-M3 по умолчанию
--cpu_mode {рука | a | thumb | t}
                Выберите режим по умолчанию для функций, рука по умолчанию
-D символ [= значение]
                Определить макрос (аналогично #define symbol [value])
--отлаживать
-r Вставить отладочную информацию в объектный файл
--dependencies = [i | m | n] [s] [lw] [b] файл | каталог | +
                Список зависимостей файлов
                   i Включить только имя файла (по умолчанию)
                   m Стиль Makefile (несколько правил)
                   n Стиль Makefile (одно правило)
                   s Не включайте зависимости системных файлов
                   l Используйте кодировку локали вместо UTF-8
                   w Используйте UTF-16 с прямым порядком байтов вместо UTF-8
                   b Используйте метку порядка байтов в выводе UTF-8
                (+: вывод такой же, как -o, только с.d расширение)
--deprecated_feature_warnings [+ | -] функция, [+ | -] функция, ...
                Включить (+) или отключить (-) предупреждения об устаревших функциях:
                   attribute_syntax Предупреждать о синтаксисе атрибута, который
                                            изменится
                   preprocessor_extensions Предупредить об использовании миграции
                                            расширения препроцессора
                   segment_pragmas Предупредить об использовании #pragma constseg /
                                            набор данных / память
--diagnostics_tables файл | каталог
                Дамп таблиц диагностических сообщений в файл
--diag_error tag, tag ,...
                Рассматривать список тегов как диагностику ошибок
--diag_remark тег, тег, ...
                Рассматривать список тегов как диагностику примечаний
--diag_suppress тег, тег, ...
                Скрыть список тегов как диагностику
--diag_warning тег, тег, ...
                Считать список тегов диагностическим предупреждением
--discard_unused_publics
                Отменить неиспользуемые общедоступные функции и переменные
--dlib_config имя | путь
                Укажите конфигурацию библиотеки DLib
--do_explicit_zero_opt_in_ named_sections
                Разрешить нулевую оптимизацию инициализации для переменных в named
                разделы / сегменты
-e Включить языковые расширения IAR C / C ++
--enable_hardware_workaround waid [, waid [...]]
                Создание аппаратного обходного пути для указанной проблемы
--enable_restrict
                Включите ключевое слово restrict
--endian {маленький | l | большой | b}
                Выберите порядок байтов, по умолчанию используется прямой порядок байтов.
--enum_is_int Заставить размер всех перечисляемых типов быть не менее 4 байтов
--error_limit limit
                Остановить после такого количества ошибок (0 = без ограничений)
-f файл Прочитать параметры командной строки из файла
--f file Прочитать параметры командной строки из файла и сообщить о зависимости
--fpu {VFPv2 | VFPv3 {_D16} {_ FP16} | VFPv4 {_sp} | VFP9-S | none}
                Укажите поддержку сопроцессора целевого FPU
                По умолчанию нет, выбирается программное обеспечение.
                библиотека с плавающей запятой.--generate_entries_without_bounds
                Создание функций для использования из неинструментированного кода
--guard_calls Использовать защитный вызов для статической инициализации функции
--header_context
                Добавляет контекст включаемого файла в диагностику
-I каталог Добавить # включить поисковый каталог
--ignore_uninstrumented_pointers
                Отключить проверку доступа по указателям из неинструментированных
                функции
-l [c | C | D | E | a | A | b | B] [N] [H] файл | каталог
                Файл списка вывода
                   c Список источников C
                   C с кодом сборки
                   D с чистым кодом сборки
                   E с непоследовательным кодом сборки
                   файл ассемблера
                   A с источником C
                   b Базовый файл ассемблера
                   B с источником C
                   N Не включать диагностику
                   H Включить исходные строки файла заголовка
--lock_regs регистры
                Запретить компилятору использовать указанные регистры (R4-R11).--macro_positions_in_diagnostics
                Используйте позиции внутри макросов в диагностике
--make_all_definitions_weak
                Сделайте все определения переменных и функций слабыми
--max_cost_constexpr_call limit
                Максимальная стоимость (количество вызовов / количество итераций цикла) при
                оценка вызова constexpr верхнего уровня
--max_depth_constexpr_call limit
                Максимальная глубина рекурсии при оценке верхнего уровня
                вызов constexpr
--mfc Включить компиляцию нескольких файлов
--misrac1998 [= arg, arg ,...]
                Включить диагностику MISRA-C 1998
                    all Включить все правила
                    требуется Включить все обязательные правила
                    i Включить правило i
                    i-j Включить правила с i по j
                    ~ i Отключить правило i
                    ~ i-j Отключить правила с i по j
--misrac2004 [= аргумент, аргумент, ...]
                Включить диагностику MISRA-C 2004
                    all Включить все правила
                    требуется Включить все обязательные правила
                    X Включить правило или главу
                    X-Y Диапазон включения
                    ~ X Отключить правило или главу
                    ~ X-Y Отключить диапазон
                  где X и Y - одно из:
                    i Все правила в главе i
                    я.j Правило i.j
--misrac_verbose
                Включить подробные сообщения MISRA C
--nonportable_path_warnings
                Включить предупреждение о несовпадении регистра в путях
--no_alignment_reduction
                Отключить уменьшение выравнивания простых функций большого пальца
--no_bom Не использовать метку порядка байтов в выводе Unicode
--no_call_frame_info
                Подавить вывод информации о кадре вызова
--no_clustering Отключить статическую кластеризацию для статических и глобальных переменных
--no_code_motion
                Отключить движение кода
--no_const_align
                Отключить оптимизацию выравнивания для констант
--no_cse Отключить удаление общих подвыражений
--no_exceptions Отключить поддержку исключений C ++
--no_fragments Не создавать фрагменты раздела
--no_inline Отключить встраивание функций
--no_literal_pool
                Сгенерируйте код, который не отправляет запрос на чтение.текст
--no_loop_align Отключить выравнивание меток в циклах (Thumb2)
--no_mem_idioms Отключить распознавание идиомы для memcpy / memset / memclr
--no_path_in_file_macros
                Удалить путь из макросов __FILE__ и __BASE_FILE__
--no_rtti Отключить поддержку информации о типах среды выполнения C ++
--no_rw_dynamic_init
                Не разрешать инициализацию C-объекта во время выполнения
--no_scheduling Отключить планирование инструкций
--no_size_constraints
                Снять ограничения на расширение кода
--no_static_destruction
                Не выдавать код для уничтожения статических переменных C ++
--no_system_include
                Не выполнять поиск в каталоге системных заголовков по умолчанию
--no_tbaa Отключить анализ псевдонимов на основе типов
--no_typedefs_in_diagnostics
                Не используйте typedef при печати типов
--no_unaligned_access
                Не создавайте невыровненный доступ
--no_uniform_attribute_syntax
                Используйте старое значение для атрибутов типа IAR перед начальным типом
--no_unroll Отключить развертывание цикла
--no_var_align Отключить оптимизацию выравнивания для переменных
--no_warnings Отключить генерацию предупреждений
--no_wrap_diagnostics
                Не переносите длинные строки в диагностические сообщения
-O [n | l | m | h | hs | hz]
                Выберите уровень оптимизации:
                   n Без оптимизации
                   l Низкая оптимизация (по умолчанию)
                   m Средняя оптимизация
                   h Высокая оптимизация
                   hz Высокая оптимизация, настройка для небольшого размера кода
                   hs Высокая оптимизация, настроенная на высокую скорость
                       (-O без аргумента) То же значение, что и -Oh
--only_stdout Использовать только стандартный вывод (без вывода в консоль на stderr)
--output файл | путь
-o файл | путь Указать объектный файл
--nding_instantiations limit
                Максимальное количество экземпляров данного шаблона в
                прогресс за раз (0 -> без ограничений)
--predef_macros файл | каталог
                Вывод предопределенных макросов
--preinclude имя файла
                Включить файл перед обычным источником
--preprocess = [c] [n] [s] файл | каталог
                Вывод препроцессора
                   c Включите комментарии
                   n Только предварительная обработка
                   s Отключить директивы #line
--public_equ symbol [= значение]
                Определить общедоступный символ ассемблера (EQU)
--relaxed_fp Включить оптимизацию с плавающей запятой, которая может повлиять на результат
--remarks Включить генерацию примечаний
--require_prototypes
                Требовать прототипы для всех вызываемых или общедоступных функций
--ropi Сгенерировать независимый от позиции код только для чтения
--runtime_checking проверка, проверка ,...
                Код инструмента для проверки выбранных проблем во время выполнения:
                   границы Проверить границы указателя
                   bounds_no_checks Отслеживает границы указателя, но не проверяет
                   div_by_zero Проверить деление на ноль
                   implicit_integer_conversion
                                       Проверять только неявное целочисленное преобразование
                   integer_conversion Проверить любое целочисленное преобразование
                   signed_overflow Проверить наличие целочисленного переполнения со знаком
                   signed_shift Проверить переполнение в подписанной смене
                   переключатель Проверить наличие необработанных случаев в переключателе
                                       заявления
                   unsigned_overflow Проверить переполнение беззнакового целого числа
                   unsigned_shift Проверить переполнение при беззнаковой смене
--rwpi Сгенерировать независимый от позиции код для чтения и записи
--rwpi_near Сгенерировать независимый от позиции код чтения-записи
--section section-name = новое имя-раздела
                Переименовать раздел
--silent Тихая работа
--source_encoding {locale | utf8}
                Кодировка, используемая для исходных файлов без спецификации
--stack_protection
                Вставьте защиту от разрушения стопки
--strict Строгие стандартные правила языка C / C ++
--system_include_dir каталог
                Установить каталог системного заголовка
--text_out кодировка
                Кодировка, используемая для файлов вывода текста
                   utf8 UTF-8
                   utf16le Little-endian UTF-16
                   utf16be с прямым порядком байтов UTF-16
                   языковой стандарт Кодировка для конкретного языкового стандарта
--thumb Сгенерировать код в режиме большого пальца, аналогично --cpu_mode thumb
--uniform_attribute_syntax
                Тот же синтаксис для атрибутов типа IAR, что и для const / volatile
--use_c ++ _ встроенный
                Использовать встроенную семантику C ++ в режиме C
--use_paths_as_written
                Используйте пути, указанные в отладочной информации
                (обычно используются абсолютные пути)
--use_unix_directory_separators
                Используйте косую черту в путях в отладочной информации
--utf8_text_in Файлы ввода текста без исходного текста без спецификации используют кодировку UTF-8
--vectorize Выполнить автовекторизацию
--version Вывести информацию о версии и выйти
--vla Разрешить массивы переменной длины
--warnings_affect_exit_code
                Предупреждения влияют на код выхода
--warnings_are_errors
                Все предупреждения - ошибки
--warn_about_c_style_casts
                Предупреждать об использовании приведений в стиле C в EC ++ / C ++
  

IDE 中 有 两个 工具 可 将 应用 程序 文件 转换 中间 文件 目标 文件 IAR C / C ++ 编译 器 IAR 汇编 器 都 行业 标准 ELF 中 可 定位 目标 文件 , 包括DWARF 调试 信息 的 格式。 下 图 显示 了 编译

ilinkarm.exe

IAR 的 连接 器。 官方 文档 是 这么 介绍 的 : IAR ILINK Linker for Arm - это мощный и гибкий программный инструмент для использования при разработке приложений для встроенных контроллеров. Он одинаково хорошо подходит для связывания небольших однофайловых программ на абсолютном ассемблере, а также для связывания больших, перемещаемых входных данных, многомодульных программ, программ C / C ++ или смешанных программ C / C ++ и ассемблера. 大意 就是 IAR ILINK Linker for Arm 是 一款 功能 强大 , 灵活 的 软件 工具 , 可 控制器 应用 程序 的 开发。 它 同样 链接 小型 , 单 文件 , 绝对 , 因为 链接大 可 重 输入 C / C ++ 或 混合 C / C ++ 和 汇编 程序。
ilinkarm 使用 生成 行业 的 ELF 和 DWARF 作为 对象 格式 文件。 .\ arm \ config 目录 下 , 包含 了 针对 各 平台 的 连接 器 使用 的 配置 文件。

  E: \ Program Files (x86) \ IAR Systems \ Embedded Workbench 8.2 \ arm \ bin> ilinkarm

   Линкер IAR ELF V8.32.3.193 / W32 для ARM
   Авторские права 2007-2019 IAR Systems AB.

Доступные параметры командной строки:
--advanced_heap Использовать расширенный менеджер кучи.
--basic_heap Использовать базовый менеджер кучи
--BE32 Использовать режим прямого байта старого типа.
--BE8 Использовать байтовый инвариантный режим.
--bounds_table_size number_of_records [: number_of_buckets] | (количество_байт)
                Укажите размер таблиц проверки границ
--call_graph файл | каталог
                Создание файла графа вызовов XML
--config файл Прочитать конфигурацию компоновщика из файла
--config_def symbol = значение
                Определите символ конфигурации
--config_search каталог
                Найдите файлы конфигурации в каталоге
--cpp_init_routine символ
                Укажите имя процедуры динамической инициализации C ++
--cpu core Указать целевое ядро
                Допустимые варианты - имена ядер, такие как Cortex-M3.
                и названия архитектуры, такие как 7M
                по умолчанию извлекается из объектов
--debug_heap Использовать кучу с проверками времени выполнения
--default_to_complex_ranges
                Сделайте "сложные диапазоны" по умолчанию в директивах инициализации
--define_symbol symbol = значение
                Определить абсолютный символ
--dependencies = [i | m | n] [s] [lw] [b] файл | каталог | +
                Список зависимостей файлов
                   i Включить только имя файла (по умолчанию)
                   m Стиль Makefile (несколько правил)
                   n Стиль Makefile (одно правило)
                   s Не включайте зависимости системных файлов
                   l Используйте кодировку локали вместо UTF-8
                   w Используйте UTF-16 с прямым порядком байтов вместо UTF-8
                   b Используйте метку порядка байтов в выводе UTF-8
                (+: вывод такой же, как -o, только с.d расширение)
--diagnostics_tables файл | каталог
                Дамп таблиц диагностических сообщений в файл
--diag_error тег, тег, ...
                Рассматривать список тегов как диагностику ошибок
--diag_remark тег, тег, ...
                Рассматривать список тегов как диагностику примечаний
--diag_suppress тег, тег, ...
                Скрыть список тегов как диагностику
--diag_warning тег, тег, ...
                Считать список тегов диагностическим предупреждением
--do_segment_pad
                Дополнить сегменты до 4-байтового выравнивания
--enable_hardware_workaround waid [, waid [...]]
                Создание аппаратного обходного пути для указанной проблемы
--enable_stack_usage
                Включить анализ использования стека
- символ входа Установить точку входа в программу
--error_limit limit
                Остановить после такого количества ошибок (0 = без ограничений)
--exception_tables действие
                Создавать таблицы исключений для модулей, в которых они отсутствуют
                  nocreate Не создавать записи (по умолчанию)
                  unwind Создать записи для размотки
                  cantunwind Создание записей существительного ветра
--export_builtin_config файл | каталог
                Экспорт встроенной конфигурации
--extra_init процедура
                Вызов дополнительной процедуры инициализации, если она определена
-f файл Прочитать параметры командной строки из файла
--f file Прочитать параметры командной строки из файла и сообщить о зависимости
--force_exceptions
                Всегда включать код исключения
--force_output Создавать выходной файл, несмотря на ошибки
--fpu {VFPv1 | VFPv2 | VFPv3 {_D16} {_ FP16} | VFP9-S | none}
                Укажите поддержку сопроцессора целевого FPU
                По умолчанию извлекается из объектов.--ignore_uninstrumented_pointers
                Отключить проверку доступа через указатели в памяти с помощью
                без границ
--image_input файл [, символ [, раздел [, выравнивание]]]
                Поместите файл изображения в раздел
--import_cmse_lib_in файл
                Прочтите предыдущую версию библиотеки импорта для создания незащищенного образа
--import_cmse_lib_out файл | каталог
                Создание библиотеки импорта для создания незащищенного образа
--inline Пытаться встроить небольшие функции.
--keep symbol Требовать глобальный символ
- тема журнала, тема ,...
                Сделать вывод журнала для выбранных тем
                   call_graph График вызовов с использованием стека
                   crt_routine_selection
                                     Выбор рутинной реализации CRT
                   demangle Demangle символы в выводе журнала
                   fragment_info Дополнительная информация для разделов --log
                   инициализация Решения по инициализации
                   inlining Встраивание малых функций
                   библиотеки Автоматический выбор библиотеки
                   Результаты слияния --merge_duplicate_sections
                   модули Выбор модуля
                   перенаправляет Перенаправленные символы
                   разделы Выбор фрагмента раздела
                   unused_fragments Неиспользованные фрагменты раздела
                   виниры Статистика шпона
--log_file file Указать файл для вывода журнала
--mangled_names_in_messages
                Включать искаженные имена символов в диагностику
--manual_dynamic_initialization
                Не выполнять динамическую инициализацию при запуске
--map файл | каталог
                Создать файл списка компоновщика
--merge_duplicate_sections
                Объединить эквивалентные разделы только для чтения
--misrac1998 [= arg, arg ,...]
                Включить диагностику MISRA-C 1998
                    all Включить все правила
                    требуется Включить все обязательные правила
                    i Включить правило i
                    i-j Включить правила с i по j
                    ~ i Отключить правило i
                    ~ i-j Отключить правила с i по j
--misrac2004 [= аргумент, аргумент, ...]
                Включить диагностику MISRA-C 2004
                    all Включить все правила
                    требуется Включить все обязательные правила
                    X Включить правило или главу
                    X-Y Диапазон включения
                    ~ X Отключить правило или главу
                    ~ X-Y Отключить диапазон
                  где X и Y - одно из:
                    i Все правила в главе i
                    я.j Правило i.j
--misrac_verbose
                Включить подробные сообщения MISRA C
--no_bom Не использовать метку порядка байтов в выводе Unicode
--no_dynamic_rtti_elimination
                Отключить динамическое устранение rtti
--no_entry У этой программы нет точки входа
--no_exceptions Сообщать об ошибке, если используются исключения
--no_fragments Всегда связывать целые разделы
--no_free_heap Использовать диспетчер кучи без «бесплатно»
--no_inline func, func, ...
                Не вставляйте ни одну из указанных функций
--no_library_search
                Отключить автоматический поиск библиотеки времени выполнения
--no_literal_pool
                Не создавайте буквальный пул в памяти кода
--no_locals Не включать локальные символы в выходную таблицу символов
--no_range_reservations
                Не резервируйте диапазоны адресов для абсолютных символов
--no_remove Не удалять неиспользуемые разделы
--no_vfe Отключить устранение виртуальных функций
--no_warnings Отключить генерацию предупреждений
--no_wrap_diagnostics
                Не переносите длинные строки в диагностические сообщения
--only_stdout Использовать только стандартный вывод (без вывода в консоль на stderr)
--выходной файл
-o file Указать выходной файл
--pi_veneers Сгенерировать виниры, не зависящие от положения.--place_holder symbol [, размер [, раздел [, выравнивание]]]
                Зарезервируйте место в ПЗУ для дальнейшего использования
--preconfig файл
                Прочитать перед обычным файлом конфигурации компоновщика
--printf_multibytes
                Включить многобайтовую поддержку в printf и друзьях
--redirect orig = замена
                Символ перенаправления ссылается на символ замены
--remarks Включить генерацию примечаний
--scanf_multibytes
                Включить многобайтовую поддержку в scanf & friends
- поиск в каталоге
-L каталог Искать объектные и библиотечные файлы в каталоге
--semihosting [= iar_breakpoint]
                Ссылка на интерфейс отладки.Укажите интерфейс для отмены значения по умолчанию.
--silent Тихая работа
--stack_usage_control файл
                Чтение файла управления использованием стека
--strip Не включать отладочную информацию
--text_out кодировка
                Кодировка, используемая для файлов вывода текста
                   utf8 UTF-8
                   utf16le Little-endian UTF-16
                   utf16be с прямым порядком байтов UTF-16
                   языковой стандарт Кодировка для конкретного языкового стандарта
--threaded_lib Настроить библиотеку времени выполнения для использования с потоками
--timezone_lib Включить поддержку часового пояса и перехода на летнее время
--treat_rvct_modules_as_softfp
                связать softfp версии математической функции для модулей
                скомпилированы с помощью RVCT, даже если они построены с
                соглашение о вызовах vfp
--use_full_std_template_names
                Не используйте короткие имена для стандартных шаблонов C ++
--use_optimized_variants no | auto | small | fast
                Используйте оптимизированные варианты функций библиотеки DLIB
                  нет Не использовать редиректы для использования оптимизированных вариантов
                  auto Использовать перенаправления на основе атрибутов в объектных файлах
                         (по умолчанию)
                  маленький Всегда используйте маленький вариант, если он есть
                  быстро Всегда используйте быстрый вариант, если он доступен
--utf8_text_in Файлы ввода текста без исходного текста без спецификации используют кодировку UTF-8
--version Вывести информацию о версии и выйти
--vfe = [принудительно] Выполнить удаление виртуальной функции
                  принудительно Принудительное использование VFE для всех модулей
                              с информацией VFE.--warnings_affect_exit_code
                Предупреждения влияют на код выхода
--warnings_are_errors
                Все предупреждения - ошибки
--whole_archive архив
                Свяжите все модули в архиве
  

IAR ILINK 链接 器 (ilinkarm.exe) 用于 构建 最终 应用 程序。 通常 , 链接 器 需要 以下 信息 作为 输入:

  • 目标 文件 , 可能 还有 某些 库
  • 程序 开始 标签 (默认 设置)
  • 链接 器 配置 文件 , 目标 系统 内存 中 代码 和 数据



IAR ILINK 器 ELF 格式 的 绝对 目标 文件 , 其中 包含 可执行 镜像。 链接 可以 使用 的 绝对 可执行 映像

  • IAR C-SPY 器 或 任何 兼容 的 外部 调试 器 读取 ELF 和 DWARF。
  • flash / PROM 编程 flash / PROM。 在 使用 ielftool 90中 的-字节 record 为 的 Motorola 32-bit S-record 格式 Intel Hex-32 格式。

iarchive.exe

工具 , ARM 的 armar 和 GCC 的 ar 。 用于 创建 操作 几个 ELF 目标 文件 的 (存档)。 文件 包含 定位模块 都 可以 由 链接 器 独立 使用。 直接 指定 给 链接 器 的 对象 模块 相比 , 只有 需要 包含 中 的 每个 模块。

  E: \ Program Files (x86) \ IAR Systems \ Embedded Workbench 8.2 \ arm \ bin> iarchive

   Инструмент архивации IAR V10.4.14.1149
   Авторское право 2008-2019 IAR Systems AB.

Использование: iarchive [команда] архив obj1 ... objN
                iarchive [команда] obj1 ... objN -o архив
                iarchive [команда] архив

Доступные параметры командной строки:
--create Создать новый архив
--удалять
-d Удалить модуль (ы) из архива
--экстракт
-x Извлечь модуль (ы) из архива
-f файл Прочитать параметры командной строки из файла
--f file Прочитать параметры командной строки из файла и сообщить о зависимости
--no_bom Не использовать метку порядка байтов в выводе Unicode
- выходной архив
-o archive Имя архивного файла
- заменить
-r Заменить или добавить модуль (ы) в архив
--symbols Список символьных таблиц архива
--text_out кодировка
                Кодировка, используемая для файлов вывода текста
                   utf8 UTF-8
                   utf16le Little-endian UTF-16
                   utf16be с прямым порядком байтов UTF-16
                   языковой стандарт Кодировка для конкретного языкового стандарта
--toc
-t Вывести список содержимого архива
--utf8_text_in Файлы ввода текста без исходного текста без спецификации используют кодировку UTF-8
--подробный
-V подробная операция
--version Вывести информацию о версии и выйти
--vtoc Вывести список содержимого архива (подробный)
  

使用 示例 :

  1. 使用 源 对象 文件 module1.o module.2.o module3.o 创建 了 一个 名为 mylibrary.a 的 库 文件 : iarchive mylibrary.a module1.o module2.o module3.o
  2. 列出 mylibrary .a 中 的 内容 : iarchive --toc mylibrary.a
  3. Этот пример заменяет module3.o в библиотеке содержимым из файла module3.o и добавляет module4.o в mylibrary.a: iarchive --replace mylibrary.a module3.o module4.o

ielftool.exe

ARM ELF 文件 工具 , ARM 的 fromelf 和 GCC 的 elfedit 对 ELF 可执行 映像 ((, 填充 , 校验 和)) .\ arm \ src \ elfutils 下 提供 了 ielftool 源 代码 (Microsoft VisualStudio 项目)。 如果 对 如何 生成 校验 和 或 转换 特定 要求 , 则 可以 地 修改 源 代码。

  E: \ Program Files (x86) \ IAR Systems \ Embedded Workbench 8.2 \ arm \ bin> iarchive

   Инструмент архивации IAR V10.4.14.1149
   Авторское право 2008-2019 IAR Systems AB.

Использование: iarchive [команда] архив obj1 ... objN
                iarchive [команда] obj1 ... objN -o архив
                iarchive [команда] архив

Доступные параметры командной строки:
--create Создать новый архив
--удалять
-d Удалить модуль (ы) из архива
--экстракт
-x Извлечь модуль (ы) из архива
-f файл Прочитать параметры командной строки из файла
--f file Прочитать параметры командной строки из файла и сообщить о зависимости
--no_bom Не использовать метку порядка байтов в выводе Unicode
- выходной архив
-o archive Имя архивного файла
- заменить
-r Заменить или добавить модуль (ы) в архив
--symbols Список символьных таблиц архива
--text_out кодировка
                Кодировка, используемая для файлов вывода текста
                   utf8 UTF-8
                   utf16le Little-endian UTF-16
                   utf16be с прямым порядком байтов UTF-16
                   языковой стандарт Кодировка для конкретного языкового стандарта
--toc
-t Вывести список содержимого архива
--utf8_text_in Файлы ввода текста без исходного текста без спецификации используют кодировку UTF-8
--подробный
-V подробная операция
--version Вывести информацию о версии и выйти
--vtoc Вывести список содержимого архива (подробный)

E: \ Program Files (x86) \ IAR Systems \ Embedded Workbench 8.2 \ рука \ bin> ielftool

   Инструмент IAR ELF, версия 10.4.14.1149 [СОСТАВЛЯЕТСЯ в IAR]
   Авторские права 2007-2019 IAR Systems AB.

Использование: ielftool входной_файл выходной_файл

Доступные параметры командной строки:
--bin Сохранить как исходный двоичный файл
--checksum sym: size, algo [: [1 | 2] [a | m | z] [r] [R] [o] [x] [i | p] [W | L]] [, начало]
           ; диапазон [; диапазон ...]
                Сгенерировать контрольную сумму
                   символ контрольной суммы
                   size Длина символа в байтах
                   алгоритм Алгоритм: sum, sum8wide, sum32, crc16, crc32
                             crc64iso, crc64ecma или crc = poly
                   1 | 2 Дополнение: 1 или 2
                   a | m | z Обратный порядок следования битов для:
                               только входные байты: a
                               входные байты и окончательная контрольная сумма: m
                               только окончательная контрольная сумма: z
                   o Вывести спецификацию модели Rocksoft
                   r Обратный порядок байтов в каждом слове
                   R Перемещение диапазона (ов) в обратном порядке
                   x Переключить порядок байтов контрольной суммы
                   i | p Обычно используется начальное значение: i
                             Префикс входных данных с начальным значением: p
                   W | L Используйте контрольную сумму длиной 2 байта: W
                             Используйте контрольную сумму длиной 4 байта: L
                   start Начальное значение контрольной суммы (по умолчанию 0)
                   range Do контрольная сумма байтов в диапазоне
--fill [v;] шаблон; диапазон [ 

Начало работы с STM: STM32F769 Discovery

Начало работы с STM: STM32F769 Discovery

Плата обнаружения STM32F769 (STM32F769I-DISC1).

В следующей статье объясняются все необходимые шаги для создания приложения Embedded Wizard UI, подходящего для платы STM32F769 Discovery. Пожалуйста, внимательно и шаг за шагом следуйте этим инструкциям, чтобы убедиться, что вы все настроите и заработаете на своей цели. Если вы не знакомы со встроенным мастером, сначала прочтите краткое руководство, чтобы понять принципы работы встроенного мастера и рабочий процесс разработки графического интерфейса.

Прежде всего, вам понадобятся следующие аппаратные компоненты:

★ USB-кабель для подключения платы к ПК

Убедитесь, что у вас установлены следующие пакеты программного обеспечения:

★ Embedded Wizard Studio Free или Embedded Wizard Studio Pro

★ Пакет платформы Embedded Wizard STM32

★ Встроенная среда сборки мастера для STM32F769 Discovery

СОВЕТ

Если вы хотите использовать бесплатную версию Embedded Wizard Studio и пакет платформы STM32, зарегистрируйтесь на нашем веб-сайте и выберите целевой STM32F769 Discovery.Затем вы можете загрузить указанные выше пакеты программного обеспечения.

Все клиенты, у которых есть лицензия Embedded Wizard, могут посетить наш центр загрузки, чтобы получить указанные выше пакеты программного обеспечения.

★ Шаг 1. Установите последнюю версию Embedded Wizard Studio.

★ Шаг 2: Установите пакет платформы Embedded Wizard STM32.

★ Шаг 3: Загрузите STM32CubeProgrammer и установите его. Проверьте подключение ПК к плате Discovery и правильную установку драйверов USB: Подключите плату Discovery к ПК через USB (обязательно используйте USB-разъем ST-LINK) и запустите ранее установленный STM32CubeProgrammer.Нажмите зеленую кнопку и убедитесь, что соединение установлено успешно. Наконец, закройте утилиту STM32CubeProgrammer.

★ Шаг 4. Распакуйте предоставленную среду сборки встроенного мастера для обнаружения STM32F769 в локальную файловую систему (например, C: \ STM32 \ STM32F769-Discovery).

★ Шаг 5: Возьмите текстовый редактор и откройте файл StartGccBuildEnvironment.bat, который вы найдете в корневом каталоге среды сборки. В начале файла необходимо указать следующую переменную среды в качестве пути установки утилиты STM32CubeProgrammer:

• STM32CubeProgrammer_Path — Абсолютный путь к вашей установленной утилите STM32CubeProgrammer (шаг 3).

Если вы просто хотите запустить наши демонстрации графического интерфейса пользователя на вашей плате STM32F769 Discovery без создания различных примеров, вы можете просто прошить двоичный файл демонстрации Embedded Wizard Master.

The Embedded Wizard Master Demo объединяет множество примеров в одном огромном демонстрационном приложении. Его можно использовать для презентаций и витрин. Каждое демонстрационное приложение можно активировать из общего главного меню. Чтобы вернуться из демонстрационного приложения в главное меню, небольшая кнопка «Домой» появляется поверх каждой демонстрации.Кроме того, Master Demo содержит режим автоматической демонстрации, в котором одно демонстрационное приложение отображается за другим. Автодемонстрация запускается автоматически и останавливается, как только пользователь касается экрана.

Чтобы прошить двоичный файл на целевом компьютере, выполните следующие действия:

★ Подключите макетную плату к ПК через USB (обязательно используйте USB-разъем ST-LINK).

★ Возьмите текстовый редактор и откройте файл FlashMasterDemo.bat, который вы найдете в подкаталоге \ MasterDemo в предоставленной среде сборки.В начале файла необходимо указать следующую переменную среды в качестве пути установки утилиты STM32CubeProgrammer:

• STM32CubeProgrammer_Path — Абсолютный путь установленной у вас утилиты STM32CubeProgrammer (шаг 3 выше).

★ Запустите командный файл FlashMasterDemo.bat: появится окно консоли, и программа flash загрузит двоичный файл Master Demo.

‘Master Demo’, работающая на плате STM32F769 Discovery.

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

• StartGccBuildEnvironment.bat — этот файл сценария предназначен для запуска командной строки Windows для создания приложений с графическим интерфейсом пользователя для целевого объекта. Не забудьте указать путь к установленной у вас утилите STM32CubeProgrammer.

• \ Application — эта папка содержит готовые к использованию проекты для компиляции и связывания приложения пользовательского интерфейса, созданного Embedded Wizard. Они используются для всех предоставленных примеров, и их можно использовать для создания ваших собственных приложений пользовательского интерфейса.

• \ GeneratedCode — эта папка используется для получения сгенерированного кода из проекта пользовательского интерфейса встроенного мастера. Все шаблоны проектов создают приложение пользовательского интерфейса из этой папки. Вы можете создать свой собственный проект пользовательского интерфейса и сгенерировать код в подкаталоге \ GeneratedCode без необходимости адаптации проекта.

• \ Project — эта папка содержит подготовленные проекты для GCC (make), IAR Embedded Workbench, Keil MDK-ARM и STM32CubeIDE.

• \ Source — эта папка содержит файлы main.c и ewmain.c. Там вы найдете инициализацию системы и основной цикл для управления приложением Embedded Wizard GUI. Файл ewconfig.h содержит общие параметры конфигурации для целевой системы, такие как диапазоны памяти и параметры отображения, а также параметры конфигурации для встроенного графического ядра мастера и среды выполнения. Кроме того, эта папка содержит файл конфигурации для FreeRTOS и C / H-файлы драйвера устройства, используемые в примере DeviceIntegration.

• \ Примеры — Эта папка содержит набор демонстрационных приложений.Каждый пример хранится в отдельной папке, содержащей весь проект пользовательского интерфейса Embedded Wizard. Каждый проект содержит необходимые настройки профиля для цели STM32F769. Предоставляются следующие образцы:

• \ HelloWorld — очень простой проект, который полезен в качестве отправной точки и для проверки правильности работы всей цепочки инструментов, вашей установки и вашей платы.

• \ ColorFormats — этот проект демонстрирует, что каждое приложение пользовательского интерфейса может быть создано для разных цветовых форматов: RGBA8888, RGB888, RGBA4444, RGB565, Index8 и LumA44.

• \ ScreenOrientation — Эта демонстрация показывает, что ориентация приложения пользовательского интерфейса не зависит от физической ориентации дисплея.

• \ DeviceIntegration — в этом примере показана интеграция устройств в приложение пользовательского интерфейса и рассматриваются типичные вопросы: как запустить определенное действие над целью? Как получить данные с устройства?

• \ GraphicsAccelerator — Это приложение демонстрирует графическую производительность аппаратного графического ускорителя DMA2D.Наборы основных операций рисования выполняются постоянно и непрерывно, при этом пользователь может включать / выключать аппаратный ускоритель.

• \ BezierClock — пример приложения BezierClock реализует модные цифровые часы и таймер с анимированными цифрами. Приложение использует векторную графику для динамической визуализации различных цифр для часов и таймера. Переход от одной цифры к другой осуществляется перемещением векторных точек для получения плавной анимации перехода.

• \ BrickGame — Пример приложения BrickGame реализует классическую игру «ракетка и мяч».В игре в верхней части экрана расположено несколько рядов кирпичей. Мяч путешествует по экрану, отскакивая от верхней и боковых стенок экрана. При ударе по кирпичу мяч отскакивает, и кирпич разрушается. У игрока есть подвижная ракетка, которая подбрасывает мяч вверх, удерживая его в игре.

• \ ChartsDemo — Это приложение демонстрирует возможности и использование классов диаграмм LineChart, BarChart и PieChart. Внешний вид каждой диаграммы можно легко настроить, используя соответствующие свойства.Кроме того, в этой демонстрации показано использование рамки для управления прокручиваемым содержимым.

• \ ClimateCabinet — Демонстрационная версия ClimateCabinet демонстрирует реализацию панели управления для шкафа климатических испытаний. Пользователь может определить время нагрева, номинальную температуру и влажность, время выдержки и время окончательного охлаждения.

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

• \ PaperCutter — В этой демонстрации демонстрируется реализация бумагорезательной машины, где пользователь может определять нумерацию страниц и формат бумаги, а также скорость резки и количество листов. Приложение содержит множество прямоугольных эффектов и эффектов плавного появления / затухания для динамического изменения макета экрана.

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

• \ SmartThermostat — демонстрационное приложение SmartThermostat демонстрирует реализацию необычного вращающегося регулятора температуры для регулировки и отображения номинальной и фактической температуры.

• \ CleaningMachine — Эта демонстрация демонстрирует реализацию стиральной машины с парой причудливых виджетов с прокручиваемым списком для выбора программы и параметров стирки. Особенностью этого примера приложения является эффект увеличения элементов списка по центру и эффекты плавного появления / исчезновения.

• \ WaveformGenerator — это демонстрационное приложение WaveformGenerator объединяет формы сигналов с разными амплитудами и частотами. Реализация показывает использование векторной графики для рисования кривой на основе списка координат.

• \ MasterDemo — Эта папка содержит двоичный файл приложения Embedded Wizard Master Demo и файл сценария для прошивки демо на вашей цели. Мастер-демонстрация объединяет множество примеров в одном огромном демонстрационном приложении. Его можно использовать для презентаций и витрин.

• \ PlatformPackage — Эта папка содержит необходимые исходные коды и / или библиотеки пакета платформы STM32: несколько графических движков для различных цветовых форматов (RGBA8888, RGB888, RGBA4444, RGB565, Index8 и LumA44) и среды выполнения (в подкаталог \ RTE).

• \ TargetSpecific — эта папка содержит все файлы конфигурации и исходные коды конкретных платформ. Различные файлы ew_bsp_xxx реализуют мост между приложением Embedded Wizard UI и базовым пакетом поддержки платы (аппаратные драйверы STM32) для доступа к дисплею, графическому ускорителю, последовательному интерфейсу и часам.

• \ ThirdParty — эта папка содержит сторонние исходные коды и инструменты:

• \ gcc-arm-none-eabi — Эта папка содержит подмножество встроенной инструментальной цепочки GCC ARM для компиляции примеров.

• \ Make — эта папка содержит инструмент make для создания всего приложения с графическим интерфейсом пользователя через командную строку.

• \ STM32Cube_FW_F7 — Эта папка содержит необходимое подмножество встроенного программного обеспечения STM32CubeF7 для серии STM32F7, используемого для приложений пользовательского интерфейса Embedded Wizard (HAL, BSP, драйверы, FreeRTOS).

Для первого запуска вашей системы мы рекомендуем использовать пример HelloWorld:

Пример «HelloWorld» в Embedded Wizard Studio.

Для создания исходного кода этого примера приложения необходимы следующие шаги:

★ Перейдите в каталог \ Примеры \ HelloWorld.

★ Откройте файл проекта HelloWorld.ewp с помощью ранее установленной Embedded Wizard Studio. Весь проект хорошо документирован.Вы можете запустить приложение пользовательского интерфейса в Prototyper, нажав Ctrl + F5.

★ Чтобы запустить генератор кода, выберите пункты меню или просто нажмите F8. Embedded Wizard Studio теперь генерирует исходные файлы примера проекта в каталог \ Application \ GeneratedCode.

Следующие шаги необходимы для создания и прошивки примера приложения Embedded Wizard UI с использованием встроенного набора инструментов GCC ARM:

★ Перейдите на верхний уровень среды сборки.

★ Откройте StartGccBuildEnvironment.bat — в результате должно открыться окно командной строки Windows. В случае появления сообщений об ошибках отредактируйте файл и дважды проверьте настройки пути.

★ Теперь приступим к компиляции, компоновке и прошивке:

Если все работает, как ожидалось, приложение должно быть собрано и прошито на целевой STM32F769.

Пример «HelloWorld», запущенный на плате обнаружения STM32F769.

Все остальные примеры можно создать таким же образом: просто откройте нужный пример с помощью Embedded Wizard Studio, сгенерируйте код и перестройте все приложение, просто используя:

Чтобы создать собственный проект пользовательского интерфейса, подходящий для цели STM32F769, вы можете создать новый проект и выбрать шаблон проекта STM32F769 Discovery:

В результате вы получаете новый проект Embedded Wizard, который содержит необходимые атрибуты профиля, подходящие для платы обнаружения STM32F769:

Для вашей цели важны следующие настройки профиля:

★ Атрибут PlatformPackage должен указывать на установленный пакет платформы STM32.

★ Атрибут ScreenSize должен соответствовать размеру дисплея платы обнаружения STM32F769.

★ Для атрибутов ModeOfBitmapResources и ModeOfStringConstants можно установить значение DirectAccess в случае, если ресурсы должны быть взяты непосредственно из флэш-памяти. По умолчанию для этих атрибутов установлено значение «Сжатый».

★ Атрибут OutputDirectory должен указывать на каталог \ Application \ GeneratedCode в вашей среде сборки. Используя этот шаблон, будет очень легко создать проект пользовательского интерфейса для вашей цели.

★ Атрибут CleanOutputDirectories должен иметь значение true, чтобы гарантировать, что неиспользуемый исходный код в выходном каталоге \ Application \ GeneratedCode будет удален.

★ Атрибут PostProcess должен ссылаться на \ Application \ Project \ EWARM \ EWARM_ew_post_process.cmd, если вы работаете с IAR Embedded Workbench, или на \ Application \ Project \ MDK-ARM \ MDK-ARM_ew_post_process.cmd, если вы работаете с Keil MDK- ARM или в \ Application \ Project \ STM32CubeIDE \ STM32F769-Discovery \ STM32CubeIDE_ew_post_process.cmd, если вы работаете с STM32CubeIDE. В случае встроенного инструментария GCC ARM оставьте поле пустым

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

После создания кода выполните следующие действия, чтобы создать собственное приложение пользовательского интерфейса:

★ Запустите командный файл StartGccBuildEnvironment.bat. Опять же, должно открыться окно командной строки Windows.

★ Начать компиляцию, компоновку и прошивку:

Большинство настроек проекта берутся непосредственно из сгенерированного кода, например формат цвета или ориентация экрана.Непосредственно в Makefile можно настроить только несколько дополнительных параметров, например использование внешней флэш-памяти или использование операционной системы FreeRTOS.

Чтобы получать сообщения об ошибках или отображать простые сообщения отладки или трассировки из вашего пользовательского интерфейса Embedded Wizard, следует использовать последовательный терминал, такой как «Putty» или «TeraTerm».

★ Как только вы подключите целевой STM32F769 к ПК через USB, виртуальный COM-порт STMicroelectronics STLink (COMx) появится в списке ваших системных устройств.Откройте диспетчер устройств, чтобы узнать номер установленного COM-порта.

★ Теперь вы можете открыть приложение терминала и подключить его через COMx со следующими настройками: 115200-8-N-1

Это терминальное соединение может использоваться для всех операторов трассировки из ваших UI-приложений Embedded Wizard или для всех отладочных сообщений из вашего кода C.

Если вы хотите использовать IAR Embedded Workbench вместо встроенного набора инструментов GCC ARM, следуйте этим инструкциям:

Подкаталог \ Application \ Project \ EWARM содержит проект шаблона, который обычно используется для всех предоставленных примеров Embedded Wizard.Все примеры Embedded Wizard сохранят сгенерированный код в папке common / Application / GeneratedCode.

Сгенерированный код примера Embedded Wizard автоматически импортируется в проект IAR Embedded Workbench с использованием механизма Project Connection.

Чтобы установить этот автоматический импорт проекта, необходимо добавить пост-процесс в настройки профиля в Embedded Wizard Studio:

★ Откройте нужный пример проекта встроенного мастера.

★ Выберите Профиль и установите для файла атрибут PostProcess.. \ .. \ Application \ Project \ EWARM \ EWARM_ew_post_process.cmd.

После генерации кода Embedded Wizard установленный пост-процесс сгенерирует файл ewfiles.ipcf, который управляет импортом в проект IAR Embedded Workbench.

После возврата в IAR Embedded Workbench последний сгенерированный код и подходящий пакет платформы Embedded Wizard будут импортированы в проект IAR Embedded Workbench (в зависимости от цветового формата и ориентации экрана, выбранных в профиле встроенного мастера).

Если цветовой формат или ориентация экрана были изменены, выполните полную перестройку проекта IAR Embedded Workbench.

Если вы хотите использовать набор инструментов Keil MDK-ARM вместо встроенного набора инструментов GCC ARM, следуйте этим инструкциям:

Подкаталог \ Application \ Project \ MDK-ARM содержит проект шаблона, который обычно используется для всех предоставленных примеров Embedded Wizard. Все примеры Embedded Wizard сохранят сгенерированный код в папке common / Application / GeneratedCode.

Сгенерированный код примера Embedded Wizard автоматически импортируется в проект Keil MDK-ARM с использованием механизма CMSIS PACK.

Для установки этого автоматического импорта проекта необходимы следующие шаги:

★ Установите Tara.Embedded_Wizard_Launcher.x.x.x.pack двойным щелчком. Вы найдете файл в подкаталоге \ Application \ Project \ MDK-ARM.

★ Откройте нужный пример проекта встроенного мастера.

★ Выберите Профиль и установите для файла атрибут PostProcess.. \ .. \ Application \ Project \ MDK-ARM \ MDK-ARM_ew_post_process.cmd.

После генерации кода Embedded Wizard установленный пост-процесс сгенерирует файл ewfiles.gpdsc, который управляет импортом проекта Keil MDK-ARM.

В Keil MDK-ARM появляется диалог: «Для текущего проекта новый сгенерированный код доступен для импорта». После подтверждения последний сгенерированный код и подходящий пакет платформы встроенного мастера будут импортированы в проект Keil MDK-ARM (в зависимости от цветового формата и ориентации экрана, выбранных в профиле встроенного мастера).

Если цветовой формат или ориентация экрана были изменены, выполните полную перестройку проекта Keil MDK-ARM.

Если вы хотите использовать цепочку инструментов STM32CubeIDE вместо встроенной цепочки инструментов GCC ARM, следуйте этим инструкциям:

Подкаталог \ Application \ Project \ STM32CubeIDE содержит проект шаблона, который обычно используется для всех предоставленных примеров Embedded Wizard. Все примеры Embedded Wizard сохранят сгенерированный код в папке common / Application / GeneratedCode.

Для установки этого автоматического импорта проекта необходимы следующие шаги:

★ Откройте нужный пример проекта встроенного мастера.

★ Выберите Профиль и установите атрибут PostProcess для файла .. \ .. \ Application \ Project \ STM32CubeIDE \ STM32F769-Discovery \ STM32CubeIDE_ew_post_process.cmd.

После генерации кода Embedded Wizard установленный пост-процесс адаптирует XML-файл .cproject. Все необходимые библиотеки и пути включения (в зависимости от формата цвета и поворота экрана) будут установлены автоматически.

Данный пример STM32CubeIDE в \ Application \ STM32CubeIDE содержит рабочую область, которая имеет все адаптации для проекта Embedded Wizard. Для использования в STM32CubeIDE выполните следующие шаги:

★ Откройте STM32CubeIDE и выберите каталог \ Application \ Project \ STM32CubeIDE в качестве каталога рабочей области.

★ Чтобы импортировать проект C, выберите пункт меню и выберите «Общие — существующие проекты в рабочую область» и нажмите «Далее».

★ Выберите «Выбрать корневой каталог» — найдите и выберите каталог \ Application \ Project \ STM32CubeIDE \ STM32F769-Discovery.

★ Чтобы скомпилировать проект, нажмите кнопку Build (символ молотка) на панели инструментов.

★ Нажмите кнопку «Выполнить» или «Отладка» на панели инструментов, чтобы запустить приложение на целевом компьютере.

Если цветовой формат или ориентация экрана были изменены, выполните чистку в STM32CubeIDE.

Чтобы запустить приложение пользовательского интерфейса, созданное встроенным мастером, на пользовательском оборудовании STM32, вы можете использовать предоставленную среду сборки встроенного мастера для обнаружения STM32F769 в качестве шаблона.Подкаталог \ TargetSpecific содержит все файлы конфигурации и исходные коды платформы. Предполагая, что ваше специальное оборудование похоже на плату STM32F769 Discovery, обычно необходимы следующие адаптации или конфигурации:

★ Системные часы (ew_bsp_system.c) — Первым и важным шагом является настройка системных и периферийных часов. В зависимости от вашего оборудования вы можете использовать внутренние или внешние часы в качестве источника. Пожалуйста, позаботьтесь о том, чтобы ваши LTDC и USART были подключены к выбранному источнику синхронизации и правильно настроены.Приложение Embedded Wizard UI работает независимо от выбранной системной частоты, однако из-за медленных системных часов всем компонентам требуется больше времени для выполнения своих задач (например, обновления дисплея).

★ SDRAM (ew_bsp_system.c) — Конфигурация SDRAM должна быть адаптирована к вашей конкретной SDRAM. Пожалуйста, используйте тест памяти, чтобы убедиться, что запись и чтение работают правильно. Если начальный адрес и / или размер SDRAM изменились, измените настройки фреймбуфера и пула памяти в файле ewconfig.час

★ MPU (ew_bsp_system.c) — Пожалуйста, позаботьтесь о том, чтобы правильно настроить MPU, чтобы избежать неожиданного спекулятивного доступа для чтения за пределами допустимых областей памяти. Для получения дополнительной информации см. AN4838 и AN4861, глава 4.6.2.

★ USART (ew_bsp_console.c) — Обычно конфигурация USART просто требует новой распиновки в соответствии с схемой вашего оборудования. Настоятельно рекомендуется использовать последовательное соединение, чтобы получать сообщения о состоянии и отладку во время выполнения.

★ LTDC и DSI (ew_bsp_display.c) — LTDC — это интегрированный контроллер дисплея, который позволяет вам подключать множество различных типов дисплеев к устройству STM32. В случае обнаружения STM32F769 MIPI-DSI используется как интерфейс для дисплея. Если вы не используете дисплей MIPI-DSI, используйте среду сборки для STM32F746-Discovery в качестве шаблона.

★ Touch (ew_bsp_touch.c) — Если ваше приложение требует поддержки сенсорного ввода, вы можете интегрировать драйвер сенсорного экрана, предоставленный производителем сенсорного контроллера, или написать свой собственный.В результате должна быть возвращена текущая позиция касания.

Как только эти шаги будут выполнены, вы можете создать собственное приложение с графическим интерфейсом пользователя или использовать один из предоставленных примеров. Если размер вашего дисплея отличается от размера дисплея платы обнаружения STM32F769 (800×480 пикселей), пожалуйста, измените атрибут ScreenSize проекта UI и размер фреймбуфера в файле ewconfig.h соответственно.

.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *