[i] Создание проекта для МК К1986ВЕ8Т в Visual Studio Code
Статья содержит информацию по настройке среды Visual Studio Code для микросхемы К1986ВЕ8Т. В основе файлов сборки файлы из примера для Eclipse.
1. Установка необходимых компонентов
Для работы, помимо самой среды Visual Studio Code, нужны:
- GNU Arm Embedded Toolchain - набор программ (компилятор, ассемблер, компоновщик, библиотеки, отладчик GDB), которые необходимы для разработки ПО на устройствах с ядром Arm Cortex-M.
GNU Arm Embedded Toolchain доступен для скачивания по ссылке. - Windows Build Tools (при использовании ОС Windows) - набор программ (make, rm), которые необходимы для сборки и очистки проекта.
Windows Build Tools доступен для скачивания по ссылке. Для скачивания Windows Build Tools в виде архива необходимо на странице для скачивания перейти в раздел "Manual install", затем после перехода на GitHub открыть страницу "Releases". - OpenOCD - ПО для программирования и отладки устройств. OpenOCD для Windows, доступен для скачивания в конце статьи, раздел "Программное обеспечение", или на официальном сайте компании Миландр. При использовании ОС Linux версию OpenOCD с поддержкой микросхем компании Миландр можно собрать самостоятельно (см. "[i] Компиляция OpenOCD из исходных данных").
- Стандартные С/С++ и C/C++ Extension Pack от Microsoft.
- Расширение Cortex-Debug, а также связанные с ним плагины, для отладки.
- src/main.c - основной файл программы, реализующий моргание светодиодов на отладочной плате разработки компании Миландр для К1986ВЕ8Т.
- папка Library - папка с библиотекой SPL для микросхемы К1986ВЕ8Т, включая файл startup_K1986BE8T.S.
- папка linker - папка со скриптом сборки K1986BE8T.ld для запуска программы из ОЗУ.
- папка openocd - папка с конфигурационными файлами OpenOCD: jlink.cfg, cmsis-dap.cfg и K1986BE8T.cfg.
- папка svd - папка с файлом System View Description MDR1986VE8.svd, с помощью которого далее можно будет просматривать регистры периферийных блоков под отладкой.
- Makefile - файл с правилами сборки проекта. Файлы при сборке собираются в папку build.
- .vscode/settings.json - файл с общими настройками. Здесь хранится имя проекта (PROJECT_NAME) и пути к установленным инструментам (GCC_ARM_PATH, BUILD_TOOLS_PATH, OPENOCD_PATH). Перед первой сборкой необходимо указать в этом файле пути к скачанным инструментам и при необходимости заменить значение PROJECT_NAME на своё.
- .vscode/tasks.json - файл с задачами сборки проекта. Позволяет запускать сборку с помощью файла Makefile, а также очищать папку build/ с собранными файлами.
- .vscode/launch.json - файл с конфигурациями запуска отладки с помощью OpenOCD и arm-none-eabi-gdb, используя плагин Cortex-Debug. В шаблоне предусмотрены две конфигурации запуска отладки — через программатор J-Link и через программатор CMSIS-DAP.
- .vscode/c_cpp_properties.json - файл с настройками IntelliSense (пути к заголовочным файлам, дефайны, путь к компилятору).
- Debug K1986BE8T (CMSIS-DAP / OpenOCD) - отладка через программатор с интерфейсом CMSIS-DAP.
- Debug K1986BE8T (J-Link / OpenOCD) - отладка через программатор J-Link.
После скачивания данного ПО можно добавить пути к папкам bin с исполняемыми файлами в системный PATH (Windows / Linux). В предлагаемом шаблоне проекта пути к инструментам указываются локально в файле settings.json - это позволяет хранить несколько версий тулчейна в системе и не править PATH.
В самой среде Visual Studio Code потребуются следующие расширения:
Рисунок 1 - Расширения для VSCode
2. Сборка проекта
В конце статьи приложен архив с шаблоном проекта:
Рисунок 2 - Шаблон проекта
2.1. Структура шаблона проекта
В этом шаблоне расположены все необходимые файлы:
2.2 Настройка путей к инструментам
Перед первой сборкой нужно открыть файл .vscode/settings.json и указать в нём пути к ранее скачанным инструментам:
Рисунок 3 - Настройка путей к инструментам"GCC_ARM_PATH": ".../gcc-arm-none-eabi-xxx/bin",
"BUILD_TOOLS_PATH": ".../xpack-windows-build-tools-xxx/bin",
"OPENOCD_PATH": ".../OpenOCD_xxx/openocd_mdr/bin"В путях следует использовать прямые слеши "/". После сохранения settings.json нужно закрыть все открытые в VS Code терминалы (или перезапустить VS Code) — иначе изменения PATH не применятся.
2.3 Сборка проекта
Перед запуском отладки проект необходимо собрать вручную.
Для сборки проекта нужно нажать в меню Terminal опцию Run Build Task... и в появившемся меню выбрать задачу Build:
Рисунок 4 - Сборка проекта
В файле tasks.json описано, какая команда вызывается при запуске каждой из задач. Задача Build вызывает make, задача Clean — make clean, задача Rebuild последовательно выполняет очистку и сборку.
Сборка проекта осуществляется в папке build, в ней располагаются все собранные файлы. По результатам сборки создаются файлы программы .elf, .hex и .bin, а также вспомогательные .map и .lst. Их название соответствует названию проекта, заданному в settings.json с помощью PROJECT_NAME.
Также по результатам успешной сборки в терминале выводится информация о размере собранного elf-файла.
Рисунок 5 - Результаты сборки
При повторном запуске задачи сборки будут пересобраны только изменённые файлы. Если нужна полная пересборка, можно воспользоваться пунктом сборки Rebuild, либо сначала запустить Clean, а затем Build.
3. Запуск отладки
Отладка осуществляется с помощью arm-none-eabi-gdb (который находится в составе GNU Arm Embedded Toolchain) и OpenOCD. Для работы с ними в среде Visual Studio Code используется плагин Cortex-Debug.
В шаблоне проекта уже реализованы необходимые настройки для запуска отладки в файле launch.json. Шаблон содержит две конфигурации отладки:
В ОС Windows для работы OpenOCD с отладчиками требуется переустановить драйвер отладчика на WinUSB-совместимый с помощью утилиты Zadig, как это описано в статье [i] Создаем проект для МК MDR1206FI, MDR1206AFI в IDE Eclipse.
В ОС Linux для работы OpenOCD с отладчиками нужно разрешить отладчику-программатору работать как доверенному источнику, как это описано в статье [i] Компиляция OpenOCD из исходных данных.Поскольку в данном шаблоне проект собирается для запуска из ОЗУ, в конфигурациях отладки в полях overrideLaunchCommands и overrideRestartCommands помимо стандартных команд reset halt и load выполняется ручная инициализация регистра VTOR и регистров SP/PC значениями из таблицы векторов, расположенной в ОЗУ. Это необходимо, поскольку после сброса процессор Cortex-M4 по умолчанию читает таблицу векторов по адресу 0x00000000 (boot ROM), а не из ОЗУ.
Для запуска отладки нужно открыть представление Run and Debug (View → Open View → Run and Debug или нажать кнопку с "жуком" на боковой панели).
Рисунок 6 - Представление Run and Debug В этом представлении выбрать нужную отладочную конфигурацию в зависимости от используемого программатора и нажать зелёную стрелку. Рисунок 7 - Запуск отладки
После запуска программа остановится в начале функции main(). Процессом исполнения программы можно управлять с помощью панели сверху. Регистры периферийных блоков доступны во вкладке XPERIPHERALS. Регистры ядра отображаются в VARIABLES → Registers.
Рисунок 8 - Процесс отладки
Файлы для скачивания
Программное обеспечение