Вся работа по проекту осуществляется средствами VSCode и нет необходимости запускать отдельные приложения/терминалы и т.д.
Проект подготовлен для работы с отладочной платой Milandr 1986BE92 через VSCode (версия для Windows) c openOCD и GNU Arm Embedded Toolchain. Подобный проект можно собрать для нескольких устройств от Milandr. Проделаны основные шаги и дан пример. Используемый программатор: j-link pro
- Make Clean - очистка ./build
- Make Build - сборка проекта
- Write .elf via OpenOCD - запись .elf файла прошивки во флеш МК
- Read hex via OpenOCD - чтение флеш банка 0 (для данной конфигурации - чтение всей памяти)
- Start OpenOCD - Запуск OpenOCD
- Open telnet OpenOCD - открыть telnet к 4444 порту OpenOCD
- 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.
Требуется установка следующих программ: Система:
- Набор инструментов GNU ARM
- GNU make
- openOCD ссылка на автоматически собранные релизы под windows
Не забудьте добавить папки GnuWin32\bin и openocd\bin в среду PATH
Код VS:
- Cortex-Debug расширение
- Для корректной работы IntelliSense и определения .h файлов из makefile это расширение
!Не забудьте изменить пути до исполняемых файлов и папок библиотек в tasks.json и launch.json
Также, не забудьте в файле конфигурации ОСРВ FreeRTOS/include/FreeRTOSConfig.h указать верное значение у параметра configCPU_CLOCK_HZ с частотой тактирования МК, которое используется вашей программой.
Есть особенность работы с путями при выполнении комманд в openOCD, т.к. он создавался под linux-подобные ОС. Пути в коммандах необходимо вводить с обратными слешами "/".
Решение некоторых проблем с LIBUSB_ERROR_NOT_SUPPORTED тык тык
SPL-файлы и .SVD-файлы можно найти здесь или здесь. Они также приложены к проекту.
Для работы gdb добавить строку в настройки расширения
"cortex-debug.gdbPath": "<ВАШ ПУТЬ>\\arm-none-eabi-gdb.exe",
Протестировано на отладочном комплекте 1986BE92У