Авиатор ЦМИТ Авиатор

Средства разработки под ARM

Visual Studio Code для C / C ++ с ARM Cortex-M

  • Источник: Открыть сайт

Часть 1 - Установка

Несколько месяцев изучаю и использую Rust. Я все еще учусь, но меня очень впечатлил мощный и крутой язык программирования, яркая экосистема, продвинутые концепции и инструменты. Изучая Rust, я использовал среду разработки Visual Studio Code IDE, и она отлично работает с Rust. Но мне было интересно: могу ли я использовать его для моей «обычной» разработки на C / C ++ и на устройствах ARM Cortex-M? Ответ однозначный: «да», и эта мини-серия статей также должна помочь вам начать работу.

По сути, Visual Studio Code - это очень удобная, быстрая и современная IDE со множеством классных плагинов и помощников. Кажется, он не так часто используется для встраиваемой разработки, но со временем это определенно может измениться. Начать работу с Visual Studio Code и встроенной целью может быть сложно, потому что для нее может не быть специальной поддержки со стороны поставщиков микросхем. Но немного поучившись, и я надеюсь, что с помощью этой серии статей вы сможете приступить к работе.

В этой серии руководств я использую NXP K22FN512 ( плата FRDM-K22 ), но вы сможете использовать любое другое устройство NXP Kinetis или LPC, если оно поддерживается NXP MCUXpresso SDK. Я расскажу об установке, первом простом проекте, его отладке на целевом компьютере и, наконец, расширении его до полного проекта SDK, а также изучу некоторые расширенные функции.

Итак, вот что: если вы не знаете Visual Studio Code, я приглашаю вас в путешествие в новый мир ...

Настройка

Для этой статьи я использовал версию 1.55.2 Visual Studio Code. Установщик доступен по адресу https://code.visualstudio.com/ и поддерживает Windows, Mac и Linux:

После установки запустите IDE:

В любое время я могу обновить среду IDE, если есть доступные обновления (я тоже буду получать уведомления):

IDE включает в себя представление терминала или консоли, откройте новый:

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

Установка расширений

По сравнению с другими полностью интегрированными IDE, я должен установить другие пакеты в дополнение к IDE: расширения IDE, инструменты сборки (компилятор, компоновщик, библиотеки), Cmake и поддержку отладчика.

Чтобы установить плагины IDE, это можно сделать с помощью командной строки оболочки хоста или непосредственно в Терминале внутри IDE. Чтобы установить расширения (также известные как плагины в Eclipse), я использую следующий формат команды:

code --install-extension <code>

Или через меню View > Extensions.

Для встраиваемой разработки для ARM Cortex-M я рекомендую следующие расширения:

  1. C/C++, ms-vscode.cpptools
  2. Cortex-Debug, marus25.cortex-debug
  3. CMake Tools, ms-vscode.cmake-tools
  4. CMake Syntax highlighting, twxs.cmake
  5. ARM Assembly highlighting, dan-c-underwood.arm
  6. Linker Script highlighting, zixuanwang.linkerscript

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

Самый простой способ - установить их из командной строки внутри IDE:

{source}code --install-extension ms-vscode.cpptools
code --install-extension marus25.cortex-debug
code --install-extension twxs.cmake
code --install-extension dan-c-underwood.arm
code --install-extension zixuanwang.linkerscript
{/source}

Ниже моих установленных расширени(menu File > Preferences > Extensions):

CMake

CMake can be downloaded and installed from https://cmake.org/download/

Install it with the defaults. I’m using v3.20.2.

 Make or Ninja

Я использую как Make, так и Ninja с CMake. Оба должны присутствовать в PATH, поэтому проверьте, установлен ли он у вас:

Установщик Make доступен по адресу https://www.gnu.org/software/make/.

Ninja доступен по адресу https://github.com/ninja-build/ninja/releases . Установите его там, где он найден системой, я обычно помещаю его в C: \ Program Files \ CMake \ bin

По устаревшим причинам я все еще использую Make, потому что на нем я вырос. Но Ninja - это тот, который я использую все чаще и чаще, потому что он такой быстрый :-).

Встроенный набор инструментов GNU Arm

Набор инструментов GNU для ARM доступен по адресу https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads.

Я установил версию gcc-arm-none-eabi-10-2020-q4-major-win32 с настройками по умолчанию.

Отладчик

Чтобы подключить GDB (отладчик) к целевой плате, мне нужен программатор. Я использую для этого SEGGER J-Link. MCUXpresso IDE уже поставляется с установкой J-Link, поэтому очень вероятно, что она уже существует на вашем компьютере. Если нет, вы можете загрузить программное обеспечение J-Link с https://www.segger.com/downloads/jlink#J-LinkSoftwareAndDocumentationPack.

Установите его с настройками по умолчанию. У меня установлен V7.20 с настройками по умолчанию:

Также можно использовать OpenOCD или PEMicro. Сначала я сосредоточусь на интерфейсе J-Link.

Теперь у нас должно быть установлено все необходимое программное обеспечение.

Часть 2 - Проект

Это вторая часть серии статей о том, как использовать код Microsoft Visual Studio для встраиваемой разработки на ARM Cortex-M. В этой части я собираюсь показать, как создать и собрать проект, используя CMake, запускающий Make или Ninja в качестве системы сборки.

В части 1 мы установили необходимые инструменты, поэтому убедитесь, что вы выполнили эту часть. Часть 2 посвящена созданию очень простого проекта C. Цель состоит в том, чтобы создать что-то простое и легкое, что вы можете использовать в своих собственных проектах. Речь идет об использовании наиболее важных инструментов для выполнения работы без необходимости использования других «фреймворков», если они вам действительно не нужны. Речь идет о создании основного файла, добавлении кода запуска и сборке его как проекта.

Я не собираюсь использовать «причудливых» мастеров или фреймворков, я просто использую базовые инструменты по одной причине: для простоты.

Не волнуйтесь: это просто. И все используемые / созданные файлы находятся на GitHub: https://github.com/ErichStyger/mcuoneclipse/tree/master/Examples/VisualStudioCode

SDK

Помимо компилятора / компоновщика / отладчика вам понадобятся несколько минимальных файлов для сборки проекта:

  1. Основной : файл с основной точкой входа в приложение (main ()).
  2. Код запуска : он выполняется после сброса, инициализирует систему, память, библиотеку и переходит к main ().
  3. Система : в среде CMSIS код запуска вызывает обратный вызов инициализации системы (SystemInit () для установки часов, настройки сторожевого таймера,…). Кроме того, он предоставляет файлы заголовков для регистров устройств с отображением памяти и периферийных устройств, таких как I2C, SPI,…
  4. Файл компоновщика : определяет отображение памяти и способ связывания приложения.

Первый пункт - это то, что вы легко можете написать самостоятельно. Остальные элементы вы можете получить из примеров (например, из моего GitHub ) или из SDK / примеров, предоставленных поставщиком вашего кремниевого устройства, например, NXP.

NXP предоставляет все необходимые файлы в MCUXpresso SDK . Убедитесь, что у вас есть SDK для GNU gcc:

Преимущество использования такого SDK заключается в том, что у вас есть свобода выбора и полный контроль, без «привязки» к пользовательским фреймворкам и зависимостям с самого начала.

Цвета? Цвета!

Пока не забыл: начать с чего-то очень простого: вот где вы можете изменить цветовую тему в Visual Studio Code на все, что вам нравится:

Рабочее пространство и проект (ы)

Подобно другим IDE, VSC использует концепцию «рабочего пространства». Проще говоря, рабочая область - это набор папок, открытых в среде IDE. См. Https://code.visualstudio.com/docs/editor/workspaces для получения более подробной информации. В самом простом случае рабочее пространство просто содержит папку, которая является папкой для проекта. Итак, все, что нам нужно, это добавить папку.

Перейдите к существующей новой (пустой) папке или просто создайте ее в диалоговом окне:

Ниже я создал новую папку FRDM-K22F_Simple, а затем добавил ее:

Эта папка теперь отображается в рабочей области:

Файл main.c

Добавьте новый файл: main.c

Реализуйте основную функцию, затем сохраните ее (CTRL + S):

Папки

Рекомендую разложить файлы по папкам.

Это действительно зависит от вас, как вы будете организовывать файлы. Моя предпочтительная "стандартная" организация использует следующие папки:

  • CMSIS : содержит файлы заголовков ARM CMSIS.
  • устройство : файлы заголовков для конкретного устройства, инициализация системы, код запуска и файл компоновщика
  • src : исходные файлы приложения, включая основной файл
  • build : Scratch, содержит все сгенерированные файлы сборки, объектные файлы и исполняемый файл. Все, что находится в этой папке, может быть удалено / удалено / очищено, поскольку оно создано из исходных кодов.

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

Файлы запуска, системы и компоновщика

Из SDK скопируйте в папку проекта файлы системы, автозагрузки и компоновщика.

Следующие шаги касаются компиляции и компоновки.

Toolchain CMake File

I’m going to use CMake with Make to build the project. CMake needs some information where to find the tools. A simple and easy way is to to add a the following file to the project. I have named it arm-none-eabi-gcc.cmake and placed it in the project root folder. Below is a template as well on GitHub.

set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR ARM)

set(ARM_TOOLCHAIN_DIR "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2020-q4-major/bin")
set(BINUTILS_PATH ${ARM_TOOLCHAIN_DIR})

set(TOOLCHAIN_PREFIX ${ARM_TOOLCHAIN_DIR}/arm-none-eabi-)

set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

set(CMAKE_C_COMPILER "${TOOLCHAIN_PREFIX}gcc.exe")
set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
set(CMAKE_CXX_COMPILER "${TOOLCHAIN_PREFIX}g++.exe")

set(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy CACHE INTERNAL "objcopy tool")
set(CMAKE_SIZE_UTIL ${TOOLCHAIN_PREFIX}size CACHE INTERNAL "size tool")

set(CMAKE_FIND_ROOT_PATH ${BINUTILS_PATH})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    

ARM_TOOLCHAIN_DIR specifies the compiler to be used (I have multiple versions of the toolchain installed on my system, update it to match your version).

Additionally it defines extra tools as size and objcopy.

Примечание : вышесказанное и эта статья имеют в виду простоту, и, как вы можете видеть, там есть абсолютный путь к существующей инструментальной цепочке. Есть и другие, более сложные способы сделать это, начиная с папки cmake с более продвинутыми или переносимыми скриптами cmake . Существуют и другие специальные расширения, такие как https://marketplace.visualstudio.com/items?itemName=ilg-vscode.xpack, которые могут вам в этом помочь.

CMake CMakeLists.txt

Чтобы указать CMake, что делать, создайте файл с именем CMakeList.txt в корне проекта. Ниже приведен шаблон для него также на GitHub .

cmake_minimum_required(VERSION 3.15.3)

# Optional: print out extra messages to see what is going on. Comment it to have less verbose messages
set(CMAKE_VERBOSE_MAKEFILE ON)

# Path to toolchain file. This one has to be before 'project()' below
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/arm-none-eabi-gcc.cmake)

# Setup project, output and linker file
project(FRDM-K22F_Simple)
set(EXECUTABLE ${PROJECT_NAME}.elf)
set(LINKER_FILE ${CMAKE_SOURCE_DIR}/device/MK22FN512xxx12_flash.ld)

enable_language(C ASM)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)

# Optional: issue a message to be sure it uses the correct toolchain file.
message(STATUS "CMAKE_TOOLCHAIN_FILE is: ${CMAKE_TOOLCHAIN_FILE}")

# List of source files
set(SRC_FILES
        src/main.c
        device/startup_MK22F51212.S
        device/system_MK22F51212.c
        )

# Build the executable based on the source files
add_executable(${EXECUTABLE} ${SRC_FILES})

# List of compiler defines, prefix with -D compiler option
target_compile_definitions(${EXECUTABLE} PRIVATE
        -DCPU_MK22FN512VLH12
        -DCPU_MK22FN512VLH12_cm4
        )

# List of includ directories
target_include_directories(${EXECUTABLE} PRIVATE
        src 
        device
        CMSIS
        )

# Compiler options
target_compile_options(${EXECUTABLE} PRIVATE
        -mcpu=cortex-m4
        -mthumb
        -mfpu=fpv4-sp-d16
        -mfloat-abi=hard

        -fdata-sections
        -ffunction-sections

        -Wall
        -O0
        -g3
        )

# Linker options
target_link_options(${EXECUTABLE} PRIVATE
        -T${LINKER_FILE}
        -mcpu=cortex-m4
        -mthumb
        -mfpu=fpv4-sp-d16
        -mfloat-abi=hard
        -specs=nano.specs
        -lc
        -lm
        -lnosys
        -Wl,-Map=${PROJECT_NAME}.map,--cref
        -Wl,--gc-sections
        -Xlinker -print-memory-usage -Xlinker
        )

# Optional: Print executable size as part of the post build process
add_custom_command(TARGET ${EXECUTABLE}
        POST_BUILD
        COMMAND ${CMAKE_SIZE_UTIL} ${EXECUTABLE})

# Optional: Create hex, bin and S-Record files after the build
add_custom_command(TARGET ${EXECUTABLE}
        POST_BUILD
        COMMAND ${CMAKE_OBJCOPY} -O srec --srec-len=64 ${EXECUTABLE} ${PROJECT_NAME}.s19
        COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE} ${PROJECT_NAME}.hex
        COMMAND ${CMAKE_OBJCOPY} -O binary ${EXECUTABLE} ${PROJECT_NAME}.bin)
    

Наиболее важные разделы / записи:

  • project (<здесь название вашего проекта>): дайте вашему проекту имя
  • set ( LINKER_FILE  <ваш файл компоновщика здесь>): укажите имя файла компоновщика
  • set ( SRC_FILES <ваши исходные файлы здесь>): список исходных файлов для компиляции
  • target_compile_definitions ($ {EXECUTABLE} PRIVATE <компилятор определяет здесь>): список компиляторов #define
  • target_include_directories ($ {EXECUTABLE} PRIVATE <список включаемых каталогов>): список включаемых каталогов
  • target_compile_options ($ {EXECUTABLE} PRIVATE <параметры компилятора>): список параметров компилятора
  • target_link_options ($ {EXECUTABLE} PRIVATE <параметры компоновщика>): список параметров компоновщика

На этом настройка конфигурации для сборки завершена.

Настройка

Далее мы собираемся его построить. На самом деле нам нужно сначала его «настроить». С CMake это двухэтапный процесс: запуск CMake для создания (или настройки) файлов make или ninja, а затем я использую make или ninja для его создания.

Откройте терминал в выходной папке сборки:

При использовании make : вызовите CMake для создания файлов make:

cmake -DCMAKE_MAKE_PROGRAM=make.exe -G "Unix Makefiles" ..

затем создайте его с помощью:

make

При использовании ниндзя : вызовите CMake со следующей командной строкой:

cmake -DCMAKE_MAKE_PROGRAM = ninja.exe -G "Ninja" ..

затем создайте его с помощью:

ninja

Простой способ переключаться между двумя системами сборки или начать с нуля - это удалить содержимое папки build. И да: ниндзя намного быстрее 🙂

Строительство

Вместо вызова make или ninja внутри папки сборки можно использовать следующее, что делает то или другое:

cmake --build.

Преимущество этого способа заключается в том, что если в CMakeList.txt произошли изменения, он также сначала выполнит шаг настройки. Но он не улавливает изменения в файле определения инструментальной цепочки, но в любом случае его не следует часто менять.

Если вы вносите изменения в структуру: убедитесь, что вы выполнили настройку, чтобы убедиться, что все настроено правильно.

Уборка

«Чистая-чистая» - это удалить все файлы в папке сборки. Но в CMake есть и «чистая» команда:

cmake --build. - цель очистить

Чтобы выполнить «очистку с последующей сборкой», используйте следующее:

cmake --build. - сначала очистить

Резюме

Таким образом, мы создали проект с кодом Visual Studio с использованием CMake для создания проекта для ARM Cortex с использованием инструментов GNU. Правда (может быть, шокирующая?) В том, что Visual Studio Code - это просто редактор, и ничего больше. Таким образом, вы можете сделать то же самое с любым редактором или IDE, которые вам нравятся: imho, это одна из вещей, которые мне нравятся в VSC: это помощник и помощник, и он не заставляет меня, как что-то делать. Точно так же у вас есть свобода делать то, что вам нравится.

Часть 3 - Сборка

Опубликовано 6 мая 2021 г. по Эриха Styger

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

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

Идея состоит в том, что мы можем нажать <CTRL> + <SHIFT> + B для выполнения сборки. Вы можете найти сочетания клавиш в https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf или в меню File> Preferences> Keyboard Shortcuts:

Задачи

Существуют различные способы создания и настройки задач кода Visual Studio, см. Код Visual Studio: документация по задачам . Легкий и простой способ - создать папку с именем .vscode и добавить в нее файл tasks.json :

  1. Внутри корневой папки проекта создайте новую папку с именем .vscode.
  2. Внутри этой папки создайте новый файл с именем tasks.json и добавьте следующий контент (доступен на GitHub ):
{
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "2.0.0",
        "tasks": [
            {
                "type": "shell",
                "label": "Build Project",
                "command": "cmake --build .",
                "options": {
                    "cwd": "${workspaceFolder}/build"
                },
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "problemMatcher": {
                    "base": "$gcc", 
                    "fileLocation": ["relative", "${workspaceFolder}/build"]
                }
            }
        ]
    }

Это создает «задачу» для создания проекта с помощью команды «оболочки» (консоли). «CMake -Build.» команда, которую мы видели в предыдущем уроке .

Для текущего каталога он использует «$ {workspaceFolder} / build », потому что это должен быть текущий рабочий каталог для cmake.

В следующей группе он помечается как команда сборки по умолчанию, которая назначает ее сочетанию клавиш <CTRL> + <SHIFT> + <B>:

"group": {
       "kind": "build",
       "isDefault": true
    },

«ProblemMatcher» назначает сопоставление для gcc для сканирования вывода консоли на предмет сообщений от gcc, поэтому я могу видеть вещи в представлении «Проблемы».

Это всего лишь минимальная задача и далеко не идеальная, но она заставляет нас работать.

Сборка

Теперь я могу просто нажать <CTRL> + <SHIFT> + <B>, чтобы построить проект, с выводом в Терминале внизу:

Один из способов запуска задач - из меню терминала :

В противном случае задачи можно запускать из палитры команд (<CTRL> + <SHIFT> + <P>):

А затем отфильтруйте и выберите задачу для запуска:

Дополнительные задачи

Таким же образом можно добавлять и выполнять другие задачи. Ниже добавлена ​​задача, добавленная для выполнения команды cmake «очистить с помощью сборки»: добавить следующее в список задач (через запятую):

{
                "type": "shell",
                "label": "clean & build",
                "command": "cmake --build . --clean-first",
                "options": {
                    "cwd": "${workspaceFolder}/build"
                },
                "group": "build",
                "problemMatcher": {
                    "base": "$gcc", 
                    "fileLocation": ["relative", "${workspaceFolder}/build"]
                }
    }

Задача «сборка по умолчанию» может быть только одна, поэтому она просто добавляется в группу «сборка».

Выбор задач для запуска

Выполнить задачу сборки по умолчанию легко с помощью <CTRL> + <SHIFT> + <B>.

Мне потребовалось время, чтобы понять, как выполнить произвольные задачи, которые я определил. Лучший способ, который я нашел, - это:

Сначала нажмите <CTRL> + <P> . В следующем диалоговом окне введите « задача » (обратите внимание на пробел в конце):

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

Другой способ - снова использовать меню терминала :

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

Резюме

С этим я назначил задачу сборки по умолчанию и могу использовать ярлык для ее выполнения. Кроме того, я могу определять собственные задачи или интегрировать скрипты в IDE.

Для более продвинутой настройки: обратите внимание на такие расширения, как xPack C / C ++ Manged Build Tools .

 

Часть 4 - Отладка

 Это об отладке микроконтроллера ARM Cortex-M с помощью кода Visual Studio:

https://mcuoneclipse.files.wordpress.com/2021/05/embedded-cortex-m-debugging-with-visual-studio-code.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/embedded-cortex-m-debugging-with-visual-studio-code.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/embedded-cortex-m-debugging-with-visual-studio-code.png?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/embedded-cortex-m-debugging-with-visual-studio-code.png 1281w" alt="" class="wp-image-31914" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31914" data-permalink="https://mcuoneclipse.com/embedded-cortex-m-debugging-with-visual-studio-code/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/embedded-cortex-m-debugging-with-visual-studio-code.png" data-orig-size="1281,680" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="embedded-cortex-m-debugging-with-visual-studio-code" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/embedded-cortex-m-debugging-with-visual-studio-code.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/embedded-cortex-m-debugging-with-visual-studio-code.png?w=584" />
Cortex-M4 (NXP K22FN512) Отладка с помощью кода Visual Studio

Контур

В этой статье я покажу, как отлаживать микроконтроллер ARM Cortex (M4F, NXP K22FN512) с помощью кода Microsoft Visual Studio. Для этого мне понадобятся инструменты и расширения, установленные в части 1 этой серии руководств. Отладка осуществляется с помощью отладочного зонда (J-Link), либо внешнего (автономный отладочный зонд), либо встроенного (доступно на многих платах разработки, например, от NXP или STM). Я использую SWD здесь, потому что FRDM-K22F имеет SWD только в отладочном заголовке, но также можно использовать JTAG.

Отладочный зонд

В этой статье я использую отладочный зонд SEGGER J-Link EDU Mini . Технически можно использовать и другие датчики. J-Link широко доступен, а EDU стоит всего 20 или 20 евро, он очень маленький и универсально работает для многих-многих устройств из коробки.

https://mcuoneclipse.files.wordpress.com/2021/05/nxp-frdm-k22f-board.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/nxp-frdm-k22f-board.png?w=300 300w" alt="" class="wp-image-31887" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31887" data-permalink="https://mcuoneclipse.com/nxp-frdm-k22f-board/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/nxp-frdm-k22f-board.png" data-orig-size="732,507" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="nxp-frdm-k22f-board" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/nxp-frdm-k22f-board.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/nxp-frdm-k22f-board.png?w=584" />
Плата NXP FRDM-K22F

Кроме того, многие платы производителей микросхем ( LPC4322 или FRDM OpenSDA ) и датчики отладки могут загружать микропрограммное обеспечение J-Link, включая NXP LPC-Link2 или STLink . J-Link можно использовать с GDB, LLDB, OpenOCD или CMSI -DAP .

https://mcuoneclipse.files.wordpress.com/2021/05/segger-j-link-edu-mini.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/segger-j-link-edu-mini.png?w=300 300w" alt="" class="wp-image-31880" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31880" data-permalink="https://mcuoneclipse.com/segger-j-link-edu-mini/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/segger-j-link-edu-mini.png" data-orig-size="702,532" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="segger-j-link-edu-mini" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/segger-j-link-edu-mini.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/segger-j-link-edu-mini.png?w=584" />
SEGGER J-Link EDU Mini

Запустить файл JSON

Внутри папки .vscode создайте новый файл с именем launch.json со следующим содержимым:

{
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "cwd": "${workspaceRoot}",
                "executable": "./build/FRDM-K22F_Simple.elf",
                "name": "Debug Microcontroller",
                "request": "launch",
                "type": "cortex-debug",
                "servertype": "jlink",
                "serverpath": "C:/Program Files (x86)/SEGGER/JLink/JLinkGDBServerCL.exe",
                "armToolchainPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2020-q4-major/bin",
                "device": "MK22FN512xxx12",
                "interface": "swd",
                "serialNumber": "", // add J-Link serial number if having multiple attached the same time.
                "runToMain": true,
                "svdFile": "${workspaceRoot}/device/MK22F51212.svd",
    
            }
        ]
    }

Вы также можете найти все файлы на GitHub .

Наиболее важные настройки:

  • « Исполняемый файл »: двоичный файл для загрузки и отладки.
  • « Serverpath »: путь и имя файла исполняемого файла J-Link GDB Server. См. Часть 1 .
  • « ArmToolchainPath »: путь к исполняемому файлу arm-none-eabi-gdb. См. Часть 1 .
  • « Устройство »: идентификатор устройства, используемый для J-Link, см. Веб-сайт SEGGER J-Link .
  • « RunToMain »: если отладчик должен установить временную точку останова на main () и работать до этого момента.
  • « SvdFile »: необязательно, это файл CMSIS-SVD для детальной отладки регистров.

Файлы SVD

Запись «svdFile» в файле launch.json является необязательной, но имеет решающее значение для отладки встроенной системы, поскольку она описывает регистры периферийных устройств устройства. Они используются, например, в представлении Eclipse EmbSysRegView, и это хороший источник для получения файлов. При использовании устройств NXP файлы SVD присутствуют в NXP MCUXpresso SDK , но их труднее найти, поскольку NXP не использует стандартное расширение * .svd .

https://mcuoneclipse.files.wordpress.com/2021/05/cmsis-svd-file-in-nxp-mcuxpresso-sdk.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/cmsis-svd-file-in-nxp-mcuxpresso-sdk.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/cmsis-svd-file-in-nxp-mcuxpresso-sdk.png?w=768 768w" alt="" class="wp-image-31861" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31861" data-permalink="https://mcuoneclipse.com/cmsis-svd-file-in-nxp-mcuxpresso-sdk/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/cmsis-svd-file-in-nxp-mcuxpresso-sdk.png" data-orig-size="964,484" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="cmsis-svd-file-in-nxp-mcuxpresso-sdk" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/cmsis-svd-file-in-nxp-mcuxpresso-sdk.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/cmsis-svd-file-in-nxp-mcuxpresso-sdk.png?w=584" />
Файл CMSIS-SVD в NXP MCUXpresso SDK

Для файла запуска расширение значения не имеет, но для наглядности рекомендую переименовать его в .svd .

Отладка

Используйте F5 или меню «Выполнить»> «Начать отладку», чтобы начать сеанс отладки:

https://mcuoneclipse.files.wordpress.com/2021/05/start-debugging.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/start-debugging.png?w=300 300w" alt="" class="wp-image-31885" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31885" data-permalink="https://mcuoneclipse.com/start-debugging-2/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/start-debugging.png" data-orig-size="553,116" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="start-debugging" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/start-debugging.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/start-debugging.png?w=553" />

Это запускает сеанс отладки. В случае проблем проверьте консоль отладки:

Проверьте вкладку ВЫХОД (Вывод адаптера) для вывода из C: / Program Files (x86) /SEGGER/JLink/JLinkGDBServerCL.exe
    Запускающий сервер: "C: / Program Files (x86) /SEGGER/JLink/JLinkGDBServerCL.exe" "-if" "swd" "-port" "50000" "-swoport" "50001" "-telnetport" "50002" " -устройство «MK22FN512xxx12»
    Запуск GDB: "C: \ Program Files (x86) \ GNU Arm Embedded Toolchain \ 10 2020-q4-major \ bin \ arm-none-eabi-gdb.exe" "-q" "--interpreter = mi2"
    undefined C: \ Program Files (x86) \ GNU Arm Embedded Toolchain \ 10 2020-q4-major \ bin \ arm-none-eabi-gdb.exe: предупреждение: не удалось определить путь к каталогу индексного кеша.
    Чтение символов из C: \ Users \ erich \ Data \ GitRepos \ McuOnEclipse \ Examples \ VisualStudioCode \ FRDM-K22F \ FRDM-K22F_Simple \ build \ FRDM-K22F_Simple.elf ...
    0x000006b0 в _exit ()
    Не реализована причина остановки (при условии исключения): undefined
    Сброс цели
    Сброс цели
    
    Временная точка останова 1, main () в ../src/main.c:7
    7 int local = 0;
    

У меня есть предупреждение и «причина невыполненной остановки» (не знаю почему), но оно работает, и я отлаживаю 🙂

https://mcuoneclipse.files.wordpress.com/2021/05/debugging-arm-cortex-m4-with-visual-studio-code.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/debugging-arm-cortex-m4-with-visual-studio-code.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/debugging-arm-cortex-m4-with-visual-studio-code.png?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/debugging-arm-cortex-m4-with-visual-studio-code.png 1138w" alt="" class="wp-image-31895" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31895" data-permalink="https://mcuoneclipse.com/debugging-arm-cortex-m4-with-visual-studio-code/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/debugging-arm-cortex-m4-with-visual-studio-code.png" data-orig-size="1138,750" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="debugging-arm-cortex-m4-with-visual-studio-code" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/debugging-arm-cortex-m4-with-visual-studio-code.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/debugging-arm-cortex-m4-with-visual-studio-code.png?w=584" />
Отладка ARM Cortex-M4F с помощью кода Visual Studio

По умолчанию доступно несколько представлений отладки. С файлом .svd (см. Выше) у меня тоже есть доступ к периферийному регистру:

https://mcuoneclipse.files.wordpress.com/2021/05/debug-views.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/debug-views.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/debug-views.png?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/debug-views.png 1144w" alt="" class="wp-image-31897" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31897" data-permalink="https://mcuoneclipse.com/debug-views/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/debug-views.png" data-orig-size="1144,894" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="debug-views" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/debug-views.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/debug-views.png?w=584" />

Шагая

Есть обычные действия отладки (продолжить, пошаговое выполнение, перезапуск) плюс панель инструментов «запустить и отладить» слева:

https://mcuoneclipse.files.wordpress.com/2021/05/debug-actions.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/debug-actions.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/debug-actions.png?w=768 768w" alt="" class="wp-image-31898" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31898" data-permalink="https://mcuoneclipse.com/debug-actions/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/debug-actions.png" data-orig-size="952,145" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="debug-actions" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/debug-actions.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/debug-actions.png?w=584" />

Сборка Stepping

Для представления «Разборка» или пошагового выполнения кода сборки используйте палитру команд (CTRL + SHIFT + P) с «Cortex»:

https://mcuoneclipse.files.wordpress.com/2021/05/view-disassembly.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/view-disassembly.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/view-disassembly.png?w=768 768w" alt="" class="wp-image-31902" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31902" data-permalink="https://mcuoneclipse.com/view-disassembly/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/view-disassembly.png" data-orig-size="873,112" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="view-disassembly" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/view-disassembly.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/view-disassembly.png?w=584" />

Используйте "View Disassembly (Function") с именем функции для отладки этой функции в коде сборки. Используйте "Set Force Disassembly", чтобы переключиться на шаг дизассемблирования для всех функций.

https://mcuoneclipse.files.wordpress.com/2021/05/disassembly-code-stepping.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/disassembly-code-stepping.png?w=300 300w" alt="" class="wp-image-31906" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31906" data-permalink="https://mcuoneclipse.com/disassembly-code-stepping/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/disassembly-code-stepping.png" data-orig-size="590,344" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="disassembly-code-stepping" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/disassembly-code-stepping.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/disassembly-code-stepping.png?w=584" />

Можно установить точки останова в коде сборки, но нельзя увидеть высокоуровневый (C / C ++) рядом с кодом сборки. И представление дизассемблирования не показывает больше информации или символических символов, как это делает вид дизассемблирования Eclipse CDT.

Вернитесь к «авто», только чтобы показать дизассемблированный код без отладочной / исходной информации:

https://mcuoneclipse.files.wordpress.com/2021/05/auto-disassembly.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/auto-disassembly.png?w=300 300w" alt="" class="wp-image-31904" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31904" data-permalink="https://mcuoneclipse.com/auto-disassembly/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/auto-disassembly.png" data-orig-size="614,101" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="auto-disassembly" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/auto-disassembly.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/auto-disassembly.png?w=584" />

объем памяти

Для просмотра памяти используйте палитру команд (CTRL + SHIFT + P) с Cortex:

https://mcuoneclipse.files.wordpress.com/2021/05/view-memory.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/view-memory.png?w=300 300w" alt="" class="wp-image-31908" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31908" data-permalink="https://mcuoneclipse.com/view-memory/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/view-memory.png" data-orig-size="637,169" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="view-memory" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/view-memory.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/view-memory.png?w=584" />

Затем укажите выражение для ячейки памяти и длины:

https://mcuoneclipse.files.wordpress.com/2021/05/view-memory-expression.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/view-memory-expression.png?w=300 300w" alt="" class="wp-image-31910" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31910" data-permalink="https://mcuoneclipse.com/view-memory-expression/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/view-memory-expression.png" data-orig-size="608,64" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="view-memory-expression" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/view-memory-expression.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/view-memory-expression.png?w=584" />

Затем это показывает память:

https://mcuoneclipse.files.wordpress.com/2021/05/memory-view.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/memory-view.png?w=300 300w" alt="" class="wp-image-31912" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31912" data-permalink="https://mcuoneclipse.com/memory-view/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/memory-view.png" data-orig-size="477,367" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="memory-view" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/memory-view.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/memory-view.png?w=477" />
Просмотр памяти

Представление памяти очень простое по сравнению с представлениями памяти Eclipse (многими), но для проверки памяти это лучше, чем ничего.

Резюме

Надеюсь, это поможет вам начать работу (ну, отладку) с кодом Microsoft Visual Studio на ARM Cortex-M. Встроенные возможности отладки (память, регистры, сборка) намного более просты по сравнению с представлениями в Eclipse или MCUXpresso IDE, так что точно не до этого уровня (пока?). Но, по крайней мере, с этим я могу выполнять базовую аппаратную отладку на ARM Cortex.

часть 5 - ToolKit

Опубликовано 11 мая 2021 г. по Эриха Styger

Предыдущие части были посвящены установке , настройке проекта , сборке и отладке . Это об определении «набора инструментов», чтобы я мог использовать больше инфраструктуры CMake в Visual Studio Code:

https://mcuoneclipse.files.wordpress.com/2021/05/custom-toolchainf-file.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/custom-toolchainf-file.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/custom-toolchainf-file.png?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/custom-toolchainf-file.png 1079w" alt="" class="wp-image-31943" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31943" data-permalink="https://mcuoneclipse.com/custom-toolchainf-file/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/custom-toolchainf-file.png" data-orig-size="1079,555" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="custom-toolchainf-file" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/custom-toolchainf-file.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/custom-toolchainf-file.png?w=584" />
Цепочка инструментов загружена в код Visual Studio

Контур

Для нашего проекта еще нужно настроить несколько вещей. Мы можем создавать и отлаживать, но сборка выполняется с помощью « Задач », а не напрямую через CMake. Это потому, что я еще не настроил «комплект». Я вижу это по статусному сообщению внизу:

https://mcuoneclipse.files.wordpress.com/2021/05/no-kit-selected.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/no-kit-selected.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/no-kit-selected.png?w=768 768w" alt="" class="wp-image-31927" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31927" data-permalink="https://mcuoneclipse.com/no-kit-selected/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/no-kit-selected.png" data-orig-size="962,537" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="no-kit-selected" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/no-kit-selected.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/no-kit-selected.png?w=584" />
В коде Visual Studio не выбран комплект

Если я попытаюсь создать CMake: clean (используйте палитру команд или CTRL + SHIFT + P ) с помощью CMake: Clean

https://mcuoneclipse.files.wordpress.com/2021/05/cmake-clean.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/cmake-clean.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/cmake-clean.png?w=768 768w" alt="" class="wp-image-31931" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31931" data-permalink="https://mcuoneclipse.com/cmake-clean/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/cmake-clean.png" data-orig-size="798,133" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="cmake-clean" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/cmake-clean.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/cmake-clean.png?w=584" />

Есть список «комплектов» (как-то обнаруживаемых автоматически?), Но набор инструментов GNU ARM Embedded, который я установил и использую, не указан:

https://mcuoneclipse.files.wordpress.com/2021/05/select-a-kit.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/select-a-kit.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/select-a-kit.png?w=768 768w" alt="" class="wp-image-31933" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31933" data-permalink="https://mcuoneclipse.com/select-a-kit/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/select-a-kit.png" data-orig-size="962,537" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="select-a-kit" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/select-a-kit.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/select-a-kit.png?w=584" />
Выбрать комплект

Сканирование комплектов или использование « неопределенного » просто привело к использованию неправильных комплектов / компилятора, что нарушило сборку ARM Cortex-M, которую я использую :-(.

Очевидно, что CMake с интеграцией Visual Studio чего-то не хватает. Благодаря исследованию и комментариям Мартина в предыдущей части 3 проблема была решена : мне нужно добавить дополнительный файл cmake-kits.json .

Добавление набора с помощью cmake-kits.json

Создайте новый файл в папке .vscode и назовите его cmake-kits.json со следующим содержимым (или скопируйте его с GitHub ):

[
        {
            "name": "GCC Arm Embedded",
            "toolchainFile": "${workspaceRoot}/arm-none-eabi-gcc.cmake"
        }
    ]
https://mcuoneclipse.files.wordpress.com/2021/05/kit-sucessfully-loaded-1.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/kit-sucessfully-loaded-1.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/kit-sucessfully-loaded-1.png?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/kit-sucessfully-loaded-1.png 1056w" alt="" class="wp-image-31937" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31937" data-permalink="https://mcuoneclipse.com/2021/05/11/visual-studio-code-for-c-c-with-arm-cortex-m-part-5/kit-sucessfully-loaded/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/kit-sucessfully-loaded-1.png" data-orig-size="1056,486" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Kit sucessfully loaded" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/kit-sucessfully-loaded-1.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/kit-sucessfully-loaded-1.png?w=584" />
Комплект успешно загружен

Вы можете дать ему любое имя, но оно должно указывать на правильный файл инструментальной цепочки для Cmake. Благодаря этому у меня распознан «комплект», и я могу назначить его проекту, используя значок на нижней панели инструментов:

https://mcuoneclipse.files.wordpress.com/2021/05/selecting-kit.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/selecting-kit.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/selecting-kit.png?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/selecting-kit.png 1079w" alt="" class="wp-image-31946" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31946" data-permalink="https://mcuoneclipse.com/selecting-kit/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/selecting-kit.png" data-orig-size="1079,555" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="selecting-kit" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/selecting-kit.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/selecting-kit.png?w=584" />
Выбор комплекта в Visual Studio Code

Действия CMake

Если настроен правильный набор инструментов или набор, я могу использовать такие команды, как CMake: Build или CMake: Clean :

https://mcuoneclipse.files.wordpress.com/2021/05/cmake-actions.png?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/cmake-actions.png?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/cmake-actions.png?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/cmake-actions.png 1079w" alt="" class="wp-image-31949" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="31949" data-permalink="https://mcuoneclipse.com/cmake-actions/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/cmake-actions.png" data-orig-size="1079,555" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="cmake-actions" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/cmake-actions.png?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/cmake-actions.png?w=584" />
CMake Build или Clean

Резюме

Чтобы использовать команды CMake, Visual Studio Code необходимо знать о цепочке инструментов, используя файл cmake-kits.json, находящийся в папке .vscode. Обязательно добавьте его в проект, чтобы разблокировать больше возможностей Visual Studio Code.

часть 6 - IntelliSense

Опубликовано 24 мая 2021 г. по Эриха Styger

Предыдущие части были посвящены установке , настройке проекта , сборке , отладке и настройке комплекта . Речь идет о настройке IntelliSense для кросс-разработки в Visual Studio Code, которая позволяет просматривать символы или автозавершение кода:

https://mcuoneclipse.files.wordpress.com/2021/05/intellisense.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/intellisense.jpg?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/intellisense.jpg?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/intellisense.jpg 1609w" alt="" class="wp-image-32574" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32574" data-permalink="https://mcuoneclipse.com/2021/05/24/visual-studio-code-for-c-c-with-arm-cortex-m-part-6/intellisense/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/intellisense.jpg" data-orig-size="1609,708" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Intellisense" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/intellisense.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/intellisense.jpg?w=584" />
Автозавершение кода в Visual Studio

Контур

Мощный IntelliSense в Visual Studio Code, вероятно, является * особенностью * Visual Studio Code. Eclipse IDE имеет аналогичную функцию с « Индексатором », но имхо тот, что в Visual Studio Code, не только проще в настройке, но и более мощный.

Если вы не знаете, что делает IntelliSense, посетите https://code.visualstudio.com/docs/editor/intellisense.

https://mcuoneclipse.files.wordpress.com/2021/05/function-prototype-preview.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/function-prototype-preview.jpg?w=300 300w" alt="" class="wp-image-32567" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32567" data-permalink="https://mcuoneclipse.com/function-prototype-preview/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/function-prototype-preview.jpg" data-orig-size="632,97" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="function-prototype-preview" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/function-prototype-preview.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/function-prototype-preview.jpg?w=584" />

Настраивать

Как и все остальное, индексатор в Visual Studio Code использует файл конфигурации JSON. С расширением Microsoft C / C ++ существует графическая утилита настройки (UI). Используйте <CTRL> + <P>:

https://mcuoneclipse.files.wordpress.com/2021/05/c-c-edit-configurations-ui.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/c-c-edit-configurations-ui.jpg?w=300 300w" alt="" class="wp-image-32538" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32538" data-permalink="https://mcuoneclipse.com/c-c-edit-configurations-ui/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/c-c-edit-configurations-ui.jpg" data-orig-size="762,124" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="c-c-edit-configurations-ui" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/c-c-edit-configurations-ui.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/c-c-edit-configurations-ui.jpg?w=584" />

В следующем пользовательском интерфейсе можно настроить все параметры:

https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-configuration.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-configuration.jpg?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-configuration.jpg?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-configuration.jpg 1220w" alt="" class="wp-image-32540" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32540" data-permalink="https://mcuoneclipse.com/intellisense-configuration/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-configuration.jpg" data-orig-size="1220,773" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="intellisense-configuration" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-configuration.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-configuration.jpg?w=584" />

Настройки хранятся в файле .vscode / c_cpp_properties.json внутри проекта. Поэтому вместо использования мастера, описанного выше, просто создайте файл и скопируйте и вставьте шаблон ниже:

{
        "configurations": [
             {
                "name": "CrossARM",
                "includePath": [
                    "${workspaceFolder}/**"
                ],
                "defines": [
                    "CPU_MK22FN512VLH12",
                    "CPU_MK22FN512VLH12_cm4"
                ],
                "forcedInclude": ["${workspaceFolder}/src/IncludeMcuLibConfig.h"],
                "compilerPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2020-q4-major/bin/arm-none-eabi-gcc.exe",
                "cStandard": "c17",
                "cppStandard": "c++17",
                "intelliSenseMode": "gcc-arm"
            }
        ],
        "version": 4
    }
  • name : произвольное имя для конфигурации
  • includePath : перечислите здесь все места, где IntelliSense будет искать файлы заголовков. Он автоматически будет использовать те, которые находятся в инсталляции инструментальной цепочки (компилятора). Обозначение '**' означает, что он будет искать эту папку рекурсивно.
  • define : перечислить все дополнительные определения, которые необходимо учитывать.
  • forceInclude : при использовании параметра компилятора -include убедитесь, что вы указали этот файл здесь
  • compilerPath : путь к исполняемому файлу компилятора.
  • cStandard и cppStandard : используемые стандарты C и C ++
  • intelliSenseMode : используемый режим. 'gcc-arm' считается устаревшим, но не знаете, что использовать в противном случае для ARM?

Применение

Благодаря этому IntelliSense может находить правильные файлы заголовков и определения с помощью используемой инструментальной цепочки. Вы можете проверить это с помощью контекстного меню в стандартной библиотеке, включая (Контекстное меню> Просмотр> Определение ):

https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-peek-definition.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-peek-definition.jpg?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-peek-definition.jpg?w=768 768w" alt="" class="wp-image-32548" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32548" data-permalink="https://mcuoneclipse.com/intellisense-peek-definition/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-peek-definition.jpg" data-orig-size="804,436" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="intellisense-peek-definition" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-peek-definition.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-peek-definition.jpg?w=584" />
Подглядывать за определением

Завершение кода и IntelliSense в целом запускаются <CTRL> + <SPACE>:

https://mcuoneclipse.files.wordpress.com/2021/05/printf-code-completion.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/printf-code-completion.jpg?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/printf-code-completion.jpg?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/printf-code-completion.jpg 1334w" alt="" class="wp-image-32550" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32550" data-permalink="https://mcuoneclipse.com/printf-code-completion/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/printf-code-completion.jpg" data-orig-size="1334,191" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="printf-code-completion" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/printf-code-completion.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/printf-code-completion.jpg?w=584" />
Завершение кода

Вы можете нажать <CTRL>, а затем использовать мышь для перехода к месту: нажмите <CTRL>, наведите на него указатель мыши и щелкните.

Еще одна приятная вещь - предварительный просмотр «скрытно»: удерживайте нажатой кнопку <CTRL> и перемещайте мышь, чтобы увидеть предварительный просмотр этой реализации:

https://mcuoneclipse.files.wordpress.com/2021/05/sneak-preview.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/sneak-preview.jpg?w=300 300w" alt="" class="wp-image-32569" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32569" data-permalink="https://mcuoneclipse.com/sneak-preview/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/sneak-preview.jpg" data-orig-size="684,312" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="sneak-preview" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/sneak-preview.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/sneak-preview.jpg?w=584" />
Ранний предпросмотр

Другой совет - использовать <TAB>: он выберет «наилучшее соответствие» из списка предложений.

https://mcuoneclipse.files.wordpress.com/2021/05/list-of-items.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/list-of-items.jpg?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/list-of-items.jpg?w=768 768w" alt="" class="wp-image-32571" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32571" data-permalink="https://mcuoneclipse.com/list-of-items/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/list-of-items.jpg" data-orig-size="973,282" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="list-of-items" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/list-of-items.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/list-of-items.jpg?w=584" />

Что делает его приятным, так это его осведомленность о документации Doxygen в источниках:

https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-doxygen-awareness.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-doxygen-awareness.jpg?w=300 300w" alt="" class="wp-image-32573" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32573" data-permalink="https://mcuoneclipse.com/intellisense-doxygen-awareness/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-doxygen-awareness.jpg" data-orig-size="570,235" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="intellisense-doxygen-awareness" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-doxygen-awareness.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/intellisense-doxygen-awareness.jpg?w=570" />

Резюме

Visual Studio Code поставляется с мощным механизмом IntelliSense, который легко настраивается с помощью файла JSON. IntelliSense и автозавершение кода делают кодирование намного проще: это * причина * использования IDE, такой как Visual Studio Code.

 

часть 7 - FreeRTOS

Опубликовано 2 июня 2021 г. по Эриха Styger

Это новая статья из моей серии об использовании Microsoft Visual Studio Code : после установки , настройки проекта , сборки , отладки , настройки комплекта и IntelliSense . Это о настройке и использовании FreeRTOS :

https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos.jpg?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos.jpg?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos.jpg 1472w" alt="" class="wp-image-32673" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32673" data-permalink="https://mcuoneclipse.com/visualstudiocode-with-freertos/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos.jpg" data-orig-size="1472,976" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="visualstudiocode-with-freertos" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos.jpg?w=584" />
Код Microsoft Visual Studio с отладкой приложения FreeRTOS на ARM Cortex-M

Контур

FreeRTOS, вероятно, является наиболее часто используемой и распространенной ОСРВ для мира встроенных микроконтроллеров. Его очень легко изучить, он эффективен и, поскольку он широко используется, для него есть инструменты, поддерживающие его.

В этой статье я покажу, как вы можете использовать FreeRTOS и отлаживать его с помощью кода Visual Studio, включая поддержку потоков. Я предполагаю, что вы прочитали мои предыдущие учебные статьи (см. Ссылки в конце этой статьи).

Вы можете найти общие проекты на GitHub: https://github.com/ErichStyger/mcuoneclipse/tree/master/Examples/VisualStudioCode . В этой статье я использую FRDM-K22F_Blinky.

Настраивать

Во-первых, добавьте в свой проект McuLib с FreeRTOS, который включает FreeRTOS:

https://mcuoneclipse.files.wordpress.com/2021/05/mculib-with-freertos.jpg?w=115 115w, https://mcuoneclipse.files.wordpress.com/2021/05/mculib-with-freertos.jpg?w=230 230w, https://mcuoneclipse.files.wordpress.com/2021/05/mculib-with-freertos.jpg?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/mculib-with-freertos.jpg 790w" alt="" class="wp-image-32685" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32685" data-permalink="https://mcuoneclipse.com/mculib-with-freertos/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/mculib-with-freertos.jpg" data-orig-size="790,1032" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="mculib-with-freertos" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/mculib-with-freertos.jpg?w=230" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/mculib-with-freertos.jpg?w=584" />
McuLib с FreeRTOS

В ваш CMakeLists.txt добавьте исходные файлы FreeRTOS:

https://mcuoneclipse.files.wordpress.com/2021/05/rtos-source-files.jpg?w=122 122w, https://mcuoneclipse.files.wordpress.com/2021/05/rtos-source-files.jpg?w=245 245w" alt="" class="wp-image-32687" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32687" data-permalink="https://mcuoneclipse.com/rtos-source-files/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/rtos-source-files.jpg" data-orig-size="682,836" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="rtos-source-files" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/rtos-source-files.jpg?w=245" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/rtos-source-files.jpg?w=584" />
Исходные файлы RTOS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
McuLib/src/McuRTOS.c
 
McuLib/FreeRTOS/FreeRTOShooks.c
McuLib/FreeRTOS/Source/croutine.c
McuLib/FreeRTOS/Source/event_groups.c
McuLib/FreeRTOS/Source/list.c
McuLib/FreeRTOS/Source/queue.c
McuLib/FreeRTOS/Source/stream_buffer.c
McuLib/FreeRTOS/Source/tasks.c
McuLib/FreeRTOS/Source/timers.c
McuLib/FreeRTOS/Source/portable/MemMang/heap_1.c
McuLib/FreeRTOS/Source/portable/MemMang/heap_2.c
McuLib/FreeRTOS/Source/portable/MemMang/heap_3.c
McuLib/FreeRTOS/Source/portable/MemMang/heap_4.c
McuLib/FreeRTOS/Source/portable/MemMang/heap_5.c
McuLib/FreeRTOS/Source/portable/MemMang/heap_useNewlib.c
McuLib/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c
McuLib/FreeRTOS/Source/portable/GCC/ARM_CM4F/portasm.s

Перечислите каталоги включения RTOS:

https://mcuoneclipse.files.wordpress.com/2021/05/rtos-includes.jpg?w=137 137w, https://mcuoneclipse.files.wordpress.com/2021/05/rtos-includes.jpg?w=275 275w" alt="" class="wp-image-32689" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32689" data-permalink="https://mcuoneclipse.com/rtos-includes/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/rtos-includes.jpg" data-orig-size="664,725" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="rtos-includes" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/rtos-includes.jpg?w=275" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/rtos-includes.jpg?w=584" />
1
2
McuLib/FreeRTOS/Source/include
McuLib/FreeRTOS/Source/portable/GCC/ARM_CM4F

Обновите конфигурацию, чтобы включить FreeRTOS:

https://mcuoneclipse.files.wordpress.com/2021/05/freertos-configuration.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/freertos-configuration.jpg?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/freertos-configuration.jpg?w=768 768w" alt="" class="wp-image-32691" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32691" data-permalink="https://mcuoneclipse.com/freertos-configuration/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/freertos-configuration.jpg" data-orig-size="796,696" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="freertos-configuration" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/freertos-configuration.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/freertos-configuration.jpg?w=584" />
Конфигурация FreeRTOS
1
2
3
4
5
6
/* ------------------- RTOS ---------------------------*/
#define McuLib_CONFIG_SDK_USE_FREERTOS              (1)
#define configTOTAL_HEAP_SIZE                       (24*1024)
#define configUSE_HEAP_SECTION_NAME                 (1)
#define configHEAP_SECTION_NAME_STRING              ".bss.$SRAM_LOWER.FreeRTOS"
#define configQUEUE_REGISTRY_SIZE                   (10)

При этом соберите приложение и добавьте задачи по мере необходимости.

Отладка с помощью FreeRTOS Thread Awareness

Я использую SEGGER J-Link для отладки. У него есть возможность включить поддержку потоков FreeRTOS. Добавьте в файл launch.json следующее :

1
"rtos": "FreeRTOS"
https://mcuoneclipse.files.wordpress.com/2021/05/freertos-awareness-for-j-link-debug-connection.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/freertos-awareness-for-j-link-debug-connection.jpg?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/freertos-awareness-for-j-link-debug-connection.jpg?w=768 768w" alt="" class="wp-image-32695" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32695" data-permalink="https://mcuoneclipse.com/freertos-awareness-for-j-link-debug-connection/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/freertos-awareness-for-j-link-debug-connection.jpg" data-orig-size="801,541" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="freertos-awareness-for-j-link-debug-connection" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/freertos-awareness-for-j-link-debug-connection.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/freertos-awareness-for-j-link-debug-connection.jpg?w=584" />
Осведомленность о FreeRTOS для подключения отладки J-Link

Благодаря этому я могу выполнять отладку со всеми перечисленными потоками FreeRTOS:

https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos-1.jpg?w=150 150w, https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos-1.jpg?w=300 300w, https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos-1.jpg?w=768 768w, https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos-1.jpg 1472w" alt="" class="wp-image-32698" style="border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; padding: 6px; border-radius: inherit;" data-attachment-id="32698" data-permalink="https://mcuoneclipse.com/2021/06/02/visual-studio-code-for-c-c-with-arm-cortex-m-part-7-freertos/visualstudiocode-with-freertos-2/" data-orig-file="https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos-1.jpg" data-orig-size="1472,976" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="VisualStudioCode with FreeRTOS" data-image-description data-medium-file="https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos-1.jpg?w=300" data-large-file="https://mcuoneclipse.files.wordpress.com/2021/05/visualstudiocode-with-freertos-1.jpg?w=584" />

Резюме

В коде Visual Studio есть базовая поддержка FreeRTOS, включая поддержку потоков. Конечно, это не на должном уровне с поддержкой отладки FreeRTOS, которую вы получаете в бесплатных IDE на основе Eclipse, таких как NXP MCUXpresso IDE, но этого достаточно для отладки приложений FreeRTOS на любом ARM Cortex.

LINKS

  • Visual Studio Code for C/C++ with ARM Cortex-M: Part 1 – Installation
  • Visual Studio Code for C/C++ with ARM Cortex-M: Part 2 – Project
  • Visual Studio Code for C/C++ with ARM Cortex-M: Part 3 – Build
  • Visual Studio Code for C/C++ with ARM Cortex-M: Part 4 – Debug
  • Visual Studio Code for C/C++ with ARM Cortex-M: Part 5 – ToolKit
  • Visual Studio Code for C/C++ with ARM Cortex-M: Part 6 – IntelliSense
  • Visual Studio Code for C/C++ with ARM Cortex-M: Part 7 – FreeRTOS
  • Visual Studio Code website: https://code.visualstudio.com/
  • IntelliSense: https://code.visualstudio.com/docs/editor/intellisense
  • Intellisense for Cross Development: https://code.visualstudio.com/docs/cpp/configure-intellisense-crosscompilation
  • Examples on GitHub: https://github.com/ErichStyger/mcuoneclipse/tree/master/Examples/VisualStudioCode

ARM toolchain для Windows

  • Источник: Открыть сайт

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

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

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

CMake

Перейти на CMake сайт «s и нажмите кнопку скачать . На следующей странице прокрутите вниз до последней версии и выберите 64-разрядный cmake-...-win64-x64.msiвариант.

  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-download-0-300x217.pnghttps://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-download-0-768x555.png 768w" alt="" width="983" height="710" " />
  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-download-1-150x125.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-download-1-300x250.png 300w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-download-1-768x640.png 768w" alt="" width="983" height="819" class="wp-image-879" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="879" data-link="https://distortos.org/?attachment_id=879" />

Запускаем скачанный установщик. Для большинства шагов вы можете оставить параметры по умолчанию без изменений. Просто убедитесь, что вы выбрали Добавить CMake в системный PATH для всех пользователей (или только для текущего пользователя, в зависимости от того, что вы предпочитаете). Вы также можете установить флажок «Создать значок CMake на рабочем столе» . Я настоятельно рекомендую оставить папку установки по умолчанию, но если вам действительно нужно изменить ее, постарайтесь сделать ее краткой и простой.

  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-0-150x117.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-0-300x235.png 300w" alt="" width="495" height="387" class="wp-image-880" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="880" data-link="https://distortos.org/?attachment_id=880" />
  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-1-150x117.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-1-300x235.png 300w" alt="" width="495" height="387" class="wp-image-881" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="881" data-link="https://distortos.org/?attachment_id=881" />
  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-2-150x117.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-2-300x235.png 300w" alt="" width="495" height="387" class="wp-image-882" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="882" data-link="https://distortos.org/?attachment_id=882" />
  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-3-150x117.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-3-300x235.png 300w" alt="" width="495" height="387" class="wp-image-883" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="883" data-link="https://distortos.org/?attachment_id=883" />
  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-4-150x117.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-4-300x235.png 300w" alt="" width="495" height="387" class="wp-image-884" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="884" data-link="https://distortos.org/?attachment_id=884" />
  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-5-150x137.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-5-300x273.png 300w" alt="" width="456" height="415" class="wp-image-890" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="890" data-link="https://distortos.org/?attachment_id=890" />
  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-6-150x117.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-6-300x235.png 300w" alt="" width="495" height="387" class="wp-image-886" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="886" data-link="https://distortos.org/?attachment_id=886" />
  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-7-150x117.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-cmake-install-7-300x235.png 300w" alt="" width="495" height="387" class="wp-image-887" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="887" data-link="https://distortos.org/?attachment_id=887" />

Ниндзя

Загрузите самую последнюю версию системы сборки Ninja с ее главного веб-сайта. Внизу страницы - рядом с Getting Ninja - будет ссылка для загрузки двоичного файла Ninja, которая приведет вас к выпускам GitHub . Загрузите пакет ninja-win.zip Windows из последней версии вверху.

  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-download-0-150x138.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-download-0-300x277.png 300w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-download-0-768x709.png 768w" alt="" width="935" height="863" class="wp-image-892" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="892" data-link="https://distortos.org/?attachment_id=892" />
  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-download-1-150x138.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-download-1-300x277.png 300w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-download-1-768x709.png 768w" alt="" width="935" height="863" class="wp-image-893" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="893" data-link="https://distortos.org/?attachment_id=893" />

Откройте проводник , перейдите в папку с загруженным файлом и дважды щелкните по нему - откроется его содержимое. Вверху окна щелкните вкладку « Извлечь », чтобы отобразить больше кнопок, а затем нажмите « Извлечь все» . Извлеките его куда угодно, например, C:\ninjaчтобы путь был коротким и простым.

  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-extract-0-150x95.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-extract-0-300x191.png 300w" alt="" width="764" height="486" class="wp-image-894" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="894" data-link="https://distortos.org/?attachment_id=894" />
  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-extract-1-150x95.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-extract-1-300x191.png 300w" alt="" width="764" height="486" class="wp-image-895" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="895" data-link="https://distortos.org/?attachment_id=895" />
  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-extract-2-150x95.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-extract-2-300x191.png 300w" alt="" width="764" height="486" class="wp-image-896" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="896" data-link="https://distortos.org/?attachment_id=896" />
  • https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-extract-3-150x111.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-ninja-extract-3-300x222.png 300w" alt="" width="614" height="454" class="wp-image-897" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="897" data-link="https://distortos.org/?attachment_id=897" />

передовой набор инструментов

Загрузите самый последний пакет bleeding-edge-toolchain для 64-битной Windows . Распакуйте его где-нибудь с помощью 7-Zip - я бы снова порекомендовал короткий и простой путь (без пробелов, необычных символов и т. Д.), Например, прямо на вашем C:\разделе. Перейдите к загруженному файлу с помощью проводника , щелкните его правой кнопкой мыши и выберите 7-Zip> Извлечь файлы… . В появившемся окне введите путь назначения в поле « Извлечь в» , убедитесь, что флажок ниже не установлен, нажмите « ОК» и дождитесь завершения процесса извлечения.

  • https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-bleeding-edge-toolchain-download-150x144.png 150w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-bleeding-edge-toolchain-download-300x288.png 300w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-bleeding-edge-toolchain-download-768x737.png 768w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-bleeding-edge-toolchain-download-1024x983.png 1024w" alt="" width="1050" height="1008" class="wp-image-427" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="427" />
  • https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-bleeding-edge-toolchain-extract-0-150x85.png 150w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-bleeding-edge-toolchain-extract-0-300x169.png 300w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-bleeding-edge-toolchain-extract-0-768x433.png 768w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-bleeding-edge-toolchain-extract-0-1024x577.png 1024w" alt="" width="1125" height="634" class="wp-image-428" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="428" />
  • https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-bleeding-edge-toolchain-extract-1-150x92.png 150w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-bleeding-edge-toolchain-extract-1-300x185.png 300w" alt="" width="530" height="326" class="wp-image-429" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="429" />
  • https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-bleeding-edge-toolchain-extract-2-150x96.png 150w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-bleeding-edge-toolchain-extract-2-300x193.png 300w" alt="" width="566" height="364" class="wp-image-430" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="430" />

Добавить инструменты в переменную среды PATH

Чтобы использовать установленные инструменты из командной строки или IDE, вам необходимо добавить папки с исполняемыми файлами в переменную среды PATH вашей системы. Откройте меню « Пуск» , введите control panelи откройте приложение, которое было найдено с тем же именем. Теперь щелкните Система и безопасность, а затем Система . Слева нажмите Дополнительные параметры системы . Затем нажмите кнопку « Переменные среды…» в нижней части появившегося окна « Свойства системы» . Не имеет большого значения, изменяете ли вы переменную среды PATH (верхний фрейм) или общесистемную переменную PATH.переменная окружения (нижний фрейм). Для простоты давайте придерживаться переменных среды пользователя. Выберите переменную Path (или PATH ) из списка и нажмите кнопку Edit… .

  • https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-start-control-panel-86x150.png 86w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-start-control-panel-173x300.png 173w" alt="" width="392" height="680" class="wp-image-409" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="409" data-link="https://distortos.org/documentation/arm-toolchain-windows-v0-1-0-v0-6-0/attachment/toolchain-win10-start-control-panel/" />
  • https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-control-panel-150x85.png 150w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-control-panel-300x169.png 300w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-control-panel-768x433.png 768w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-control-panel.png 1125w" alt="" width="1024" height="577" class="wp-image-410" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="410" data-link="https://distortos.org/documentation/arm-toolchain-windows-v0-1-0-v0-6-0/attachment/toolchain-win10-control-panel/" />
  • https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-system-and-security-150x85.png 150w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-system-and-security-300x169.png 300w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-system-and-security-768x433.png 768w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-system-and-security.png 1125w" alt="" width="1024" height="577" class="wp-image-411" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="411" data-link="https://distortos.org/documentation/arm-toolchain-windows-v0-1-0-v0-6-0/attachment/toolchain-win10-system-and-security/" />
  • https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-system-1-150x85.png 150w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-system-1-300x169.png 300w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-system-1-768x433.png 768w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-system-1.png 1125w" alt="" width="1024" height="577" class="wp-image-414" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="414" data-link="https://distortos.org/documentation/arm-toolchain-windows-v0-1-0-v0-6-0/attachment/toolchain-win10-system-1/" />
  • https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-system-properties-132x150.png 132w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-system-properties-264x300.png 264w" alt="" width="412" height="468" class="wp-image-415" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="415" data-link="https://distortos.org/documentation/arm-toolchain-windows-v0-1-0-v0-6-0/attachment/toolchain-win10-system-properties/" />
  • https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-environment-variables-150x142.png 150w, https://distortos.org/wp-content/uploads/2016/12/toolchain-win10-environment-variables-300x284.png 300w" alt="" width="618" height="585" class="wp-image-416" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="416" data-link="https://distortos.org/documentation/arm-toolchain-windows-v0-1-0-v0-6-0/attachment/toolchain-win10-environment-variables/" />

Редактирование PATH в последних версиях Windows

https://distortos.org/wp-content/uploads/2018/04/toolchain-win10-edit-environment-variable-0-150x143.png 150w, https://distortos.org/wp-content/uploads/2018/04/toolchain-win10-edit-environment-variable-0.png 527w" alt="" width="300" height="285" class="wp-image-621" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Новые версии Windows предоставляют пользователю расширенное окно редактирования переменных среды с многострочным полем редактирования и девятью кнопками.

https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-edit-environment-variable-1-89x150.png 89w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-edit-environment-variable-1.png 328w" alt="" width="178" height="300" class="wp-image-872" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Нажмите « Создать», а затем « Обзор…», чтобы легко перейти к нужной папке. В группе « Этот компьютер » найдите папку с префиксом исполняемых файлов bleeding-edge-toolchain , которая представляет собой папку, в которую вы ее извлекли, за которой следует \bin что-то вроде C:\arm-none-eabi-gcc-...-...\bin(например C:\arm-none-eabi-gcc-9.1.0-190503\bin), если вы извлекли архив непосредственно C:\. Выберите эту папку и нажмите ОК .

https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-edit-environment-variable-2-150x143.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-edit-environment-variable-2.png 527w" alt="" width="300" height="285" class="wp-image-873" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Повторите процесс из предыдущего абзаца для папки, в которой хранится ninja.exeфайл (например C:\ninja).

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

Нажмите ОК и закройте все открытые окна.

Редактирование PATH в старых версиях Windows

https://distortos.org/wp-content/uploads/2018/04/toolchain-win10-edit-user-variable-0-150x38.png 150w, https://distortos.org/wp-content/uploads/2018/04/toolchain-win10-edit-user-variable-0.png 653w" alt="" width="300" height="76" class="wp-image-619" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Более старые версии Windows предоставляют пользователю очень простое окно под названием « Редактировать пользовательскую переменную» или « Редактировать системную переменную» . Он содержит только две текстовые ( имя переменной и значение переменной ) и четыре кнопки.

Поместите курсор в конец содержимого поля значения переменной и убедитесь, что ;в конце есть одна точка с запятой ( ). Теперь введите путь к исполняемым файлам с префиксом bleeding-edge-toolchain , то есть к папке, в которую вы ее извлекли, а затем \bin - что-то вроде C:\arm-none-eabi-gcc-...-...\bin(например C:\arm-none-eabi-gcc-9.1.0-190503\bin), если вы извлекли архив непосредственно в C:\.

https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-edit-user-variable-1-150x34.png 150w, https://distortos.org/wp-content/uploads/2019/05/toolchain-win10-edit-user-variable-1.png 733w" alt="" width="300" height="68" class="wp-image-874" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Через точку с запятой следует добавить путь к папке с ninja.exeисполняемым файлом (например C:\ninja).

Нажмите ОК и закройте все открытые окна.

OpenOCD

Если вы не планируете отлаживать свое приложение на реальном оборудовании, вы можете пропустить этот раздел.

Загрузите самый последний пакет с  двоичными файлами Windows OpenOCD и извлеките его куда-нибудь, например -  а теперь для чего-то совершенно другого  - прямо в C:\. Кто мог ожидать этого…?

Комплект разработчика Java SE

Если вы не собираетесь использовать Eclipse в качестве IDE, вы можете пропустить этот раздел.

Чтобы использовать Eclipse IDE, вам также понадобится Java SE Development Kit . Загрузите последнюю версию автономного установщика ( jdk-..._windows-x64_bin.exe). Не забудьте установить переключатель рядом с « Принять лицензионное соглашение» . После завершения загрузки запустите установщик и следуйте инструкциям на экране.

  • https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-jdk-download-150x145.png 150w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-jdk-download-300x289.png 300w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-jdk-download-768x741.png 768w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-jdk-download.png 1041w" alt="" width="1024" height="988" class="wp-image-988" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="988" data-link="https://distortos.org/?attachment_id=988" />
  • https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-jdk-install-0-150x114.png 150w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-jdk-install-0-300x229.png 300w" alt="" width="500" height="381" class="wp-image-989" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="989" data-link="https://distortos.org/?attachment_id=989" />
  • https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-jdk-install-1-150x114.png 150w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-jdk-install-1-300x229.png 300w" alt="" width="500" height="381" class="wp-image-990" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="990" data-link="https://distortos.org/?attachment_id=990" />
  • https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-jdk-install-2-150x114.png 150w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-jdk-install-2-300x229.png 300w" alt="" width="500" height="381" class="wp-image-991" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="991" data-link="https://distortos.org/?attachment_id=991" />

После установки вам также нужно будет добавить папку с javaw.exeисполняемым файлом в PATHпеременную окружения. Предполагая, что каталог установки по умолчанию, добавленная папка C:\Program Files\Java\jdk-...\bin(например C:\Program Files\Java\jdk-12.0.1\bin). См. Соответствующую главу выше для получения подробных инструкций по редактированию PATHпеременной среды.

Затмение

Вы можете пропустить этот раздел, если не собираетесь использовать Eclipse в качестве IDE.

Посетите веб-сайт Eclipse и нажмите кнопку « Загрузить» вверху страницы. В строке Tool Platforms на следующей странице щелкните ссылку Download Packages . Чтобы загрузить zip-архив с самой последней версией, щелкните ссылку Windows 64-bit в строке Eclipse IDE для разработчиков C / C ++, а затем нажмите кнопку « Загрузить» на следующей странице.

  • https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-0-150x118.png 150w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-0-300x235.png 300w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-0-768x602.png 768w" alt="" width="1019" height="799" class="wp-image-997" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="997" data-link="https://distortos.org/?attachment_id=997" />
  • https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-1-150x118.png 150w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-1-300x235.png 300w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-1-768x602.png 768w" alt="" width="1019" height="799" class="wp-image-998" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="998" data-link="https://distortos.org/?attachment_id=998" />
  • https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-2-150x145.png 150w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-2-300x289.png 300w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-2-768x740.png 768w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-2.png 1100w" alt="" width="1024" height="987" class="wp-image-999" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="999" data-link="https://distortos.org/?attachment_id=999" />
  • https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-3-150x145.png 150w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-3-300x289.png 300w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-3-768x740.png 768w, https://distortos.org/wp-content/uploads/2019/06/toolchain-win10-eclipse-download-3.png 1100w" alt="" width="1024" height="987" class="wp-image-1000" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="1000" data-link="https://distortos.org/?attachment_id=1000" />

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

https://distortos.org/documentation/arm-toolchain-windows/" data-a2a-title="ARM toolchain for Windows">
  • Средства разработки

Создание и настройка проекта в Eclipse

  • Источник: Открыть сайт

Эта статья в основном не зависит от системы, и шаги будут идентичны в 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 . Поскольку здесь больше нечего настраивать, нажмите « Готово», чтобы закрыть диалоговое окно и создать проект.

https://distortos.org/wp-content/uploads/2018/04/eclipse-file-new-project-300x226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-file-new-project-768x579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-file-new-project.png 1010w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-new-project-0-300x258.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-new-project-0.png 511w" alt="" width="150" height="129" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-new-project-1-300x300.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-new-project-1.png 530w" alt="" width="150" height="150" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

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

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

.7z

для Windows или

.tar.xz

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

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

distortosTemplateSubfolder-ГГГГММДД

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

https://distortos.org/wp-content/uploads/2017/01/eclipse-file-import-300x226.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-file-import-768x579.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-file-import.png 1010w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2017/01/eclipse-import-select-282x300.png 282w, https://distortos.org/wp-content/uploads/2017/01/eclipse-import-select.png 511w" alt="" width="141" height="150" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2017/01/eclipse-import-file-system-298x300.png 298w, https://distortos.org/wp-content/uploads/2017/01/eclipse-import-file-system.png 609w" alt="" width="150" height="150" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2017/01/eclipse-import-from-directory-251x300.png 251w, https://distortos.org/wp-content/uploads/2017/01/eclipse-import-from-directory.png 329w" alt="" width="125" height="150" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2017/01/eclipse-import-into-folder-271x300.png 271w, https://distortos.org/wp-content/uploads/2017/01/eclipse-import-into-folder.png 356w" alt="" width="136" height="150" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

конфигурация 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" />

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

https://distortos.org/wp-content/uploads/2017/01/eclipse-menuconfig-1-300x186.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-menuconfig-1-768x476.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-menuconfig-1-825x510.png 825w, https://distortos.org/wp-content/uploads/2017/01/eclipse-menuconfig-1.png 826w" alt="" width="150" height="93" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2017/01/eclipse-menuconfig-2-300x186.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-menuconfig-2-768x476.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-menuconfig-2-825x510.png 825w, https://distortos.org/wp-content/uploads/2017/01/eclipse-menuconfig-2.png 826w" alt="" width="150" height="93" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2017/01/eclipse-menuconfig-3-300x186.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-menuconfig-3-768x476.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-menuconfig-3-825x510.png 825w, https://distortos.org/wp-content/uploads/2017/01/eclipse-menuconfig-3.png 826w" alt="" width="150" height="93" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2017/01/eclipse-command-prompt-2-300x182.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-command-prompt-2-768x466.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-command-prompt-2.png 843w" alt="" width="150" height="91" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

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

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

https://distortos.org/wp-content/uploads/2017/01/eclipse-project-build-all-300x213.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-project-build-all-768x546.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-project-build-all.png 1022w" alt="" width="150" height="107" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2017/01/eclipse-building-workspace-300x213.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-building-workspace-768x546.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-building-workspace.png 1022w" alt="" width="150" height="107" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2017/01/eclipse-build-finished-300x213.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-build-finished-768x546.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-build-finished.png 1022w" alt="" width="150" height="107" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

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

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

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

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

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

-I

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

-D

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

https://distortos.org/wp-content/uploads/2017/01/eclipse-project-properties-300x213.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-project-properties-768x546.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-project-properties.png 1022w" alt="" width="150" height="107" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-properties-c-cpp-build-300x205.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-properties-c-cpp-build-768x524.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-properties-c-cpp-build.png 804w" alt="" width="150" height="102" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

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

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

https://distortos.org/wp-content/uploads/2017/01/eclipse-project-clean-300x213.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-project-clean-768x546.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-project-clean.png 1022w" alt="" width="150" height="107" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2017/01/eclipse-clean-300x229.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-clean.png 486w" alt="" width="150" height="115" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

Перейдите на вкладку 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 .

https://distortos.org/wp-content/uploads/2017/01/eclipse-file-properties-300x213.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-file-properties-768x546.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-file-properties.png 1022w" alt="" width="150" height="107" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2017/01/eclipse-file-properties-cdt-cross-gcc-built-in-compiler-settings-300x201.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-file-properties-cdt-cross-gcc-built-in-compiler-settings-768x514.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-file-properties-cdt-cross-gcc-built-in-compiler-settings.png 821w" alt="" width="150" height="100" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2017/01/eclipse-file-properties-cdt-gcc-build-output-parser-300x201.png 300w, https://distortos.org/wp-content/uploads/2017/01/eclipse-file-properties-cdt-gcc-build-output-parser-768x514.png 768w, https://distortos.org/wp-content/uploads/2017/01/eclipse-file-properties-cdt-gcc-build-output-parser.png 821w" alt="" width="150" height="100" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

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

  • Средства разработки

Настройка отладки в Eclipse для микроконтроллеров ARM

  • Источник: Открыть сайт

Плагин отладки

Прежде чем мы продолжим, вам необходимо установить плагин аппаратной отладки C / C ++ GDB для Eclipse . Щелкните меню « Справка» и выберите « Установить новое программное обеспечение…», чтобы открыть окно с названием « Установить» . В этом окне из раскрывающегося списка Работа с выберите самый последний сайт обновления CDT - это будет запись типа

CDT - http://download.eclipse.org/tools/cdt/releases/XY

 (например 

CDT - http://download.eclipse.org/tools/cdt/releases/9.4

) или что-то очень похожее, в зависимости от версии Eclipse . Поместите курсор в текстовое поле фильтра - то, которое имеет серый

введите текст фильтра

, чуть ниже Работа с ярлыком - и введите

GDB

там. Через некоторое время вы должны увидеть несколько предложений - установите флажок рядом с C / C ++ GDB Hardware Debugging в группе CDT Optional Features и нажмите Next в нижней части окна. На следующем шаге - « Сведения об установке» - просто снова нажмите « Далее» . На последнем этапе - Просмотр лицензий - вы должны выбрать Я принимаю условия лицензионного соглашения (очевидно, после того, как вы внимательно его прочитали, полностью поняли и проконсультировались со своими юристами - это то, что мы все делаем, когда сталкиваемся со стеной непонятного юридический текст (;) и нажмите Готово. Процесс установки плагина займет некоторое время (прогресс будет отображаться в строке состояния в нижней части окна Eclipse ), и когда он завершится, вам будет предложено перезапустить Eclipse - подтвердите с помощью Restart Now, и все готово. этот шаг.

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-0-300x226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-0-768x579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-0.png 1010w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-1-300x224.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-1-768x574.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-1.png 869w" alt="" width="150" height="112" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-2-300x224.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-2-768x574.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-2.png 869w" alt="" width="150" height="112" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-3-300x224.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-3-768x574.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-3.png 869w" alt="" width="150" height="112" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-4-300x224.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-4-768x574.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-4.png 869w" alt="" width="150" height="112" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-5-300x82.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-5.png 518w" alt="" width="150" height="41" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

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

Если вы никогда не выполняли отладку в текущей установке Eclipse , перспектива отладки не будет видна. Перспектива в Eclipse , является расположение панелей, вкладок, кнопок и так далее - все предыдущие скриншоты были сделаны в настройки по умолчанию для C / C ++ перспектива, которая состоит из Project Explorer , слева, редактор в центре, Outline справа и различные вкладки ( Проблемы , Консоль ,…) внизу. За небольшими исключениями (строка меню и панель инструментов вверху) перспектива влияет почти на все, что вы видите. Чтобы открыть перспективу отладки, щелкнитеОкно> Перспектива> Открыть перспективу> Отладка . После открытия вы можете быстро переключаться между перспективами, используя маленькие кнопки в правой части панели инструментов (справа от текстового поля быстрого доступа ) - первая (со знаком плюс) используется для открытия других перспектив, следующая ( с буквой C внутри квадрата) - это перспектива C / C ++, а последняя (зеленая ошибка) - перспектива отладки .

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

В перспективе Debug Project Explorer вообще не виден, редактор, Outline и панель с различными вкладками ( Console , Problems ,…) перемещены немного ниже, а верхняя часть окна занята вкладкой Debug слева (это здесь будет отображаться стек вызовов), а правая часть зарезервирована для таких вкладок, как переменные , точки останова , регистры , выражения и некоторые другие.

Настройка и запуск OpenOCD

На самом деле это самая сложная часть всего процесса, поскольку точная процедура немного отличается для каждой платы или комбинации отладочного интерфейса с целевой микросхемой. В этом абзаце мы будем использовать плату STM32F4DISCOVERY , поэтому для другой настройки вам необходимо соответствующим образом настроить некоторые конфигурации. Также стоит отметить, что драйверы для интерфейса отладки - так что в случае нашей платы это будет ST-LINK / V2 - должны быть установлены в вашей системе (если еще не установлены), в противном случае действия, описанные далее в этой главе, будут не работать.

OpenOCD работает как удаленный сервер GDB , поэтому по сути является посредником между отладчиком GDB и оборудованием. Всякий раз, когда вы хотите начать сеанс отладки, OpenOCD должен работать в фоновом режиме. Если ваш сеанс отладки завершается, вам не нужно закрывать или перезапускать OpenOCD - он может продолжать работать в фоновом режиме столько, сколько потребуется. OpenOCD также не обязательно запускать через Eclipse - вы можете запустить его вручную в эмуляторе терминала, если хотите. Фактически - OpenOCD даже не нужно запускать на том же компьютере, что и ваш отладчик, если он доступен по сети. Но вернемся к основной теме ...

В Eclipse есть функция External Tools , которая позволяет запускать любой исполняемый файл, который вам нравится, прямо из IDE . Это то, что мы будем использовать для запуска OpenOCD . Чтобы создать новую конфигурацию, выберите «Выполнить»> «Внешние инструменты»> «Конфигурации внешних инструментов…» , в списке слева выберите « Программа» и нажмите кнопку « Новая конфигурация запуска» (лист бумаги со знаком плюса, первый слева над списком). В качестве альтернативы вы можете просто дважды щелкнуть элемент « Программа» в левом списке.

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-0-300x226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-0-768x579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-0.png 1010w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-1-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-1-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-1.png 800w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-2-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-2-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-2.png 800w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

Выберите программу, которая будет выполняться, с помощью кнопки « Обзор файловой системы…» в группе « Местоположение » на вкладке « Главное ». Перейдите в папку с двоичным файлом OpenOCD (т.е.

С: \ openocd- 0.10 . 0 \ bin-x64

для 64-битной Windows ,

/ usr / bin

для Linux ) выберите исполняемый файл (

openocd. EXE

для Windows ,

openocd

для Linux ) и нажмите Открыть, чтобы закрыть окно. Поместите курсор в текстовое поле Аргументы внизу вкладки Main и введите любые аргументы, которые должны быть переданы в OpenOCD - в случае платы STM32F4DISCOVERY это будет просто

-f доска / stm32f4discovery. cfg

. На этом этапе вы также можете изменить имя конфигурации запуска по умолчанию.

New_configuration

к чему-то более информативному. Лично я называю конфигурации либо

openocd + < доска >

 или же 

openocd + < интерфейс > + < цель >

, поэтому в данном случае я назвал его 

openocd + stm32f4discovery

. Вы можете сохранить текущее состояние конфигурации, нажав кнопку Применить .

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-3-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-3-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-3.png 800w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-4-300x179.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-4.png 764w" alt="" width="150" height="90" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-5-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-5-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-5.png 800w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

Фактически, на данный момент конфигурация уже может использоваться, но есть лишь несколько незначительных вещей, которые стоит настроить. Перейдите на вкладку « Сборка » и снимите флажок « Сборка перед запуском» . Сборка вашего проекта перед запуском OpenOCD полезна, если вы хотите использовать OpenOCD для программирования чипа, но в случае типичного сеанса отладки здесь нет необходимости (мы вернемся к этому позже - в главе о конфигурациях GDB ). На вкладке « Общие » в группе « Сохранить как » вы можете выбрать, будет ли эта конфигурация запуска сохраняться в конфигурации рабочего пространства Eclipse - это называется локальным файлом. (вводит в заблуждение, если вы спросите меня) - или как обычный файл с именем 

< имя > .launch

где-нибудь в рабочей области - это называется Общий файл . Моя личная практика - использовать второй вариант, сохранить файл в папке проекта и создать резервную копию с помощью системы контроля версий (например, git ). При таком подходе очень легко переносить проект и его конфигурации запуска между разными компьютерами. Также возможно копировать такой файл конфигурации запуска между разными проектами - в 99,666% случаев конфигурации запуска OpenOCD зависят только от оборудования (они не имеют частей для конкретного проекта). Для этого выберите Общий файл в группе « Сохранить как », нажмите кнопку « Обзор…» справа от этого параметра, выберите папку своего проекта ( теств нашем примере) и нажмите ОК . Для облегчения доступа к этой конфигурации запуска вы также можете выбрать пункт « Внешние инструменты» в меню « Отображать в избранном» . Снова сохраните конфигурацию ( кнопка « Применить» ) и нажмите « Выполнить», чтобы протестировать ее.

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-6-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-6-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-6.png 800w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-7-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-7-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-7.png 800w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-8-300x243.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-8.png 348w" alt="" width="150" height="122" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-9-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-9-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-9.png 800w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

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

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-10-300x217.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-10.png 527w" alt="" width="150" height="108" class="alignnone size-thumbnail wp-image-661" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

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

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

Когда имя конфигурации запуска и имя исполняемого файла имеют префикс <terminated> , это означает, что OpenOCD не может успешно запуститься из-за какой-либо проблемы. В этом случае некоторая информация о первопричине такой проблемы будет напечатана на вкладке « Консоль ».

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

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

Оставьте OpenOCD включенным, так как он нам понадобится в следующей главе.

Настройка и запуск GDB

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

Щелкните Выполнить> Конфигурации отладки… , в появившемся окне выберите « Отладка оборудования GDB» слева и нажмите кнопку « Новая конфигурация запуска» над списком. Как и раньше, вместо использования кнопки « Новая конфигурация запуска» вы можете дважды щелкнуть элемент « Аппаратная отладка GDB» в списке, чтобы добиться того же эффекта.

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-0-300x226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-0-768x579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-0.png 1010w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-1-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-1-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-1.png 800w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-2-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-2-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-2.png 800w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

В новой конфигурации, которую мы создали, должны быть уже заполнены текстовые поля Project и C / C ++ Application на вкладке Main . Если они пусты - не паникуйте ! Сначала используйте кнопку « Обзор» рядом с полем « Проект», чтобы выбрать наш тестовый проект, а затем нажмите « Поиск проекта…» под приложением C / C ++, чтобы найти

.elf

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

.elf

файл, который нужно искать. Перед запуском группы выберите переключатель « Включить автоматическую сборку » в группе « Сборка» (при необходимости) .

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-3-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-3-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-3.png 800w" alt="" width="150" height="113" class="alignnone size-thumbnail wp-image-698" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Перейдите на вкладку отладчик . Поместите курсор в текстовое поле GDB Command и замените значение по умолчанию на

рука-none-eabi-gdb

(это имя исполняемого файла отладчика). Вам также необходимо изменить номер порта на 3333.

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-4-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-4-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-4.png 800w" alt="" width="150" height="113" class="alignnone size-thumbnail wp-image-676" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

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

остановка сброса монитора

там. Если интересно -

монитор

- это команда GDB, которая передает свои аргументы удаленному серверу GDB (в данном случае - OpenOCD ), а

сбросить остановку

- это команда OpenOCD, которая, как ни странно, сбрасывает и останавливает чип (; Прокрутите страницу вниз, установите флажок слева от Установить точку останова в и введите

основной

в текстовое поле справа. Также установите флажок рядом с « Возобновить» .

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-5-281x300.png 281w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-5-768x821.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-5.png 800w" alt="" width="140" height="150" class="alignnone size-thumbnail wp-image-678" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Идея с последней вкладкой - Common - идентична идее для OpenOCD , поэтому повторять здесь описание нет смысла.

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-6-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-6-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-6.png 800w" alt="" width="150" height="113" class="alignnone size-thumbnail wp-image-679" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Нажмите « Применить» и нажмите « Отладка». Через короткое время (несколько секунд) вы должны увидеть, что ваш сеанс отладки остановлен в начале

main ()

. Здесь!

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

Как и в случае с конфигурацией запуска OpenOCD , та, которую мы только что создали для GDB , также легко доступна через кнопку Debug в центре панели инструментов Eclipse (зеленый символ ошибки). Поведение кнопки также идентично: при нажатии на кнопку запускается последняя использованная конфигурация запуска, при раскрытии черным треугольником отображается список избранного.

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

Завершение сеанса отладки и OpenOCD

Мы знаем, как запустить инструменты, но как их остановить? Рекомендуется сначала остановить GDB и только затем остановить OpenOCD , так как завершение работы OpenOCD приведет к прерыванию GDB - немедленно или при попытке взаимодействия с ним. На самом деле это логично - если вы выключите удаленный сервер GDB ( OpenOCD ), GDB не сможет продолжить работу без него. Чтобы завершить сеанс отладки, сначала необходимо выбрать его из списка на вкладке « Отладка ». На самом деле не имеет значения, какой из них вы выберете, если он помечен как GDB Hardware Debugging или любой из его дочерних элементов. Затем просто нажмите кнопку « Завершить» вПанель инструментов Eclipse (красный символ остановки).

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

Процедура завершения OpenOCD идентична.

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

Отладка без программирования микросхемы

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

Open Debug Configurations again (Run > Debug Configurations…), select our only debug configuration (test Default if you did not change the name given automatically by Eclipse) in the left list and duplicate it by clicking the second button from the left above the list (two filled sheets of paper). This can be also done by right-clicking the configuration and selecting Duplicate.

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-0-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-0-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-0.png 800w" alt="" width="150" height="113" class="alignnone size-thumbnail wp-image-700" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

First thing to do in the newly created configuration is to give it some better name – for example test without load. Next, on the Main tab select Disable auto build radio button in the Build (if required) before launching group to prevent Eclipse from recompiling the application. Switch to Startup tab and deselect Load image from Load image and Symbols group. Click Apply and then Close.

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-1-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-1-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-1.png 800w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-2-300x225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-2-768x576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-2.png 800w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

Запустите OpenOCD (если он еще не запущен) и запустите нашу новую конфигурацию GDB . Если все работает нормально, вы должны увидеть что-то очень похожее на предыдущее, однако запуск занимает значительно меньше времени - здесь (в VirtualBox ) ~ 3 секунды против ~ 9 секунд при программировании.

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

Отладка приложения

Давайте, наконец, посмотрим на какое-нибудь действие! Начните с чего - нибудь простого - Нажмите Step Over кнопку из Затмения панели инструментов (вторая желтая стрелка, тот , который идет вверх-вправо-вниз). Через короткое время вы увидите, что ваша программа действительно продвинулась вперед - зеленое выделение текста и синяя стрелка на краю теперь находятся в строке 33 - той, которая имеет

distortos :: ThisThread :: sleepFor ( std :: chrono :: seconds { 1 }) ;

. Давайте попробуем то же самое еще раз - теперь это займет немного больше времени (в конце концов, вы «перешагиваете» долгую задержку в одну секунду), но в конце концов мы снова попадем в строку 32.

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

Теперь нажмите кнопку « Шаг с заходом» (первая желтая стрелка, эта идет вправо). Вы увидите, что открыта новая вкладка редактора, и теперь мы внутри

functionFromFolder ()

. Если вы снова нажмете « Шаг с заходом» , вы, наконец, окажетесь в

functionFromSubfolder ()

. Нажмите « Перейти», чтобы вернуться к

main ()

.

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

Давайте посмотрим, что произойдет, когда вы нажмете кнопку « Возобновить» (желтый прямоугольник с зеленым символом воспроизведения ). Хм… ничего особенного, но вроде приложение действительно запущено. Давайте остановим его, нажав кнопку « Приостановить» (желтый символ паузы ) - мы окажемся в каком-то совершенно случайном месте, скорее всего, где-то в незанятом потоке.

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

Итак, как нам вернуться к нашему основному потоку? В редакторе перейдите на вкладку с

основной. cpp

и поместите точку останова в строку 32, дважды щелкнув клетчатое поле (слева от номеров строк). Если вы все сделали правильно, вы должны увидеть синий кружок с галочкой. Нажмите « Возобновить», и программа будет остановлена ​​внутри.

main ()

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

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

Чтобы удалить точку останова, дважды щелкните ее или перейдите на вкладку « Точки останова » и удалите ее там. Вы можете удалить выбранную точку останова (один серый крестик) или удалить все точки останова, используемые в приложении (два серых крестика). Кроме того, также можно отключить точки останова - все сразу с помощью кнопки « Пропустить все точки останова» (перечеркнутый синий кружок) или одну за другой с их флажками.

https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-11-300x226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-11-768x579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-11.png 1010w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-12-300x226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-12-768x579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-12.png 1010w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-13-300x226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-13-768x579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-13.png 1010w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-14-300x226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-14-768x579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-14.png 1010w" alt="" width="150" height="113" class="attachment-thumbnail size-thumbnail" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;" loading="lazy" />

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

  • Средства разработки

Настройка и сборка проекта на основе distortos

  • Источник: Открыть сайт

Предпосылки

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

  • CMake (версия 3.7 или новее);
  • инструмент сборки, поддерживаемый CMake - наиболее рекомендуемый - Ninja ;
  • arm-none-eabi bleeding-edge-toolchain (GCC версии 5 или новее);

Рабочий процесс CMake

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

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

Минимальный проект

Как минимум, проект с distortos должен содержать следующие три вещи:

  • папка с исходниками distortos ,
  • CMakeLists.txt файл,
  • исходный файл с расширением main().

Таким образом, простейший проект на основе distortos будет выглядеть так:

мой проект
├── искажения
│ ├── cmake
│ ├── включить
│ ├── источник
│ ├── ...
│ ├── CMakeLists.txt
│ └── ...
├── CMakeLists.txt
└── main.cpp

Приведенный выше пример упрощен для краткости и ясности, но, очевидно, исходный файл не должен быть назван, main.cppи не нужно помещать искаженияmy-project/distortos . На самом деле он может быть расположен где угодно, даже вне папки вашего проекта - так что вместо my-project/distortosнего он может быть как внутри, так my-project/any/fancy/path/you/likeи внутри /home/freddie/distortos.

Но давайте перейдем к чему-то более важному, чем наименование - к содержимому этих файлов. Чтобы следовать духу примера, main.cppон сведен к абсолютному минимуму - просто цикл, который постоянно вызывает distortos::ThisThread::sleepFor():

#include "distortos / ThisThread.hpp"
 
int main ()
{
в то время как ( 1 )
distortos :: ThisThread :: sleepFor ( std :: chrono :: seconds { 1 }) ;
}

Кратчайший из возможных (и все еще пригодный для использования) CMakeLists.txtтакже довольно лаконичен:

cmake_minimum_required (ВЕРСИЯ 3.7)
проект (мой-проект)
 
add_subdirectory (искажения)
 
add_executable (мой-проект
main.cpp)
target_link_libraries (мой-проект ЧАСТНЫЙ
distortos :: distortos)
distortosTargetLinkerScripts (мой проект $ ENV {DISTORTOS_LINKER_SCRIPT})
 
# по желанию:
distortosBin (мой-проект my-project.bin)
distortosDmp (мой-проект мой-проект.dmp)
distortosHex (мой-проект my-project.hex)
distortosLss (мой-проект my-project.lss)
distortosMap (мой-проект my-project.map)
distortosSize (мой-проект)

На самом деле он мог бы быть даже короче, но это затруднило бы его использование. Последние 6 строк - все те, что ниже # optional:комментария - можно безопасно удалить, если вам не нужно то, что они делают (соответственно: двоичный образ вашего исполняемого файла, дамп памяти приложения, файл Intel HEX с прошивкой, листинг сборки все приложение, файл карты памяти, созданный во время компоновки, и отчет об использовании памяти вашим кодом).

Настройка папки сборки

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

Следует отметить несколько моментов.

Прежде всего, distortos явно запрещает сборки из исходных кодов . Вы всегда должны создавать в отдельном каталоге, практика называется (сюрприз!) Сборкой вне исходного кода .

Вы можете вызвать папку сборки как хотите и разместить ее в любом месте. Для простоты этой статьи я буду использовать my-project/output, но вы можете выбрать любое другое имя и / или путь, например my-project/whatever, my-project/very/long/build/folder/path, /tmp/compile/it/hereили /home/freddie/build.

Для одного проекта может быть несколько папок сборки, каждая с отдельной конфигурацией. Таким образом , вы можете иметь оба my-project/Debugи my-project/Releaseпапку одновременно. Или вы можете создать одно и то же приложение для нескольких разных плат. Или просто все, о чем вы думаете.

Настройка с помощью консоли

Запустите консоль и перейдите в каталог верхнего уровня проекта. Создайте пустую outputпапку сборки, затем измените текущий каталог на вновь созданную папку. Допустим, вы хотите настроить папку сборки для использования платы STM32F4DISCOVERY - в данном случае вызов CMake для ее инициализации cmake .. -DCMAKE_TOOLCHAIN_FILE=../distortos/source/board/ST_STM32F4DISCOVERY/Toolchain-ST_STM32F4DISCOVERY.cmake -GNinja. Этот вызов должен следовать cmake $PROJECT -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN_FILE -GNinjaшаблону, где $PROJECT- это путь к каталогу верхнего уровня проекта и $TOOLCHAIN_FILEпуть к выбранному файлу цепочки инструментов, оба пути видны из папки сборки.

Настройка с помощью cmake-gui

https://distortos.org/wp-content/uploads/2019/05/configuring-cmake-gui-a-0-150x107.png 150w, https://distortos.org/wp-content/uploads/2019/05/configuring-cmake-gui-a-0.png 740w" alt="" width="300" height="213" class="wp-image-968" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Вместо того, чтобы инициализировать папку сборки с помощью консоли, это также можно сделать напрямую с помощью CMake GUI ( cmake-gui). После запуска приложения убедитесь, что оно выглядит как на правом скриншоте - оба верхних текстовых поля должны быть пустыми. Если это не так, просто удалите их содержимое.

https://distortos.org/wp-content/uploads/2019/05/configuring-cmake-gui-a-1-150x107.png 150w, https://distortos.org/wp-content/uploads/2019/05/configuring-cmake-gui-a-1.png 740w" alt="" width="300" height="213" class="wp-image-969" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Нажмите « Обзор источника…» и перейдите в каталог верхнего уровня проекта. Затем нажмите « Обзор сборки…» и перейдите в папку, в которой вы хотите создать проект (вам нужно будет создать его - в браузере будет кнопка для этого).

  • https://distortos.org/wp-content/uploads/2019/05/configuring-cmake-gui-a-2-150x134.png 150w, https://distortos.org/wp-content/uploads/2019/05/configuring-cmake-gui-a-2-300x268.png 300w" alt="" width="337" height="301" class="wp-image-970" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="970" data-link="https://distortos.org/?attachment_id=970" />
  • https://distortos.org/wp-content/uploads/2019/05/configuring-cmake-gui-a-3-150x29.png 150w, https://distortos.org/wp-content/uploads/2019/05/configuring-cmake-gui-a-3-300x58.png 300w, https://distortos.org/wp-content/uploads/2019/05/configuring-cmake-gui-a-3-768x148.png 768w" alt="" width="887" height="171" class="wp-image-971" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block; width: auto;" loading="lazy" data-id="971" data-link="https://distortos.org/?attachment_id=971" />

Когда указаны обе папки, нажмите « Настроить» . В появившемся диалоговом окне выберите генератор (рекомендуется Ninja) и убедитесь, что выбран параметр «Указать файл цепочки инструментов для кросс-компиляции» . На следующем шаге перейдите, например my-project/distortos/source/board/ST_STM32F4DISCOVERY/Toolchain-ST_STM32F4DISCOVERY.cmake, к файлу цепочки инструментов и нажмите « Готово» .

https://distortos.org/wp-content/uploads/2019/05/configuring-cmake-gui-a-4-112x150.png 112w, https://distortos.org/wp-content/uploads/2019/05/configuring-cmake-gui-a-4.png 740w" alt="" width="223" height="300" class="wp-image-972" style="box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;" loading="lazy" />

Новые параметры проекта появятся в средней части окна (первоначально с красным фоном), а внизу вы увидите журнал состояния процесса. Нажмите кнопку «Создать», и если в журнале состояния не отображаются ошибки (последняя строка Generating done), вы можете закрыть окно.

Редактирование конфигурации

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

Рекомендуемый способ изменения конфигурации проекта - через cmake-gui. Вы можете запустить его из папки сборки с помощью cmake-gui ..(или, в более общем смысле, с помощью cmake-gui $PROJECT, где $PROJECTэто путь к каталогу верхнего уровня проекта, как видно из папки сборки). Также можно запустить графический интерфейс CMake, а затем ввести пути к каталогу верхнего уровня проекта и создать папку в двух верхних текстовых полях ( Где находится исходный код и Где создавать двоичные файлы ) - вручную или с помощью Обзор источника… и Обзор Кнопки Build… соответственно.

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

Если вы не уверены в каком-либо из вариантов, просто наведите на него указатель мыши, cmake-guiчтобы увидеть (надеюсь) полезную подсказку.

Однако обратите внимание, что CMake позволяет вам изменять некоторые параметры, которые вы действительно не хотите изменять. Основным примером является файл toolchain ( CMAKE_TOOLCHAIN_FILE) - даже если его можно изменить для настроенного проекта, никогда не делайте этого. Это означает, что если вы хотите перенастроить свой проект для использования другой платы, вам придется начать все заново с пустой папкой сборки.

CMake также имеет концепцию расширенных параметров , которые видны, только если установлен флажок Дополнительно в cmake-gui. Некоторые из них можно безопасно изменить (при условии, что вы знаете, что делаете):

  • CMAKE_BUILD_TYPE,
  • CMAKE_..._FLAGSи CMAKE_..._FLAGS_...,
  • CMAKE_EXPORT_COMPILE_COMMANDS,
  • CMAKE_VERBOSE_MAKEFILE.

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

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

Чтобы собрать приложение, просто выполните его ninjaиз папки сборки. Если вы хотите видеть все команды, выполняемые во время сборки, используйте ninja -v.

Сохраненная конфигурация

Каждый раз, когда вы изменяете какой-либо параметр проекта, CMake сохраняет полную конфигурацию $BUILD/$DISTORTOS/distortosConfiguration.cmake, где $BUILDэто путь к папке сборки и $DISTORTOS(в большинстве случаев) относительный путь к distortos в проекте. В случае примера проекта из этой статьи это будет my-project/output/distortos/distortosConfiguration.cmake). Этот файл можно использовать для простого резервного копирования (т. Е. Вы можете скопировать его, зафиксировать в своей системе контроля версий и отправить вместе с проектом) и восстановить конфигурацию проекта. Таким образом, любому, кто хочет создать ваш проект, вообще не придется иметь дело ни с одним из параметров конфигурации.

Допустим, содержимое релиза вашего проекта выглядит так:

мой проект
├── искажения
│ ├── cmake
│ ├── включить
│ ├── источник
│ ├── ...
│ ├── CMakeLists. текст
│ └── ...
├── CMakeLists. текст
├── distortosConfiguration. cmake
└── main. cpp

Вся процедура восстановления конфигурации my-project/distortosConfiguration.cmakeи сборки проекта выглядит так:

  • Создайте пустую my-project/outputпапку для сборки.
  • Изнутри папки сборки выполнить cmake -C../distortosConfiguration.cmake .. -GNinja(аннотированный вызовом является cmake -C$SAVED_CONFIGURATION $PROJECT -GNinja, где $SAVED_CONFIGURATIONпуть к distortosConfiguration.cmakeфайлу и $PROJECTпуть к каталогу верхнего уровня проекта, оба пути , как видно из папки сборки).
  • Постройте проект.

Также можно использовать конфигурацию из одного проекта в другом, предполагая, что оба они используют одну и ту же плату (то есть один и тот же файл инструментальной цепочки). Это может быть полезно, когда, например, вы не хотите снова думать о правильной конфигурации часов и просто хотите начать быстрее или импортировать некоторые из существующих конфигураций тестов прямо из distortos/configurationsпапки.

Процесс прост, если относительный путь к искажениям в обоих проектах идентичен. В противном случае это становится немного сложнее - например, когда исходный проект имел, source-project/external/distortosа целевой проект имел target-project/3rd-party/distortos. Единственный поворот в том, что вам нужно указать путь к distortos в проекте через DISTORTOS_PATHпеременную окружения. Один из способов сделать это - добавить вызов CMake к назначению переменной следующим образом DISTORTOS_PATH=3rd-party/distortos cmake -C....

Распространенная ошибка CMake

При использовании сохраненных конфигураций ( distortosConfiguration.cmake) для настройки папки сборки CMake НЕ выдаст ошибку сразу же, если не сможет найти этот файл. Вместо этого он продолжит настройку папки сборки и завершится с ошибкой ближе к концу процесса, так как файл инструментальной цепочки не был предоставлен. Если сохраненная конфигурация будет найдена, в ней будет указан файл цепочки инструментов и все другие важные настройки.

$ cmake -C ../ недопустимый / путь / distortosConfiguration.cmake .. -GNinja
загрузка исходного файла кеша ../invalid/path/distortosConfiguration.cmake
Ошибка CMake: файл обработки ошибок: ../invalid/path/distortosConfiguration.cmake
- Идентификатор компилятора C - GNU 8.3.0.
- Компилятор CXX идентифицируется как GNU 8.3.0.
- Проверить работоспособность компилятора C: / usr / bin / cc
- Проверить работоспособность компилятора C: / usr / bin / cc - работает
- Обнаружение информации ABI компилятора C
- Обнаружение информации ABI компилятора C - выполнено
- Обнаружение функций компиляции C
- Обнаружение функций компиляции C - выполнено
- Проверить работоспособность компилятора CXX: / usr / bin / c ++
- Проверить работоспособность компилятора CXX: / usr / bin / c ++ - работает
- Обнаружение информации ABI компилятора CXX
- Обнаружение информации ABI компилятора CXX - выполнено
- Обнаружение функций компиляции CXX
- Обнаружение функций компиляции CXX - выполнено
Ошибка CMake в distortos / CMakeLists.txt: 19 (distortosSetConfiguration):
Неизвестная команда CMake "distortosSetConfiguration".
 
- Настройка не завершена, возникли ошибки!
См. Также «/home/freddie/my-project/output/CMakeFiles/CMakeOutput.log».

При более внимательном рассмотрении вы заметите, что вместо обнаружения arm-none-eabi-gccкомпилятора CMake обнаружил собственный компилятор вашей системы /usr/bin/cc. Даже если вы сейчас укажете правильный путь к сохраненной конфигурации, процесс не завершится успешно - на этом этапе CMake игнорирует этот файл.

$ cmake -C ../ distortosConfiguration.cmake .. -GNinja
загрузка исходного файла кеша ../distortosConfiguration.cmake
Ошибка CMake в distortos / CMakeLists.txt: 19 (distortosSetConfiguration):
Неизвестная команда CMake "distortosSetConfiguration".
 
- Настройка не завершена, возникли ошибки!
См. Также «/home/freddie/my-project/output/CMakeFiles/CMakeOutput.log».

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

$ cd ..
$ rm -rf output /
$ mkdir вывод
$ cd output /
$ cmake -C ../ distortosConfiguration.cmake .. -GNinja
загрузка исходного файла кеша ../distortosConfiguration.cmake
- Идентификатор компилятора C - GNU 9.1.0
- Компилятор CXX идентифицируется как GNU 9.1.0.
- Проверить работоспособность компилятора C: /home/freddie/arm-none-eabi-gcc-9.1.0-190503/bin/arm-none-eabi-gcc
- Проверить работоспособность компилятора C: /home/freddie/arm-none-eabi-gcc-9.1.0-190503/bin/arm-none-eabi-gcc - работает
- Обнаружение информации ABI компилятора C
- Обнаружение информации ABI компилятора C - выполнено
- Обнаружение функций компиляции C
- Обнаружение функций компиляции C - выполнено
- Проверить работоспособность компилятора CXX: /home/freddie/arm-none-eabi-gcc-9.1.0-190503/bin/arm-none-eabi-g++
- Проверить работоспособность компилятора CXX: /home/freddie/arm-none-eabi-gcc-9.1.0-190503/bin/arm-none-eabi-g++ - работает
- Обнаружение информации ABI компилятора CXX
- Обнаружение информации ABI компилятора CXX - выполнено
- Обнаружение функций компиляции CXX
- Обнаружение функций компиляции CXX - выполнено
- Создание /home/freddie/my-project/output/distortos/include/distortos/distortosConfiguration.h
- Создание /home/freddie/my-project/output/distortos/distortosConfiguration.cmake
- Создание /home/freddie/my-project/output/distortos/ST_STM32F4DISCOVERY.preprocessed.ld
- Создание /home/freddie/my-project/output/.gitignore
- Настройка выполнена
- Генерация сделана
- Файлы сборки записаны в: / home / freddie / my-project / output
https://distortos.org/documentation/configuring-building/" data-a2a-title="Configuring and building a distortos-based project">
  • Средства разработки

Отладка программ ARM

Авиатор ЦМИТ Авиатор
  • ТЕХНОПАРК
  • FAFLAB.IO
  • ПАРТНЁРЫ
© MihaYu 2018 - 2023
Наверх
Авиатор ЦМИТ Авиатор
  • Главная
      • Back
      • О ЦМИТ
  • Новости
      • Back
      • Архив событий
  • Посетителям
      • Back
      • Конкурсы и программы поддержки
      • Школьникам
      • Студентам
      • Мейкерам
      • Предпринимателям
      • Предприятиям
      • Учебные курсы
  • Лаборатории
      • Back
      • Лаборатория Space π
      • Лаборатория мехатроники и управления
      • Лаборатория агро-электроники
      • Лаборатория научно-технического искусства
      • Лаборатория нетрадиционной науки
  • Технологии
      • Back
      • Оборудование
      • Материалы
  • Справочник
      • Back
      • Микроконтроллеры
      • Микрокомпьютеры
      • Средства разработки
  • База знаний WIKI
  • АгроНТИ
  • Контакты