Эта статья в основном не зависит от системы, и шаги будут идентичны в Windows и Linux - в конце концов, это одно из преимуществ использования Eclipse . Скриншоты были созданы в Windows 10 , но в Linux отличия будут только во внешнем виде различных окон или иерархии файловой системы.

Имейте в виду, что использование Eclipse для разработки проекта на основе distortos не обязательно. Ни один из них не выполняет точных шагов, описанных в этой статье. Eclipse довольно популярен, кроссплатформенен и полон полезных функций, но любая из этих черт может быть преимуществом или недостатком - в зависимости от ваших предпочтений. Использование этой конкретной среды IDE определенным образом, описанным в этом руководстве, является лишь одной из многих возможных комбинаций - не обязательно лучшей и, скорее всего, не самой плохой, но, как известно, она работает и тестируется во многих проектах. Опытные разработчики со своими привычками могут счесть эту статью лишь кратким объяснением процесса разработки, используемого в проекте, основанном на  distortos .

Создание рабочего пространства

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

C: \ ARM \ рабочее пространство

 для Windows или

~ / ARM / рабочее пространство

 для Linux . Установите флажок « Использовать по умолчанию и больше не спрашивать» и нажмите « ОК», чтобы закрыть запрос и создать рабочее пространство.

https://distortos.org/wp-content/uploads/2017/01/eclipse-select-workspace-300x136.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-select-workspace.png 616w" alt="" width="150" height="68" class="alignnone size-thumbnail wp-image-469" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Если вы впервые используете это рабочее пространство, Eclipse запустится с открытой вкладкой приветствия . Просто снимите флажок « Всегда показывать приветствие при запуске» в правом нижнем углу и щелкните значок Workbench в правом верхнем углу.

https://distortos.org/wp-content/uploads/2017/01/eclipse-welcome-screen-300x207.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-welcome-screen-768x530.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-welcome-screen.png 841w" alt="" width="150" height="103" class="alignnone size-thumbnail wp-image-470" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Создание проекта C ++

Самое первое, что вам нужно сделать, это создать новый проект C ++ ( обратите внимание - не создавайте управляемый проект C / C ++ ). Для этого щелкните Файл> Создать> Проект… . В появившемся диалоговом окне выберите проект C ++ из C / C ++ группы ( не выбран проект C / C ++ , так как это создаст управляемые сборки проект ) и нажмите кнопку Далее . На следующем шаге дайте вашему проекту короткое и простое имя (без пробелов и специальных символов) - например, test . Разверните группу проектов Makefile во фрейме Тип проекта , выберите Пустой проект.а затем выберите Cross GCC во фрейме Toolchains . Поскольку здесь больше нечего настраивать, нажмите « Готово», чтобы закрыть диалоговое окно и создать проект.

Импорт шаблона проекта

Теперь давайте добавим несколько исходников в этот пустой проект! Загрузите самую последнюю версию  distortosTemplateSubfolder из раздела Загрузки - убедитесь, что выбран правильный формат для вашей системы:

.7z

для Windows или

.tar.xz

для Linux . Распакуйте архив в любое место и вернитесь в Eclipse .

Убедитесь, что созданный вами проект выбран на вкладке Project Explorer слева, и выберите Import… из   меню File . Разверните группу « Общие », выберите « Файловая система» и нажмите « Далее» . Нажмите « Обзор»… рядом с полем « Из каталога» перейдите к извлеченному 

distortosTemplateSubfolder-ГГГГММДД

папку, выберите ее и нажмите ОК . В левом поле чуть ниже метки Из каталога установите флажок рядом с папкой с извлеченными источниками - таким образом все ее содержимое будет импортировано в ваш проект. Опять же - убедитесь, что папка верхнего уровня вашего проекта выбрана в поле В папку ниже - если это не так, то исправьте это с помощью кнопки Обзор… справа от этого поля. Не устанавливайте флажки в поле « Параметры» и нажмите « Готово» .

конфигурация distortos

Этот проект по-прежнему не может быть скомпилирован, поскольку дистрибутивы еще не настроены. Первым делом создадим собственный

distortosConfiguration.mk

файл с конфигурацией проекта. Эти файлы конфигурации необходимо создавать и редактировать через системный терминал - «графические» инструменты из kconfig-frontends не будут работать непосредственно в Eclipse . Если вы работаете в Windows , откройте его  меню « Пуск» , введите

командная строка

и откройте приложение с этим именем. Важное примечание для пользователей Windows - вы НЕ должны использовать оболочку MSYS2 для любого из следующих шагов, используйте только собственную командную строку Windows  ! Если вы работаете в Linux , запустите свой любимый эмулятор графического терминала ( терминал в GNOME , консоль в KDE ,…) или переключитесь на виртуальный терминал с помощью Ctrl + Alt + Fx .

https://distortos.org/wp-content/uploads/2017/01/eclipse-start-command-prompt-173x300.png 173w, https://distortos.org/wp-content/uploads/2017/01/eclipse-start-command-prompt.png 392w" alt="" width="86" height="150" class="alignnone size-thumbnail wp-image-485" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Перейдите в папку нашего проекта с помощью 

компакт-диск C: \ ARM \ workspace \ test

в Windows или

cd ~ / ARM / рабочая область / тест

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

cp distortos / конфигурации / ST_STM32F4DISCOVERY / test / distortosConfiguration.mk.

. Выберите эту недавно скопированную конфигурацию, выполнив

сделать настройку

 команда (что эквивалентно 

сделайте configure CONFIG_PATH =.

). Теперь вы можете запустить инструмент настройки, набрав

сделать menuconfig

.

https://distortos.org/wp-content/uploads/2017/12/eclipse-command-prompt-1-300x180.png 300w, https://distortos.org/wp-content/uploads/2017/12/eclipse-command-prompt-1-768x462.png 768w, https://distortos.org/wp-content/uploads/2017/12/eclipse-command-prompt-1.png 852w" alt="" width="150" height="90" class="alignnone size-thumbnail wp-image-600" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

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

Строим проект

ОК - вернемся к Eclipse . Теперь проект можно скомпилировать - выберите вкладку « Консоль » на нижней панели и нажмите « Проект» > « Собрать все» (или просто нажмите Ctrl + B ). Если вы видите окно Building Workspace, вы можете установить флажок « Всегда запускать в фоновом режиме» и нажать « Запускать в фоновом режиме» - в любом случае здесь нет ничего интересного. Через некоторое время ваша сборка должна завершиться без ошибок на вкладке « Консоль ».

Конфигурация проекта

Параллельная сборка и подробный вывод

На этом этапе сборка идет довольно медленно, и такие вещи, как завершение кода или навигация по коду, не будут работать должным образом… Перейдите в « Проект» > « Свойства», затем нажмите « Сборка C / C ++» и выберите вкладку « Поведение ». Первое, что нужно сделать, это установить флажок Включить параллельную сборку в группе настроек сборки , что значительно ускорит компиляцию на многоядерном ПК (например, на том, который у вас, скорее всего, есть). Вы можете оставить опцию Использовать оптимальные задания (…) выбранной, так как эта опция автоматически использует все доступные ядра. Вы также должны изменить содержимое поля Build (Incremental build) на 

все ГЛАГОЛЫ = 1

, что позволит выводить полные команды во время компиляции, позволяя Eclipse анализировать их для различных директив препроцессора, таких как

-I

 с включенными папками или 

-D

с макросами. Закройте свойства проекта, нажав « Применить» и «Закрыть» (или « ОК» в более старых версиях Eclipse ).

Конфигурация индексатора

На следующем шаге нам также нужно увидеть команды, поэтому давайте перестроим проект. Выберите Очистить от проекта меню и нажмите кнопку OK в окне , которое появится. После завершения этой короткой операции снова создайте проект (« Проект» > « Собрать все» или Ctrl + B ). На этот раз If должно быть намного быстрее (здесь - ~ 10 с против ~ 35 с), но нас больше всего интересуют точные флаги компиляции.

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

arm-none-eabi-g ++ -Wall -Wextra -Wshadow -std = gnu ++ 11 -mcpu = cortex-m4 -mthumb -mfloat-abi = hard -mfpu = fpv4-sp-d16 -g -ggdb3 -O2 -fno -use-cxa-atexit -ffunction-section -fdata-section -fno-rtti -fno-exceptions -Ioutput / include -Idistortos / include -I./folderWithFunctions -MD -MP -c main.cpp -o output /./ main.o

. Выберите часть со всеми

-часы

 а также 

-m

 флаги ( 

-std = gnu ++ 11 -mcpu = cortex-m4 -mthumb -mfloat-abi = жесткий -mfpu = fpv4-sp-d16

в примере , и на скриншоте) и скопировать его в буфер обмена - либо щелкнув правой кнопкой мыши и выбрав команду Копировать или нажав Ctrl + C .

https://distortos.org/wp-content/uploads/2018/04/eclipse-console-copy-300x226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-console-copy-768x579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-console-copy.png 1010w" alt="" width="150" height="113" class="alignnone size-thumbnail wp-image-627" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Снова откройте свойства проекта ( Project > Properties ), разверните группу C / C ++ General , выберите Preprocessor Include Paths, Macros и т. Д. И выберите вкладку Providers . Отключите всех поставщиков и включите только  встроенные параметры компилятора CDT Cross GCC и синтаксический анализатор вывода сборки CDT GCC .

Выберите  CDT Cross GCC Built-in Compiler Settings в списке и поместите курсор в конец Command, чтобы получить поле спецификаций компилятора . Поместите один пробел и вставьте содержимое буфера обмена - нажмите правой кнопкой мыши на поле и выберите Вставить или нажмите Ctrl + V . Из вставленного текста вы можете удалить все флажки, которые не

-часы

 или же 

-m

. Вам также следует добавить

-std = gnu99

flag, поскольку содержимое этого поля используется как для C, так и для C ++. Теперь перейдите в начало этого поля и замените

$ {КОМАНДА}

 с участием 

arm-none-eabi - $ {КОМАНДА}

. Следуя нашему примеру, теперь полное содержимое этого поля 

arm-none-eabi - $ {COMMAND} $ {FLAGS} -E -P -v -dD "$ {INPUTS}" -std = gnu ++ 11 -std = gnu99 -mcpu = cortex-m4 -mthumb -mfloat- abi = жесткий -mfpu = fpv4-sp-d16

 (начальное значение было 

$ {КОМАНДА} $ {ФЛАГИ} -E -P -v -dD "$ {ВХОДЫ}"

).

https://distortos.org/wp-content/uploads/2018/04/eclipse-properties-cdt-cross-gcc-built-in-compiler-settings-300x177.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-properties-cdt-cross-gcc-built-in-compiler-settings-768x453.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-properties-cdt-cross-gcc-built-in-compiler-settings.png 960w" alt="" width="150" height="88" class="alignnone size-thumbnail wp-image-628" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Теперь выберите  из списка CDT GCC Build Output Parser . Добавлять

.*(

перед текущим содержимым поля шаблона команды компилятора и

)

после них. Если бы исходное содержимое было 

(g? cc) | ([gc] \ + \ +) | (лязг)

, поле теперь будет содержать 

. * ((g? cc) | ([gc] \ + \ +) | (clang))

.

https://distortos.org/wp-content/uploads/2018/04/eclipse-properties-cdt-gcc-build-output-parser-300x196.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-properties-cdt-gcc-build-output-parser-768x502.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-properties-cdt-gcc-build-output-parser.png 960w" alt="" width="150" height="98" class="alignnone size-thumbnail wp-image-629" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Проверить поведение индексатора

Нажмите « Применить и закрыть» (« ОК» в старых версиях Eclipse ), чтобы закрыть настройки проекта и заново построить проект - « Проект» > « Очистить…» > « ОК» , « Проект» > « Создать все» (или Ctrl + B ). Поскольку Eclipse теперь может анализировать команды компиляции, напечатанные на  вкладке « Консоль », на значках всех скомпилированных исходных файлов на панели « Обозреватель проекта» будет небольшой гаечный ключ. Вы можете проверить значения , обнаруженные Eclipse , щелкнув правой кнопкой мыши такой исходный файл (например,

main.cpp

в папке верхнего уровня нашего проекта), выбрав Properties , развернув группу C / C ++ General и выбрав Preprocessor Include Paths, Macros etc. - значения будут перечислены под каждым провайдером, который их обнаружил, в поле Setting Entries .


Вот и все - на данный момент у вас есть полностью работающий проект Eclipse с дистрибутивами !