[i] Создание проекта для МК MDR1206FI, MDR1206AFI, К1986ВК025 в Visual Studio Code
1. Установка необходимых компонентов
Для работы, помимо самой среды Visual Studio Code, нужны:
1. GNU RISC-V Embedded GCC – набор программ (компилятор, ассемблер, компоновщик, библиотеки, отладчик GDB), которые необходимы для разработки ПО на устройствах с ядром RISC-V.
GNU RISC-V Embedded GCC доступен для скачивания по ссылке: https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases. Т.к. пакет xPack собирается разработчиками для нескольких платформ, скачивать нужно архив для целевой ОС.
2. Windows Build Tools (при использовании ОС Windows) – набор программ (make, rm), которые необходимы для сборки и очистки проекта.
Windows Build Tools доступен для скачивания по ссылке: https://xpack.github.io/dev-tools/windows-build-tools/install/. Для скачивания Windows Build Tools в виде архива необходимо на странице для скачивания перейти в раздел "Manual install", затем после перехода на GitHub открыть страницу "Releases".
3. OpenOCD - ПО для программирования и отладки устройств. OpenOCD для Windows, собранный с поддержкой МК MDR1206FI и MDR1206AFI, доступен для скачивания в конце статьи, раздел "Программное обеспечение", или на официальном сайте компании Миландр. При использовании ОС Linux версию OpenOCD с поддержкой микросхем компании Миландр можно собрать самостоятельно (см. "[i] Компиляция OpenOCD из исходных данных").
В самой среде Visual Studio Code потребуются следующие расширения:
- Стандартные С/С++ и C/C++ Extension Pack от Microsoft.
- Расширение Cortex-Debug, а также связанные с ним плагины, для отладки.
2. Сборка проекта
В конце статьи приложен архив с шаблоном проекта:
Рисунок 2 – Шаблон проекта
2.1. Структура шаблона проекта
В этом шаблоне расположены все необходимые файлы:
- src/main.c - файл с пустой функцией main() основной программы.
- папка Library - папка с библиотекой SPL для микросхем.
- папка svd - папка с файлами System View Description, с помощью которых далее можно будет просматривать регистры периферийных блоков под отладкой.
- makefile - файл с правилами сборки проекта. Сборка возможна для разных микросхем MDR1206FI, MDR1206AFI, MDR32F02 (К1986ВК025) - выбор микросхемы осуществляется ключом MCU (возможные варианты - MDR1206 or MDR32F02). Также есть несколько скриптов линковки программы под разные регионы памяти (FLASH, ОЗУ) - выбор осуществляется ключом CONFIG (возможные варианты - FLASH, RAM_TCM_debug, RAM_TCM_release). Конфигурации сборки в общем аналогичны таковым в шаблоне проекта для среды Eclipse. Файлы при сборке собираются в папку build.
- .vscode/settings.json - файл с общими настройками - в шаблоне проекта в этом файле добавлено ключевое слово для названия проекта, при необходимости переименования проекта нужно заменить значение "PROJECT_NAME" на свое.
- .vscode/tasks.json - файл с задачами сборки проекта. Позволяет запускать сборку с помощью файла makefile с заранее установленными ключами, а также очищать папку build/ с собранными файлами.
- .vscode/launch.json - файл с конфигурациями запуска отладки с помощью openocd и riscv-none-elf-gdb, используя плагин Cortex-Debug. Конфигурации запуска во многом аналогичны таковым в шаблоне проекта для среды Eclipse.
2.2 Сборка проекта
Перед запуском отладки проект необходимо собрать вручную.
Но перед самой сборкой нужно указать с помощью определений, для какой микросхемы будет собираться проект (поскольку это определяется не только за счет ключей сборки, но и за счет директив препроцессора):
Рисунок 3 – Выбор микроконтроллера директивами препроцессораДалее для сборки проекта нужно нажать в меню Terminal опцию Run Build Task... и в появившемся меню выбрать требуемую конфигурацию сборки:
Рисунок 4 – Сборка проектаВ файле tasks.json описано, какие команды вызываются при вызове каждой из задач - с какими ключами MCU и CONFIG вызывается команда make.
Сборка проекта осуществляется в папке build, в ней располагаются все собранные файлы, а также добавляется файл current_config.mk c текущей конфигурацией (MCU и CONFIG). По результатам сборки создаются файлы программы .elf и .hex, а также вспомогательные .map и .lst. Их название соответствует названию проекта, заданному в settings.json с помощью PROJECT_NAME.
Также по результатам успешной сборки в терминале выводится информация о размере собранного elf-файла.
В качестве примере соберем проект в конфигурации "Build: MDR1206 FLASH" для микросхем MDR1206FI, MDR1206AFI с запуском из FLASH-памяти.
Рисунок 5 – Результаты сборки
При повторном запуске той же задачи сборки будут пересобраны только измененные файлы. Если требуется полная пересборка ранее собранной конфигурации, сначала требуется удалить собранные файлы с помощью задачи Clean build, и затем заново запустить требуемую конфигурацию.
3. Запуск отладки
Отладка осуществляется с помощью riscv-none-elf-gdb (который находится в составе xPack) и OpenOCD (скачанного/собранного ранее). Для работы с ними в среде Visual Studio Code используется плагин Cortex-Debug.
В шаблоне проекта уже реализованы необходимые настройки для запуска отладки в файле launch.json.
В качестве аппаратного отладчика выбрана используемая на отладочной плате микросхема FT2232HL.
Для запуска отладки нужно открыть представление Run and Debug (View->OpenView->Run and Debug или нажать кнопку с "жуком" на боковой панели).
Рисунок 6 – Представление Run and Debug
В этом представлении выбрать нужную отладочную конфигурацию. Ранее проект был собран в конфигурации "Build: MDR1206 FLASH", соответственно на этапе запуска отладки нужно выбрать конфигурацию "Debug MDR1206FI (FT2232HL debugger)" и нажать зеленую стрелку.
Рисунок 7 – Запуск отладкиПосле запуска программа остановится в начале функции main(). Процессом исполнения программы можно управлять с помощью панели сверху. Регистры периферийных блоков доступны во вкладке XPERIPHERALS. Регистры ядра отображаются в VARIABLES->Registers.
Рисунок 8 – Процесс отладкиСохранить статью в PDF
Файлы для скачивания
Программное обеспечение



