Настройка Пошаговой Отладки JLink+Eclipse

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Классическая ситуация. Записали через интерфейс SWD прошивку и... ничего не происходит. HeartBeat LED не мигает. Логи в UART(е) не появляются. CLI не отвечает. Вероятно прошивка где-то свалилась в HardFault_Handler(). Что же делать? Как понять где ошибка? Можно конечно включать и исключать перед сборкой куски программы и прошивать пока не выясним ту проблемную функцию. Но это может занять очень много времени. Целый день.
Тут выручит пошаговая GDB отладка. А для этого надо настроить GDB клиент и GDB сервер.


Про пошаговую отладку в консоли у меня есть отдельный пост. https://habr.com/ru/post/694708/

Однако пошаговая отладка в консоли может показаться утомительной. Куда проще пошагово отлаживаться прямо в текстовом редакторе, например в Eclipse.

Что надо из оборудования?

оборудование

Назначение

кабель USB-A USB micro

Для подключения программатора к NetTop PC

отладочная плата (например nrf5340-DK)

для пошаговой отладки прошивки в микроконтроллере

программатор J-Link

для пошаговой отладки микроконтроллера

LapTop

для запуска утилит

Что надо из софтвера?

Утилита

Назначение

JVM

Виртуальная машина для прокрутки текстового редактора eclipse

JLinkGDBServer.exe

GDB сервер

nrfjprog.exe

утилита, чтобы прошить микроконтроллер семейства nrf

arm-none-eabi-gdb.exe

GDB клиент

eclipse.exe

Текстовый редактор

Фаза 1 Установить GNU ToolChain для Arm Embedded

Подробнее про это тут https://habr.com/ru/post/673522/

Надо прописать в переменную Path путь к ARM ToolChain(у): препроцессору, компилятору, асcембреру, компоновщику, binutils(ам), отладчику.

C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin

Фаза 1 Запустить GDB Сервер Отладки

В качестве сервера отладки можно использовать утилиту JLinkGDBServer.exe.
C:\Program Files (x86)\SEGGER\JLink\JLinkGDBServer.exe

Можно даже накропать простенький скрипт, чтобы не настраивать каждый раз мышкой настройки JLink GDB Server(а)

 
echo off
cls
set GDBServerOpt = -select USB -device nRF5340_xxAA_APP -endian little -if SWD -speed 400 -ir -LocalhostOnly -logtofile -log "C:\projects\code_base_workspace\code_base_firmware\tool\GdbServerLog.txt"

set GDBServerDir="C:\Program Files (x86)\SEGGER\JLink\"
set GDBServerPath=%GDBServerDir%JLinkGDBServer.exe"
cd %GDBServerDir%
call %GDBServerPath% %GDBServerOpt%

В настройках JLink GDB Server(а) надо проверить интерфейс соединения с платой. В данной плате это USB. Проверить интерфейс соединения программатора и целевого микроконтроллера. В данной схемотехнике это SWD. Проверить, что выбрано нужное процессорное ядро. В данном случае это nRF5340_xxAA_APP. Если всё верно, то нажимаем ок.

JLink GDB Server переходит в режим ожидания подключения к GDB клиенту.

Вот примерный лог успешного подключения после запуска GDB клиента.

Фаза 3. Настройка GDB Клиента

Надо открыть меню Debug Configuration, создать конфигурацию и указывает путь к *.elf файлу

На вкладке Debugger указать путь к GDB клиенту arm-none-eabi-gdb.exe.

Можно прописать полный путь к GDB клиенту
C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin\arm-none-eabi-gdb.exe

Настроить вкладку Startup.

ставим, что надо остановится на функции main

Настроить вкладку Common, как показано на скриншоте

Теперь достаточно нажать кнопку Debug и можно производить пошаговую отладку

получилась такая схема взаимодействия утилит


Вывод

Пошаговая отладка поможет вам отладить UART. Далее вы запускаете CLI поверх UART и можно будет свободно отлаживаться только через CLI.

Акроним

Расшифровка

CLI

Command-line interface

UART

universal asynchronous receiver-transmitter

LED 

light-emitting diode

RISC

reduced instruction set computer

JVM

Java virtual machine

PC

personal computer

UNIX

UNiplexed Information Computing System

ARM

Advanced RISC Machine

SWD

Serial Wire Debug

USB

Universal Serial Bus

GNU

GNU's Not UNIX

GDB

GNU Debugger 

Ссылки

https://eclipse-embed-cdt.github.io/debug/jlink/
https://mcuoneclipse.com/2019/09/22/eclipse-jtag-debugging-the-esp32-with-a-segger-j-link/
https://bitknitting.wordpress.com/2015/07/11/using-eclipse-to-program-the-nrf51822/
https://karibe.co.ke/2014/03/debugging-arm-freescale-microcontrollers-with-j-link-gdb-server-and-gnu-arm-toolchain-gdb-with-semihosting-in-linux/

https://habr.com/ru/post/673522/
https://habr.com/ru/post/694708/
https://habr.com/ru/post/694408/
https://habr.com/ru/post/681280/

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы программировали микроконтроллеры?
100% да 1
0% нет 0
Проголосовал 1 пользователь. Воздержавшихся нет.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы используете пошаговую отладку при разработке прошивок?
0% да 0
0% нет 0
Никто еще не голосовал. Воздержавшихся нет.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какой способ пошаговой отладки используете вы?
0% из консоли 0
0% из IDE 0
Никто еще не голосовал. Воздержавшихся нет.
Источник: https://habr.com/ru/post/682498/


Интересные статьи

Интересные статьи

Статья направлена на решение проблемы "зависания" выгрузки результатов опросов при использовании модуля Vote 1С-Битрикс в случае, если в опросе много вопросов или ответов. Так-же в статье реализована ...
Компания Apple только что анонсировала фреймворк Swift Charts, который мы можем использовать для создания диаграмм в наших приложениях. Судя по беглому взгляду на API, фреймворк может предоставить гор...
При проектировании СВЧ электроники часто приходится использовать микрополосковые фильтры реализованные на плате в виде проводящих дорожек. Если нужен не очень качественный фильтр (2-3 порядка), то рас...
Помните, когда вам в последний раз доводилось сталкиваться с ошибкой, связанной с пользовательским интерфейсом, на исправление которой у вас уходили многие часы? Возможно, эта ошибк...
От скорости сайта зависит многое: количество отказов, брошенных корзин. Согласно исследованию Google, большинство посетителей не ждёт загрузки больше 3 секунд и уходит к конкурентам. Бывает, что сайт ...