Налагодження з Eclipse та J-Link
Ця тема пояснює, як налаштувати та використовувати MCU Eclipse з адаптером Segger Jlink для налагодження PX4, що працює на NuttX (наприклад, плати серії Pixhawk).
Необхідне обладнання
- J-Link EDU Mini
- Адаптер для підключення Segger JLink до контролера польоту Порту відлагодження SWD (порт відлагодження).
- Мікро USB кабель
Встановлення
PX4
Налаштуйте PX4, дотримуючись звичайних вказівок:
- Налаштуйте середовище розробника/інструментальний набір PX4 для вашої платформи (наприклад, для Linux дивиться: Середовище розробки на Ubuntu LTS / Debian Linux).
- Завантажте PX4 та за потреби перезберіть його в командному рядку.
Eclipse
Встановлення Eclipse:
- Завантажте Eclipse CDT для розробників на C/C++ (MCU GitHub).
- Розпакуйте папку Eclipse та скопіюйте її куди завгодно (немає потреби запускати будь-які сценарії установки).
- Запустіть Eclipse та виберіть місце для вашої початкової робочої області.
Інструменти Segger Jlink
Для встановлення інструментів Segger Jlink:
- Завантажте та запустіть Пакунок програмного забезпечення та документації J-Link для вашої ОС (доступні пакети для Windows та Linux).
- У Linux інструменти встановлюються у /usr/bin.
Для отримання додаткової інформації див. : https://gnu-mcu-eclipse.github.io/debug/jlink/install/.
Перше використання
Підключіть Segger JLink до комп'ютера-хоста та порту відлагодження контролера польоту (через адаптер).
Увімкніть модульний політний контролер.
Запустіть Eclipse.
Додайте джерело вибравши File > Import > C/C++ > Існуючий код як проект та натисніть Next.
Вказати шлях до папки PX4-Autopilot та дати йому ім'я, потім виберіть ARM Cross GCC у Toolchain for Indexer Settings та натисніть на Finish. Імпорт триває деякий час. Дочекайтеся його завершення.
Встановіть налаштування MCU: клацніть правою кнопкою миші на проект верхнього рівня в досліднику проектів, виберіть Properties, а потім під MCU виберіть SEGGER J-Link Path. Встановіть його, як показано на знімку екрану нижче.
Пакети з оновленнями:
Клацніть на маленьку іконку у верхньому правому куті під назвою Open Perspective та відкрийте перспективу Packs.
Клацніть кнопку update all.
TIP
Це займає ДУЖЕ БАГАТО ЧАСУ (10 хвилин). Ігноруйте всі помилки про відсутні пакети. :::
![Eclipse: Workspace Packs Perspective](../../assets/debug/eclipse_packs_perspective.jpg)
- Пристрої STM32Fxx знаходяться в папці Keil, встановлюються правою кнопкою миші та вибором install на відповідний пристрій для F4 та F7.
Налаштування конфігурації налагодження для цілі:
- Натисніть правою кнопкою миші на проекті Settings (menu: C/C++ Build > Settings)
- Виберіть вкладку Devices, розділ Devices (Не Boards).
- Знайдіть FMU чіп, який ви хочете налагодити.
Виберіть налаштування відладки за допомогою невеликого випадаючого списку поруч із символом багу:
Потім виберіть GDB SEGGER J-Link Debugging і потім кнопку New config у верхньому лівому куті.
Налаштування конфігурації збірки:
Дайте йому назву та встановіть C/C++ Application до відповідного .elf файлу.
Виберіть Disable Auto build
::: інформація Пам'ятайте, що ви повинні побудувати ціль з командного рядка перед початком сеансу налагодження. :::
Вкладки Debugger та Startup не повинні потребувати будь-яких змін (просто перевірте ваші налаштування за знімками екрану нижче)
Відлагодження з урахуванням завдань SEGGER
Відладка, яка враховує задачі (також відома як відлагодження, яке враховує потоки), дозволяє вам показати контекст усіх запущених потоків/задач замість лише стеку поточної задачі. Це досить корисно, оскільки PX4 має тенденцію запускати виконання багато різних завдань.
Для активації цієї функції в Eclipse:
Спочатку вам потрібно увімкнути
CONFIG_DEBUG_TCBINFO
у конфігурації NuttX для вашої збірки (щоб викрити зсуви TCB).Відкрийте термінал у кореневій теці вихідного коду PX4-Autopilot
У терміналі відкрийте
menuconfig
використовуючи відповідну ціль make для збірки. Це виглядатиме приблизно так:shmake px4_fmu-v5_default boardguiconfig
(Див. PX4 Menuconfig Setup для отримання додаткової інформації) щодо використання засобів конфігурації).
Переконайтеся, що параметр Enable TCBinfo struct for debug вибраний, як показано:
Скомпілюйте бібліотеку jlink-nuttx.so в терміналі, виконавши наступну команду в терміналі:
make jlink-nuttx
Змініть Eclipse, щоб використовувати цю бібліотеку. В конфігурації J-Link GDB Server Setup оновіть Other options, щоб включити
-rtos /home/<PX4 path>/Tools/jlink-nuttx.so
, як показано нижче.Під час запуску налагоджувача ви повинні побачити зараз декілька потоків замість одного:
Вирішення проблем
Цільовий процесор відсутній в Package Manager
Якщо цільовий ЦП не відображається в package manager, вам може знадобитися ці крок для запуску відображення реєстру.
:::порада Це, як правило, не повинно траплятися (але повідомляжться про такі випадки при підключенні до контролера STM F7). :::
Додавання відсутніх файлів SVD для Peripheral View:
Дізнайтеся, де MCU Eclipse зберігає свої пакети (Preferences > C/C++ > MCU Packages):
Завантажте відсутні пакети з: http://www.keil.com/dd2/Pack/
Відкрийте завантажений пакет за допомогою інструменту для розпакування, та витягніть файли .SVD з: /CMSIS/SVD.
Виберіть потрібний файл .SVD у: Debug Options > GDB SEGGER JLink Debugging > SVD Path