2. Better C++ Syntax. Улучшенная подсветка синтаксиса для разных тем оформления
3. Better Comments. Разделение комментариев на категории и их уникальное форматирование
8. Doxygen Documentation Generator. Генератор комментариев по doxygen
14. Markdown All in One. Мощный инструмент для верстки Markdown
В данной статье рассматривается процесс настройки vscode для разработки встроенного ПО на базе ядер cortex-M и процессе превращения редактора в полноценную IDE. При этом большинство представленных расширений являются универсальными и применимы в широком спектре задач программирования.
В отличии от проприетарных решений, таких как Keil, подход использования редактора vscode + компилятор gcc позволяет гибко настроить каждый пункт от начала разработки до релиза продукта. За время своей работы мною было опробованы разные решения: от классического keil до связки sublime и CodeSourcery. В последние годы я перешел на vscode + msys2: практически все ПО Open Source, не требует лицензий, не ограничено 32 Кб кода и может работать без сети интернет.
0. MSYS2: Набор инструментов для разработки
Данный этап не является обязательным, так как компилятор, OpenOCD, Python, Qt и другие компоненты можно установить как отдельные программы. Однако использование MSYS2 предпочтительнее: этот подход позволяет управлять всеми зависимостями в рамках единой экосистемы, а обновление всей среды разработки сводится к одной команде: pacman -Syu.
Для настройки msys2 необходимо:
Скачайте и установите msys2.
В VS Code вызовите палитру команд (
Ctrl+Shift+PилиF1).Выберите пункт Preferences: Open User Settings (JSON).
Добавьте конфигурацию для интеграции терминала MSYS2 в VS Code:
Настройка терминала msys2 в vscode
// Настройки терминала MSYS2 "terminal.integrated.profiles.windows": { "PowerShell": { "source": "PowerShell", "icon": "terminal-powershell" }, "Command Prompt": { "path": [ "${env:windir}\\Sysnative\\cmd.exe", "${env:windir}\\System32\\cmd.exe" ], "args": [], "icon": "terminal-cmd" }, "Git Bash": { "source": "Git Bash" }, "MSYS2": { "path": "C:\\msys64\\usr\\bin\\bash.exe", "label": "MSYS2", "args": [ "--login", "-i" ], "env": { "CHERE_INVOKING": "1", "MSYS2_PATH_TYPE": "inherit", "MSYSTEM": "MINGW64" } }, }, "terminal.integrated.defaultProfile.windows": "MSYS2",
После запуска терминала msys2 необходимо установить набор инструментов и библиотек, необходимых для базовой сборки проектов под ARM. Сначала выполните полное обновление системных репозиториев и пакетов. Для этого в терминале msys2 введите:
pacman -Syu # необходимо перезапустить MSYS2 и выполнить вторую часть обновления: pacman -Su
Затем установите компилятор, отладчик и инструменты сборки:
pacman -S base-devel git mingw-w64-x86_64-arm-none-eabi-gcc mingw-w64-x86_64-gdb-multiarch
После выполнения этих шагов ваша среда будет готова к работе с проектами на базе Makefile (использование CMake в данной статье не рассматривается). Теперь перейдем к настройке самого VS Code и разбору расширений, которые значительно оптимизируют процесс разработки.
1. Arm Assembly. Подсветка синтаксиса ассемблерных файлов
Arm Assembly |
|
|---|---|
Идентификатор |
dan-c-underwood.arm |
Описание |
Arm assembly syntax support for Visual Studio Code |
Издатель |
dan-c-underwood |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/items?itemName=dan-c-underwood.arm |
Подсветка синтаксиса

2. Better C++ Syntax. Улучшенная подсветка синтаксиса для разных тем оформления
Better C++ Syntax |
|
|---|---|
Идентификатор |
jeff-hykin.better-cpp-syntax |
Описание |
The bleeding edge of the C++ syntax |
Издатель |
Jeff Hykin |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/items?itemName=jeff-hykin.better-cpp-syntax |
Подсветки синтаксиса для темы Dark+

3. Better Comments. Разделение комментариев на категории и их уникальное форматирование
Better Comments |
|
|---|---|
Идентификатор |
aaron-bond.better-comments |
Описание |
Improve your code commenting by annotating with alert, informational, TODOs, and more! |
Издатель |
Aaron Bond |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments |
Подсветка комментариев

Для настройки нажмите ctrl+shift+p и выберите Preferences: Open User Settings (JSON). В файле настроек добавьте параметры для расширения
Настройки better-comments
// better-comments "better-comments.multilineComments": true, // поддержка многострочных комментариев "better-comments.highlightPlainText": true, // Определение тега будет идти по первому символу "better-comments.tags": [ { "tag": "!", "color": "#FF2D00", "strikethrough": false, "underline": false, "backgroundColor": "transparent", "bold": false, "italic": false }, { "tag": "?", "color": "#3498DB", "strikethrough": false, "underline": false, "backgroundColor": "transparent", "bold": false, "italic": false }, { "tag": "//", "color": "#474747", "strikethrough": true, "underline": false, "backgroundColor": "transparent", "bold": false, "italic": false }, { "tag": "todo", "color": "#FF8C00", "strikethrough": false, "underline": false, "backgroundColor": "transparent", "bold": false, "italic": false }, { "tag": "*", "color": "#98C379", "strikethrough": false, "underline": false, "backgroundColor": "transparent", "bold": false, "italic": false }, { "tag": "/* !", "color": "#FF2D00", "strikethrough": false, "underline": false, "backgroundColor": "transparent", "bold": false, "italic": false }, { "tag": "/*?", "color": "#3498DB", "strikethrough": false, "underline": false, "backgroundColor": "transparent", "bold": false, "italic": false }, { "tag": "/* todo", "color": "#FF8C00", "strikethrough": false, "underline": false, "backgroundColor": "transparent", "bold": false, "italic": false } ],
Расширение Better Comments может показаться избыточным, если вы не собираетесь использовать паттерны в комментариях вроде “!” или “?”. Если вам нужна только подсветка вроде “todo”, “bug” - достаточно будет расширения todo-tree
4. Bookmarks. Закладки для конкретной строки в файле
Bookmarks |
|
|---|---|
Идентификатор |
alefragnani.Bookmarks |
Описание |
Mark lines and jump to them |
Издатель |
Alessandro Fragnani |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/items?itemName=alefragnani.Bookmarks |
Закладки в боковой панели

Позволяет расставлять закладки на строку с добавлением своего комментария и осуществлять быстрый переход по клику из боковой панели. Удобно, когда не хватает alt + ⇄ и ctrl + tab
5. C/C++. Базовое расширение для разработки на c/c++
C/C++ |
|
|---|---|
Идентификатор |
ms-vscode.cpptools |
Описание |
C/C++ IntelliSense, debugging, and code browsing. |
Издатель |
Microsoft |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools |
Настройки c/c++ находятся в файле c_cpp_properties.json в корне рабочей области.
Настройки расширения c/c++
{ "name": "cortex", "includePath": [ // Пути к библиотекам ], // Что бы работали директивы #ifdef для определений, задаваемых в MAKEFILE, которые редактор "не видит" "defines": [ "DEBUG", "UART1" ], "cppStandard": "c++17", "cStandard": "c17", "intelliSenseMode": "windows-gcc-arm", }
6. Code Spell Checker. Проверка орфографии для EN/RU
Code Spell Checker |
|
|---|---|
Идентификатор |
streetsidesoftware.code-spell-checker |
Описание |
Spelling checker for source code |
Издатель |
Street Side Software |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker |
Проверка орфографии

Подсвечивает опечатки и предлагает их исправление (ctrl + .). Слова, которых нет в словарях, вроде GPIOA, можно добавить в пользовательский словарь (Add: “word” to user settings). Так же подсвечивает ошибки в тексте коммита встроенной системы управления версиями.
Для поддержки русского языка установите Russian - Code Spell Checker. Еще пригодятся Scientific Terms - Code Spell Checker и Win32 - Code Spell Checker. По умолчанию расширение отображает опечатки на панели “проблемы” т.к. они считаются “warning”. Для того, что бы убрать предупреждения из вкладки, нужно нажать ctrl+shift+p, выбрать Preferences: Open User Settings (JSON). В файле настроек добавьте параметры для расширения:
Настройки Code Spell Checker
// Проверка орфографии, поддерживаемые словари "cSpell.language": "en,ru,scientific-terms-us", "cSpell.spellCheckOnlyWorkspaceFiles": true, // Убрать из окна "Проблемы" "cSpell.diagnosticLevel": "Hint",
7. Cortex-Debug. Полноценный отладчик МК на ядрах Cortex-M
Cortex-Debug |
|
|---|---|
Идентификатор |
marus25.cortex-debug |
Описание |
ARM Cortex-M GDB Debugger support for VSCode |
Издатель |
marus25 |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug |
Cortex-Debug

Cortex-Debug — это полноценный интерфейс для отладки, обладающий всеми функциями отладчика:
Работа с множеством серверов отладки: segger, st-link, openocd, pyocd или внешний external.
Просмотр регистров периферии за счет интеграции SVD (System View Description) файлов.
Полноценный интерфейс отладки: установка точек остановки, приостановки работ, “прыжка” через функцию
Просмотр стека вызовов. Незаменимая вещь при отладке вылетов - вы можете отследить выполнение программы от места падения до самой первой ассемблерной инструкции.
Просмотр значения переменных. При этом в окне ввода переменной для просмотра можно вводить выражения типа взятия адреса, разыменования, приведения типов,стандартных функций типа sizeof и т.п.
liveWatch обновление переменных. Значение переменной будет обновляться без остановки ядра - незаменимая вещь, когда отлаживаешь процессы окружающего мира, который не будет ждать пока вы застыли в прерывании на точке остановки.
Cortex Debug умеет работать с несколькими серверами отладки: нативный segger, stlink и openocd. Последним удобно пользоваться, т.к. это бесплатный продукт, поддерживающий множество программаторов, не требующий пары сотен тысяч за лицензионный jlink - достаточно st-link за пару сотен рублей.
Openocd из состава msys2 (пакет mingw-w64-x86_64-openocd) может не поддерживать ваш МК. В таком случае ищите нужную сборку на профильных форумах или попробуйте openocd-xpack.
Для корректной работы программатора с openocd необходима установка драйверов libusb. Установить их можно через программы Zadig или UsbDriverTools.
Для работы расширения нужно добавить в папку .vscode файл launch.json со следующим содержимым:
Настройки launch.json
{ "version": "0.2.0", "configurations": [ { "name": "openocd", "showDevDebugOutput": "none", "request": "launch", "type": "cortex-debug", "cwd": "${workspaceRoot}", // Если используется openocd не из состава msys2 "servertype": "openocd", "serverpath": "путь_к_openocd.exe", "executable": "${workspaceRoot}/путь_к_elf_файлу", "searchDir": [ "путь_к_папке_scripts" ], // путь к файлу конфигурации, если необходимы особые настройки "configFiles": [ "${workspaceRoot}/openocd_debug.cfg" ], // liveWatch работает только для "servertype": "openocd" "liveWatch": { "enabled": true, "samplesPerSecond": 1 }, // Если openocd запускается отдельно // "servertype": "external", // "executable": "${workspaceRoot}/путь_к_elf_файлу", "gdbPath": "C:/msys64/mingw64/bin/gdb-multiarch.exe", "gdbTarget": "localhost:3333", "svdFile": "${workspaceRoot}/ваш_мк.svd", // "preLaunchTask": "debug" // выполнить задачу из файла tasks.json (например запуск внешнего отладчика или reset микроконтроллера) // "runToEntryPoint": "my_func" // останавливает выполнение в начале функции my_func } ] }
Соединение с микроконтроллером через openocd можно запускать как самому: ("servertype": "external") через цель в makefile так и через расширение: ("servertype": "openocd").
Иногда может потребоваться первый способ. Для этого я использую отдельную цель, и потом нажимаю F5:
ifndef CUSTOM_TARGET_D %.d: %.$(TARGET) $(OPENOCD) -s $(OPENOCD_SCRIPTS_DIR) -s $(OPENOCD_CFG_FOLDER) -f $(OPENOCD_CFG) \ -c init \ -c "reset halt" & sleep 3 $(GDB) -q -ex 'target remote localhost:3333' $< endif
Можно так же добавить в tasks.json эту цель и указать ее в параметре preLaunchTask файла launch.json.
8. Doxygen Documentation Generator. Генератор комментариев по doxygen
Doxygen Documentation Generator |
|
|---|---|
Идентификатор |
cschlosser.doxdocgen |
Описание |
Let me generate Doxygen documentation from your source code for you. |
Издатель |
Christoph Schlosser |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/items?itemName=cschlosser.doxdocgen |
Doxygen - система документирования кода с автоматической генерацией документации на основе специально оформленных комментариев. Не важно, генерируете ли вы pdf документации, требуют ли от вас её заказчики - оформлять комментарии в едином стиле по всему проекту - база. И что бы её проще было соблюдать - поможет данное расширение. Оно автоматически генерирует шаблон комментария по вводу трех символов, которые определяются в настройках:
Настройки Doxygen Documentation Generator в launch.json
// Doxygen "doxdocgen.c.firstLine": "/*!", "doxdocgen.c.triggerSequence": "/*!", "doxdocgen.file.copyrightTag": [ "\\ваш (c) копирайт" ], "doxdocgen.file.versionTag": "\\version 1.0", "doxdocgen.generic.authorEmail": "ваша@почта", "doxdocgen.generic.authorName": "Ваше имя", "doxdocgen.generic.commandSuggestionAddPrefix": true, "doxdocgen.generic.useGitUserEmail": true, "doxdocgen.cpp.tparamTemplate": "\\tparam {param} ", "doxdocgen.file.fileTemplate": "\\file {name}", "doxdocgen.generic.authorTag": "\\author {author} ({email})", "doxdocgen.generic.briefTemplate": "\\brief {text}", "doxdocgen.generic.dateTemplate": "\\date {date}", "doxdocgen.generic.paramTemplate": "\\param {param} ", "doxdocgen.generic.returnTemplate": "\\return {type} ",
Параметр doxdocgen.c.triggerSequence отвечает за триггер для формирования комментария. Когда вы введете последовательно /*! и нажмете “Ввод” - шаблон комментария сформируется автоматически.
Тема doxygen и документации идет вместе с codestyle - набором правил и соглашений, используемых при написании исходного кода. В vscode есть встроенный способ форматирования кода под ваш кодстайл. Вам нужен файл .clang-format с описанием стиля кода:
Настройки формитрования кода в launch.json
// Форматтер // "C_Cpp.clang_format_path": "путь_к_clang-format.exe", "C_Cpp.clang_format_style": "путь_к_.clang-format", "C_Cpp.default.intelliSenseMode": "gcc-arm", "C_Cpp.formatting": "clangFormat", "editor.formatOnSave": true, // форматировать файл при сохранении
9. Draw.io Integration. Создание диаграмм
Draw.io Integration |
|
|---|---|
Идентификатор |
hediet.vscode-drawio |
Описание |
This unofficial extension integrates Draw.io into VS Code. |
Издатель |
Henning Dieterichs |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio |
Draw.io Integration

Бесплатный и удобный инструмент для рисования циклограмм работы, временных графиков, блок схем и алгоритмов. Незаменимая вещь для ваших заказчиков при написании технического задания.
10. Git Graph. Визуализация репозитория
Git Graph |
|
|---|---|
Идентификатор |
mhutchie.git-graph |
Описание |
View a Git Graph of your repository, and perform Git actions from the graph. |
Издатель |
mhutchie |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph |
Git Graph

Наглядно показывает историю репозитория в виде графа. Имеет инструменты для работы с git прямо из интерфейса графа.
Однако для работы с git, а мой взгляд, удобнее использовать встроенный клиент в vscode. Он предоставляет удобный доступ ко всем функциям системы контроля версий. Из него удобно скопировать шаблон предыдущего коммита и вставить для текущего. Таким образом формируется единый стиль коммитов, не нужно каждый раз ломать вспоминать шаблон оформления плюс если вы используете CI/CD - единый стиль облегчит формирование релизов и заполнение CHANGELOG.md. Так же сразу видны изменения по файлам и рабочим областям, что позволяет писать ченжлог “на лету” и пушить сразу во все репозитории рабочей области. По сравнению с другими инструментами, вроде клиента sublime, tortoise или просто git.exe - система контроля версий vscode обеспечивает наилучший пользовательский опыт и скорость работы. Но тут конечно дело вкуса и привычки.
Так же есть расширение GitLens, которое красиво разрисует граф репозитория с аватарками и графиком активности, но т.к. оно платное - его я не использую.
GitLens

11. GNU Linker Map files. Подсветка синтаксиса map-файлов
GNU Linker Map files |
|
|---|---|
Идентификатор |
trond-snekvik.gnu-mapfiles |
Описание |
Syntax highlighting and symbol listing for GNU linker .map files |
Издатель |
Trond Snekvik |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/ items?itemName=trond-snekvik.gnu-mapfiles |
GNU Linker Map files

Подсветка синтаксиса для удобного отображения структуры map-файлов.
12. Hex Editor. Просмотр и редактирование бинарных файлов
Hex Editor |
|
|---|---|
Идентификатор |
ms-vscode.hexeditor |
Описание |
Allows viewing and editing files in a hex editor |
Издатель |
Microsoft |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/ items?itemName=ms-vscode.hexeditor |
Hex Editor

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

13. LinkerScript. Подсветка синтаксиса LD-файлов
LinkerScript |
|
|---|---|
Идентификатор |
ZixuanWang.linkerscript |
Описание |
Language support for GNU linker script |
Издатель |
Zixuan Wang |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/ items?itemName=ZixuanWang.linkerscript |
LinkerScript

Подсветка синтаксиса для удобного отображения структуры LD-файлов.
14. Markdown All in One. Мощный инструмент для верстки Markdown
Markdown All in One |
|
|---|---|
Идентификатор |
yzhang.markdown-all-in-one |
Описание |
All you need to write Markdown (keyboard shortcuts, table of contents, auto preview and more) |
Издатель |
Yu Zhang |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/ items?itemName=yzhang.markdown-all-in-one |
Для написания wiki, readme, release notes используется язык разметки Markdown. Данное расширение предостовляет инструменты для работы с этим языком: подстветка синтаксиса, проверка стандартов, исправление ошибок, автодополнения и т.п.
Дополнительно можно установить Markdown Kroki и Markdown Preview Mermaid Support если вы используете отрисовку диаграмм с помощью Kroki и Mermaid. Markdown Kroki поддерживается GitLab self hosted “из коробки” без дополнительных зависимостей и доступом к интернет.
Markdown Kroki

Markdown Mermaid

markdownlint - линтер для markdown. Дополнительно подсказывает какие правила разметки вы нарушаете. Для отключения конкретного типа предупреждения (например для MD033), в settings.json добавьте:
// markdownlint "markdownlint.config": { "MD033": { "allowed_elements": [ "details", "summary" ] } },
15. Serial Monitor. Последовательный монитор
Serial Monitor |
|
|---|---|
Идентификатор |
ms-vscode.vscode-serial-monitor |
Описание |
Send and receive text from serial ports. |
Издатель |
Microsoft |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-serial-monitor |
Serial Monitor

При работе с железом часто бывает что единственным способом отладки и взаимодействия с железом является интерфейс uart, на котором запускается CLI (просто printf или полноценный терминал). Из всех опробованных терминалов, Serial Monitor пока устроил больше всего: все в одном окне, есть режим терминала, есть запись логов в файл и не нужно отдельно ставить terraterm, putty, docklight и т.п. Хотя чего не хватает в этом терминале - набор пресетов для отправки как в docklight.
По умолчанию скорости Serial Monitor ограничены 250000 бит/с. Для добавления своих скоростей и установки параметров порта по умолчанию добавьте в settings.json:
// терминал "vscode-serial-monitor.dataBits": 8, "vscode-serial-monitor.stopBits": 1, "vscode-serial-monitor.parity": "none", "vscode-serial-monitor.customBaudRates": [ 921600 ]
16. Todo Tree. Комментарии TODO
Todo Tree |
|
|---|---|
Идентификатор |
Gruntfuggly.todo-tree |
Описание |
Show TODO, FIXME, etc. comment tags in a tree view |
Издатель |
Gruntfuggly |
Ссылка на Visual Studio Marketplace |
https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree |
Todo Tree

Инструмент для расстановки комментариев типа “fixme”, “bug”, “todo” и т.п. Расширение будет мозолить глаза своими иконками и не позволит вам забыть о баге, который нужно исправить. Мощный инструмент за счет своей кастомизации, позволяющий придумать множество паттернов его использования.
Настройки в settings.json
/* Список TODO */ // Регулярное выражение для поддержки doxygen-комментариев "todo-tree.regex.regex": "((//|//!|///|#|<!--|;|/\\*|/\\*\\*|/\\*!|/\\*!<|^|^[ \\t]*(-|\\d+\\.)|^[ \\t]*\\*|[ \\t]*\\*)\\s*\\\\?($TAGS))", "todo-tree.regex.enableMultiLine": true, "todo-tree.general.showActivityBarBadge": true, "todo-tree.general.showIconsInsteadOfTagsInStatusBar": true, "todo-tree.general.statusBar": "current file", /* Так же можно задавать свои теги */ // "todo-tree.general.tags": [ // "BUG", // "HACK", // "FIXME", // "TODO", // "XXX", // "[ ]", // "[x]", // "todo", // "\\todo", // "* \\todo", // " * \\todo ", // "fixme", // "\\fixme", // "* \\fixme", // " * \\fixme ", // "bug", // "\\bug", // "* \\bug", // " * \\bug " // ], "todo-tree.general.tags": [ "TODO", "FIXME", "BUG" ], "todo-tree.general.tagGroups": { "FIXME": [ "FIXME", "FIXIT", "FIX", "fixme", "\\fixme", "* \\fixme", " * \\fixme ", "fix" ] }, "todo-tree.tree.showCountsInTree": true, "todo-tree.highlights.customHighlight": { "TODO": { "icon": "pencil", "type": "tag", "foreground": "#F3E40E", "iconColour": "#F3E40E", "gutterIcon": true }, "todo": { "icon": "pencil", "type": "tag", "foreground": "#F3E40E", "iconColour": "#F3E40E", "gutterIcon": true }, "FIXME": { "icon": "alert", "type": "text-and-comment", "foreground": "#FF2D00", "iconColour": "#FF2D00", "gutterIcon": true }, "fixme": { "icon": "alert", "type": "text-and-comment", "foreground": "#FF2D00", "iconColour": "#FF2D00", "gutterIcon": true }, "BUG": { "icon": "bug", "type": "text-and-comment", "foreground": "#FF2D00", "iconColour": "#FF2D00", "gutterIcon": true }, "bug": { "icon": "bug", "type": "text-and-comment", "foreground": "#FF2D00", "iconColour": "#FF2D00", "gutterIcon": true } },
Теперь, если вы напишите в комментарии BUG - на панели появится пометка об этой записи и внутри файла так же будет наглядное выделение строки.
Заключение
Настройка среды разработки — это баланс между временем, затраченным на конфигурацию, и комфортом в процессе написания кода. Переход от проприетарных IDE к гибкой связке VS Code + MSYS2 может показаться сложным на первых этапах, но возможности кастомизации и полный контроль над инструментами окупают эти усилия. Правильно подобранные расширения превращают редактор в мощный инструмент, позволяя разработчику сосредоточиться на главном — реализации сложной логики встраиваемых систем, а не на борьбе с инструментами (что с opensource периодически бывает:).
Буду рад узнать ваше мнение: какие инструменты помогают вам в работе с встраиваемыми системами? Какие расширения используете вы? Напишите о них в комментариях.
Brazil
Хороший повод провести аудит расширений в своем VS Code
По embedded у меня такие
Расширения VS Code для embedded
dan-c-underwood.arm — подсветка синтаксиса для ARM assembly (.s/.asm файлы).
marus25.cortex-debug — отладка ARM Cortex-M через GDB + J-Link/OpenOCD/ST-Link, поддержка SVD, RTOS-вьюверы.
mcu-debug.debug-tracker-vscode — служебное расширение-«трекер» сессий отладки, на которое опираются остальные mcu-debug плагины.
mcu-debug.memory-view — просмотр и редактирование памяти MCU во время отладки (hex-вью с привязкой к адресам).
mcu-debug.peripheral-viewer — отображение регистров периферии по SVD-файлу (у тебя это R7FA8M1AH.svd / R7FA8M1AH_mod.svd).
mcu-debug.rtos-views — визуализация объектов RTOS (потоки, очереди, семафоры) — для ThreadX/Azure RTOS в твоём проекте.
ms-vscode.vscode-embedded-tools — официальный Microsoft embedded toolkit: peripheral view, RTOS view, serial monitor.
ms-vscode.hexeditor — hex-редактор для бинарных файлов (прошивки, дампы).
trond-snekvik.gnu-mapfiles — подсветка
.mapфайлов от GNU линкера (анализ размещения секций).zixuanwang.linkerscript — подсветка GNU linker scripts (.ld/.icf).
iarsystems.iar-build — интеграция сборки IAR EWARM из VS Code (используется в твоих task'ах
iarbuild.exe).iarsystems.iar-debug — отладка через IAR C-SPY прямо из VS Code.
iarsystems.iar-login — управление лицензиями IAR.
ms-vscode.cpptools — IntelliSense, навигация и отладка C/C++ (основа для embedded C).
ms-vscode.cpptools-extension-pack — метапакет: cpptools + CMake Tools + темы.
ms-vscode.cpptools-themes — цветовые темы для C/C++.
ms-vscode.cpp-devtools — дополнительные dev-инструменты для C/C++.
ms-vscode.cmake-tools — поддержка CMake-проектов (конфигурация, сборка, отладка).
ms-vscode.makefile-tools — поддержка Makefile-проектов (IntelliSense из make).
xaver.clang-format — форматирование C/C++ через clang-format.
hars.cppsnippets — сниппеты C++.
stmicroelectronics.stm32cube-ide-core — ядро интеграции STM32CubeIDE в VS Code.
stmicroelectronics.stm32cube-ide-project-manager — менеджер STM32-проектов (импорт .cproject и т.п.).
stmicroelectronics.stm32cube-ide-build-cmake — CMake-сборка STM32-проектов.
stmicroelectronics.stm32cube-ide-build-analyzer — анализ размера прошивки (RAM/Flash) после сборки.
stmicroelectronics.stm32cube-ide-bundles-manager — управление установленными STM32-тулчейнами/пакетами.
stmicroelectronics.stm32cube-ide-clangd — clangd-интеграция для STM32 (IntelliSense).
stmicroelectronics.stm32cube-ide-debug-core — ядро отладки STM32.
stmicroelectronics.stm32cube-ide-debug-jlink-gdbserver — отладка STM32 через SEGGER J-Link GDB Server.
stmicroelectronics.stm32cube-ide-registers — просмотр периферийных регистров STM32 в отладке.
stmicroelectronics.stm32cube-ide-rtos — RTOS-вью для STM32-проектов (FreeRTOS и др.).
Отказываться от коммерческих тулсов совсем не обязательно. В них еще есть такое что за никакое бесплатно не достанешь. Поэтому их тоже включаем как расширения.
Но вообще расширения - зло. С их конфликтами даже ChatGPT разобраться порой не может.
Могут начать
жра..потреблять ресурсы как не в себе.Но сегодня актуальней скорее наборы скилов для копилота. Успешно заменяет большинство расширений. То же форматирование с копилотом и скилами получается гораздо кастомизированей чем обычными тулсами.