Перейти к содержанию

Milandr + VSCode + GCC + OpenOCD + freeRTOS

Что может быть лучше, чем обмазаться открытым инструментарием на российских МК и закрытой Винде? Правильно, ничего нет лучше. Поэтому, так и сделаем.

Ты дЭбил? | Мемы

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

Проект подготовлен для работы с отладочной платой Milandr 1986BE92 через VSCode (версия для Windows) c openOCD и GNU Arm Embedded Toolchain. Подобный проект можно собрать для нескольких устройств от Milandr. Проделаны основные шаги и дан пример. Используемый программатор: j-link pro

Доступные комманды (Ctrl+Alt+T):

  1. Make Clean – очистка ./build
  2. Make Build – сборка проекта
  3. Write .elf via OpenOCD – запись .elf файла прошивки во флеш МК
  4. Read hex via OpenOCD – чтение флеш банка 0 (для данной конфигурации – чтение всей памяти)
  5. Start OpenOCD – Запуск OpenOCD
  6. Open telnet OpenOCD – открыть telnet к 4444 порту OpenOCD
  7. Connect to GDB – подсоедениться к gdb и начать отладку в консоли

Комманды (3,4) НЕ требуют предварительного запуска комманды Start OpenOCD это может привести к ошибке libusb_error_access.

Доступна отладка через gdb нативными средствами VSCode (F5)

Версия без OpenOCD и RTOS. Раотает с классическими j-link-программаторами и их ПО

Изменения

В файлы библиотеки был добавлен небольшой код, который определяет некоторые переменные в зависимости от используемого компилятора (в частности, DMA). Добавлена папка автозагрузки для компилятора GCC. В новых версиях библиотеки такой папки нет. Добавлен файл MDR32F9Qx_board.h, который прописан в зависимостях библиотеки. Чип выбирается в этом файле. Чтобы при отладке видеть содержимое регистров контроллера, были подправлены SVD файлы.

Был написан файл конфигурации openOCD для 1986ве92У. Он находится в каталоге ../OpenOCD_data/ В файле open_ocd_flash.cfg можно выбрать тип транспортного протокола SWD или JTAG.

Ознакомительные статьи по openOCD тык тык

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

Требуется установка следующих программ: Система:

Не забудьте добавить папки GnuWin32\bin и openocd\bin в среду PATH

Для VS Code:

!Не забудьте изменить пути до исполняемых файлов и папок библиотек в tasks.json и launch.json

Есть особенность работы с путями при выполнении комманд в openOCD, т.к. он создавался под linux-подобные ОС. Пути в коммандах необходимо вводить с обратными слешами “/”.

Решение некоторых проблем с LIBUSB_ERROR_NOT_SUPPORTED тык тык

SPL-файлы и .SVD-файлы можно найти здесь или здесь. Они также приложены к проекту.

Для GDB

Для работы gdb добавить строку в настройки расширения

cortex_debug

 "cortex-debug.gdbPath": "<ВАШ ПУТЬ>\\arm-none-eabi-gdb.exe",

Протестировано на отладочном комплекте 1986BE92У. Вся работа по проекту осуществляется средствами VSCode и нет необходимости запускать отдельные приложения/терминалы и т.д.

Ссылка на GitHub:

Comment

programel