惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
Lohrmann on Cybersecurity
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recorded Future
Recorded Future
S
Schneier on Security
I
Intezer
Latest news
Latest news
N
News and Events Feed by Topic
Scott Helme
Scott Helme
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
量子位
博客园 - 【当耐特】
S
Security @ Cisco Blogs
Google Online Security Blog
Google Online Security Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
NISL@THU
NISL@THU
The Cloudflare Blog
李成银的技术随笔
T
ThreatConnect
L
LINUX DO - 最新话题
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Jina AI
Jina AI
T
Tor Project blog
The Hacker News
The Hacker News
人人都是产品经理
人人都是产品经理
小众软件
小众软件
S
Security Archives - TechRepublic
美团技术团队
博客园 - Franky
Security Latest
Security Latest
J
Java Code Geeks
P
Proofpoint News Feed
V
V2EX
The GitHub Blog
The GitHub Blog
WordPress大学
WordPress大学
Application and Cybersecurity Blog
Application and Cybersecurity Blog
H
Help Net Security
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Hugging Face - Blog
Hugging Face - Blog
N
Netflix TechBlog - Medium
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
SecWiki News
SecWiki News
腾讯CDC
爱范儿
爱范儿
D
Docker

Все публикации подряд на Хабре

Прошла AnalystDays – хорошие выступления и нетворкинг Моделирование широкополосной антенны с двойной круговой поляризацией и высокой изоляцией Ваше прошлое физически существует прямо сейчас. И вы заморожены там навсегда От списка инструментов к technical output: как security engineer’у описывать hands-on опыт в CV и на интервью I just want an agent. Часть 1. Как я научил ИИ собирать ИИ-агентов за пользователей и выиграл конкурс Вайбкодинг спас меня от подрядчиков. А потом я поняла, что сама стала подрядчиком для своих агентов Святой Августин и GAN: почему борьба добра и зла — это генеративная состязательная сеть В каждом QR-коде зашита половина лишней информации. Намеренно Я открываю автомат ключом, меняю рулон бумаги и зарабатываю 180 тысяч в месяц с точки Мастер восстановления. Культура достиженства и выгорание Недельный геймдев: #279 — 24 мая, 2026 Защита от дублирования кода агентами: семантические концепции Frontend Status: свежий дайджест фронтенда и AI — 25.05.2026 Где искать IT-работу кроме HH: подборка платформ 2026 Почему простые числа собираются в спирали? OCR для Data Lakehouse: от Apache Tika к собственному решению на базе Docling Jira — Тьюринг-полная Kubernetes-аудит после Wiz и Prisma: как живут без CNAPP в 2026 «Тестируем MVP в 4 раза быстрее»: как нейросети изменили жизнь предпринимателей На каком стеке и железе работает умное наблюдение в вашем городе: обзор технологий от разработчиков видеоаналитики Как мы ускорили согласования на двух заводах в 24 раза Heartbeat-мониторинг cron-job'ов: dead-man-switch на FastAPI [Перевод] Сегодня нет джуниоров, а в 2031 году не станет и синьоров Профайлер для PostgreSQL: от идеи до работающего MVP за сутки [Перевод] Ограничения размера cookie в ASP.NET Core в продакшене: причины и способы решения Проблема «божественного» Obsidian: почему я отказался от централизованного подхода в работе Лицензии GNU GPL: как пройти проверку Минцифры и заказчика для госзакупок и КИИ Хакатон Samsung IT Academy Hack 2026: как студенты оптимизировали поиск в корпоративном мессенджере Хакатон Samsung IT Academy Hack 2026: как студенты оптимизировали поиск в корпоративном мессенджере MTProxy jumper — делаем автоматическое переключение прокси-серверов Telegram Ты уже используешь агента. Просто не заметил Книжный салон. Послевкусие и благодарности Как отлаживать мини‑приложения в MAX и почему без DevTools это боль Cбор биометрических данных. Как защищается наша биометрия на практике Как запустить учет активов без цифровой свалки: первые 90 дней CGE: визуализация кравлера и скрытых связей между поддоменами Зачем банки тратят миллиарды на науку (спойлер: не благотворительности ради) Книга: «Современный Java Concurrency. Глубокое погружение в Virtual Threads, Structured Concurrency и Scoped Values» Как использовать подписку ChatGPT и Claude в Cursor без оплаты за API токены Специализированная ИСУП или модуль в универсальной платформе: вот в чем вопрос Обход белых списков через WebRTC на стероидах (с поддержкой iOS и десктопа) Регата INFOSTART CIO CAMP: когда команда проверяется не в переговорной, а на воде Пет-проект, который не умер: система бронирования устройств как полигон для AI-разработки Не надо встраивать ИИ в каждую корпоративную систему, это архитектурная ошибка Нейросети для дизайна интерьера: Выбираем лучший ИИ для генерации концептов и планировок квартиры Что там с Ил-114-300 Что такое DAS: как и зачем продукт-менеджеры саботируют запуск новых продуктов 8% компаний измеряют критическое мышление руководителей. Что делают остальные 92% CVE, Shell и побег из контейнера: испытываем возможности PT Cloud Application Firewall Как я научил Алису петь: генерация музыки по голосовой команде Восстановление данных с помощью бесплатной утилиты Easy Disk Checker Как мы построили сквозную аналитику в Power BI Год разработки iOS-игры, 266 тысяч показов и $33: как я делал Vault и почти ничего не заработал Ты прокрастинируешь потому, что избегаешь напрасных усилий, а не чрезмерных нагрузок Я построила диагностику «стоит ли это автоматизировать» — и она трижды говорила глупости. Разбор ошибок Как устроены world models, что показал Google на прошлой неделе и где это меняет gamedev и робототехнику Двухдневная рабочая неделя — будущий стандарт CPU не умер, он просто ждал. Китай строит двухэксафлопсный суперкомпьютер без единого GPU — прорыв, необходимость, фейк? 3Sound: поиск бесплатных звуков для игр больше не боль? 3 Тбит/с по-русски: почему DDoS в 2026 году стал угрозой для любого бизнеса 10 Гбит/с — зачем вам такая скорость передачи данных в облаке Ремонтируем аналоговый XY-самописец Endim 622 [Перевод] IPO компании SpaceX: хорошая попытка, но нет «Ща будет шрифт»: история одного русского embedded‑шрифта Как аквариум на подоконнике превратился в full-stack платформу с AI GiftsHub — из чат-бота в полноценный backend-продукт Пиратство, копирайт и DMCA: как Napster, The Pirate Bay и YouTube изменили закон. Часть II Как найти внутренние резервы для развития предприятия Как один французский чиновник от безысходности начал платил зарплаты картами и практически изобрёл банкноты RAG в энтерпрайзе: почему демо работает, а прод нет AI-агент для финансовых процессов: как мы научили ИИ считать числа из базе данных без галлюцинаций Автопостинг на 8 платформах: архитектура waterfall, custom publisher'ы и API-ловушки Кинетика против бронзы: Почему Голиаф был обречен в дуэли с Давидом [Перевод] Масштабирование LLM: от одного чипа до ЦОДа. Глава 2. Шардинг LLM не работает за вас. Она работает с вами Чем лучше защищает минеральный SPF, тем страшнее он выглядит Стимпанк как часть жизни. История паровых двигателей и место, которое они занимали в мире в XIX-XX веках. Часть 1 Гастарбайтеры ворвались в IT и зарабатывают на рекламе: тут вам не снег лопатой кидать Новые методы и инструменты: как мы обновили курсы по тестированию в Яндекс Практикуме Java 21 в стиле «клятый энтерпрайз» на одноплатном компьютере возрастом 13 лет Ваши секреты внутри LLM. Куда уходят промпты и чего стоит опасаться? 10× труда. 10% к бонусу. Главный риск AI-эпохи — это сениор AI-инженер, который умеет считать Сапожник с сапогами Минимум, который удержит тебя на плаву в период дедлайнов Как без проблем переносить курсы между платформами? Обзор формата SCORM Когда Claude Code ошибается не по своей вине: документационный долг в соло-проектах 70% кода с AI — и ни на день быстрее qrrot — база данных со встроенным ИИ Шахматные программы V. Оценочная функция Восстание масс в обществе спектакля и отчуждение труда в царстве количества: что делать во времена всеобщего упадка? Не умеешь работать с ИИ? Тебя заменит тот, кто умеет Как интеллект становится уязвимостью под давлением Не надо так: три типичные ошибки, которые приводят ко взлому Заметки про код-стайл в C++ Забытый мультиколор (часть 1) Культура ест стратегию на завтрак: почему не работает долгосрочное планирование Советское ИИ: Забытые гении Как оплатить iCloud в России в 2026 году без смены региона Apple ID Глубокая интеграция месседжинга с бизнес процессами в фреймворке NodaLogic Контекстные менеджеры в Python за пределами with open(): пишем свои и упрощаем код
VSCode как IDE для embedded разработки
d_suslov · 2026-05-25 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение15 мин

Охват и читатели5

Кейс

В данной статье рассматривается процесс настройки vscode для разработки встроенного ПО на базе ядер cortex-M и процессе превращения редактора в полноценную IDE. При этом большинство представленных расширений являются универсальными и применимы в широком спектре задач программирования.

В отличии от проприетарных решений, таких как Keil, подход использования редактора vscode + компилятор gcc позволяет гибко настроить каждый пункт от начала разработки до релиза продукта. За время своей работы мною было опробованы разные решения: от классического keil до связки sublime и CodeSourcery. В последние годы я перешел на vscode + msys2: практически все ПО Open Source, не требует лицензий, не ограничено 32 Кб кода и может работать без сети интернет.

0. MSYS2: Набор инструментов для разработки

Данный этап не является обязательным, так как компилятор, OpenOCD, Python, Qt и другие компоненты можно установить как отдельные программы. Однако использование MSYS2 предпочтительнее: этот подход позволяет управлять всеми зависимостями в рамках единой экосистемы, а обновление всей среды разработки сводится к одной команде: pacman -Syu.

Для настройки msys2 необходимо:

  1. Скачайте и установите msys2.

  2. В VS Code вызовите палитру команд (Ctrl+Shift+P или F1).

  3. Выберите пункт Preferences: Open User Settings (JSON).

  4. Добавьте конфигурацию для интеграции терминала 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

Подсветка синтаксиса
arm-assembly

arm-assembly

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+
better-cplusplus-syntax

better-cplusplus-syntax

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

Подсветка комментариев
better-comments

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

Закладки в боковой панели
bookmarks

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

Проверка орфографии
code-spell-checker

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

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
drawio

drawio

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

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-graph

git-graph

Наглядно показывает историю репозитория в виде графа. Имеет инструменты для работы с git прямо из интерфейса графа.

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

Так же есть расширение GitLens, которое красиво разрисует граф репозитория с аватарками и графиком активности, но т.к. оно платное - его я не использую.

GitLens
git-lens

git-lens

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-files

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
hex-editor

hex-editor

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

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

HxD
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
linker-script

linker-script

Подсветка синтаксиса для удобного отображения структуры 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
kroki

kroki

Markdown Mermaid
Mermaid

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
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
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 периодически бывает:).

Буду рад узнать ваше мнение: какие инструменты помогают вам в работе с встраиваемыми системами? Какие расширения используете вы? Напишите о них в комментариях.