Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
3555
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать

Продвинутые методы отладки

689

24.4. Внешние отладчики

Серьезные проекты требуют серьезных инструментов. И это горькая правда при разработке электроники. Если вы достигли этой части книги, не пропустив ни одной фундаментальной главы, то вы уже знаете ограничения интерфейса отладки ST-LINK.

К сожалению, ST-LINK работает медленнее, чем специальные внешние отладчики. В нем отсутствуют некоторые важные функции, и на него влияют серьезные ошибки, которые часто превращают опыт отладки в настоящий кошмар. Более того, поддержка OpenOCD для интерфейса ST-LINK по-прежнему неполна, и некоторые устройства STM32 (особенно устройства, принадлежащие к серии STM32L) вообще не поддерживаются. Наконец, разработка OpenOCD протекает слишком медленно: последний стабильный выпуск OpenOCD (0.9) датируется маем 2015 года, и на момент написания данной главы (ноябрь 2016 года) следующий стабильный выпуск (0.10) все еще находился в стадии разработки.

Рисунок 19: Отладчик SEGGER J-Link Ultra+

SEGGER – немецкая компания, специализирующаяся на разработке внешних отладчиков для портфолио ARM Cortex (включая микропроцессоры Cortex-M/R/A и другие современные микроконтроллеры, такие как серии PIC32 и Renesas RX). Отладчики SEGGER J-Link (см. рисунок 19) – это наиболее распространенная на сегодняшний день линия отладчиков, и они часто продаются как OEM-версии для других производителей (отладчики IAR и Keil – не что иное, как J-Link).

Наиболее важные функции, предлагаемые отладчиками J-Link:

Скорость загрузки до 3 МБайт/с.

Совместим со всеми популярными инструментариями, включая используемый нами GNU MCU Eclipse.

Поддерживает неограниченное количество программных точек останова во Flashпамяти.

Позволяет устанавливать точки останова во внешней Flash-памяти систем Cortex- M через контроллер FMC.

Продвинутые методы отладки

690

Кроссплатформенная поддержка (Microsoft Windows, Linux, Mac OS X).

Поддерживает одновременный (concurrent) доступ к процессору несколькими приложениями.

Поддержка многоядерной отладки.

Включает в себя удаленный сервер. Позволяет использовать J-Link удаленно через

TCP/IP.

Программное обеспечение поставляется с бесплатным GDB сервером, что позволяет использовать J-Link со всеми отладочными решениями на базе GDB.

Доступно программное обеспечение для программирования Flash-памяти при продакшине (J-Flash).

Независимая от отладчика загрузка во Flash-память (внутренняя Flash-память, CFI Flash, SPIFI Flash).

Поддержка внутреннего буфера трассировки CPU/MCU (ETB, MTB и т. д.).

Поддержка трассировки ETM (J-Trace Cortex-M, J-Trace ARM).

Широкий диапазон напряжения целевого микроконтроллера: 1,2 В – 3,3 В, толерантность к 5 В.

Поддерживает несколько целевых интерфейсов (JTAG, SWD, FINE, SPD и т. д.).

Отладчики J-Link варьируются от образовательного выпуска, который стоит около 60 долларов, до выпуска J-Trace PRO, который стоит около 1300 долларов. Если вы студент или малобюджетный любитель, стоит потратиться на образовательный выпуск, поскольку он поддерживает все соответствующие функции, предоставляемые профессиональными отладчиками J-Link. Если вы профессионал, то, по мнению автора книги, версия Ultra+ – отличный выбор.

Однако для владельцев отладочных плат STM (Nucleo, Discovery, Eval) есть хорошая и абсолютно бесплатная альтернатива: в апреле 2016 года SEGGER выпустила обновление микропрограммного обеспечения для интерфейса ST-LINK, которое преобразует его в совместимый с J-Link отладчик. Загрузив12 специальный программный инструмент13, ваш ST-LINK преобразуется в интерфейс, совместимый с J-Link OB, и вы можете использовать самые важные программные инструменты от SEGGER14. Более того, вы можете легко вернуть интерфейс ST-LINK, если хотите.

При отладке с помощью отладчика SEGGER нет необходимости использовать OpenOCD, поскольку SEGGER предоставляет собственный совместимый с GDB сервер, называемый JLinkGDBServer. Это одна из основных причин выбора данных инструментов, поскольку JLinkGDBServer является гораздо более быстрой и в то же время надежной альтернативой кроссплатформенного OpenOCD.

Инструкции по обновлению интерфейса ST-LINK до интерфейса, совместимого с J-Link, приведены на веб-сайте SEGGER. Мы не будем повторять их здесь. Вместо этого сейчас мы собираемся проанализировать, как использовать отладчик J-Link с инструментарием

GNU MCU Eclipse.

12https://www.segger.com/jlink-st-link.html

13К сожалению, на момент написания данной главы инструмент обновления был доступен только для ОС

Windows.

14Обратите внимание, что лицензия этого «бесплатного» обновления интерфейса ST-LINK не позволяет использовать его для отладки заказных и коммерческих устройств. Посетите веб-сайт SEGGER для получения полного перечня ограничений.

Продвинутые методы отладки

691

24.4.1. Использование SEGGER J-Link для отладчика ST-LINK

Вам необходимо установить программные средства SEGGER, чтобы начать использовать отладчики SEGGER. Вы можете скачать их с официального веб-сайта SEGGER15. Наибо-

лее важным пакетом является пакет J-Link Software and Documentation Pack. Вы найдете установщики для трех основных ОС: Windows, Mac OS и Linux. После завершения установки вам необходимо настроить рабочее пространство Eclipse, чтобы оно знало путь в файловой системе, где хранится JLinkGDBServer.exe (или просто JLinkGDBServer в

Mac OS и Linux).

Рисунок 20: Как настроить путь инструмента JLinkGDBServer.exe

В меню Eclipse перейдите в общие настройки Eclipse, а затем в раздел >Run/Debug → SEGGER J-Link (см. рисунок 20). Нажмите кнопку Restore Defaults. Eclipse предложит вам значения по умолчанию, рассчитанные при его запуске: если новая версия SEGGER была установлена, когда Eclipse была запущена, перезапустите Eclipse и снова нажмите кнопку Restore Defaults. Проверьте поле Executable: оно должно определять имя командной строки исполняемого файла GDB сервера J-Link. В большинстве случаев оно должно быть установлено правильно; если нет, отредактируйте его, чтобы оно соответствовало правильному имени. Проверьте поле Folder: оно должно указывать на фактическую папку, в которую были установлены инструменты J-Link на вашей платформе. Нажмите кнопку OK.

Предупреждение для пользователей Windows

Обратите внимание, что в Windows есть два исполняемых файла GDB-сервера: один с UI, а другой для использования в качестве командной строки (JLinkGDBServerCL.exe). Очевидно, вам нужно настроить поле Executable так,

чтобы оно указывало на JLinkGDBServerCL.exe.

15 https://www.segger.com/downloads/jlink

Продвинутые методы отладки

692

Инструментарий GNU MCU Eclipse нативно поддерживает создание конфигураций отладки для отладчика J-Link. Чтобы создать новую конфигурацию для текущего проекта, перейдите в меню Run → Debug Configurations…. Выделите пункт GDB SEGGER J-Link Debugging в списке слева и нажмите на значок New.

Рисунок 21: Вкладка Debugger в конфигурации J-Link Debug

Вкладки Main, Source и Common идентичны тем, которые находятся в конфигурации отладки GDB OpenOCD Debugging, и мы не будем их здесь описывать (см. Главу 5). Вкладка Debugger, показанная на рисунке 21, содержит параметры конфигурации, относящиеся к интерфейсу отладки и конкретному отлаживаемому микроконтроллеру STM32. Давайте рассмотрим наиболее важные поля в этой вкладке.

Executable (Исполняемый файл): это шаблон, который будет заменен полным путем к исполняемому файлу JLinkGDBServer. Настоятельно рекомендуется оставить все как есть....

Device name (Имя устройства): соответствует имени устройства целевого микроконтроллера. Это значение не может быть произвольным, и оно должно соответствовать точному типу устройства. Например, для Nucleo-F401RE вы должны вписать STM32F401RE. Если вы уже установили пакеты Keil Packs для микроконтроллеров STM32 и правильно связали подходящий идентификатор устройства в настройках проекта, это поле будет заполнено автоматически.

Endianness (Порядок следования байт): соответствует порядку байтов в памяти, и для каждого процессора на базе Cortex-M его нужно установить на Little.

Connection (Подключение): для USB-отладчика J-Link выберите USB. Если у вас есть J-Link с портом Ethernet, запишите IP-адрес, соответствующий отладчику

J-Link.

Продвинутые методы отладки

693

Interface (Интерфейс): микроконтроллеры STM32 можно отлаживать через классический интерфейс JTAG или SWD. Если вы используете отладочную плату от ST со встроенным интерфейсом ST-LINK, выберите пункт SWD.

Остальные параметры конфигурации во вкладке Debugger можно оставить как есть.

Рисунок 22: Вкладка Startup в конфигурации отладки J-Link Debug

Различия между интерфейсами JTAG и SWD

Начинающие пользователи, как правило, смущены этими двумя стандартами отладки, которые поддерживаются микроконтроллерами STM32. Объединённая рабочая группа по автоматизации тестирования (Joint Test Action Group, JTAG)

– это стандарт, который определяет как сигнальные характеристики, так и спецификацию протокола данных. Он основан на пяти сигналах плюс два дополнительных провода, используемых для определения напряжения целевого устройства VDD и GND. JTAG позволяет подключать внешние отладчики к микроконтроллерам. Это достаточно распространенный принятый стандарт в электронной промышленности.

Отладка по последовательному проводу (Serial Wire Debug, SWD) – это альтерна-

тивный фирменный 2-выводной электрический интерфейс ARM, использующий тот же протокол JTAG. SWD позволяет отладчику стать другим ведущим устройством шины AMBA для доступа к системной памяти и периферийным устройствам или регистрам отладки. Скорость передачи данных составляет до 4 МБайт/с при 50 МГц. SWD также имеет встроенное обнаружение ошибок. На устройствах JTAG с совместимостью с SWD выводы TMS и TCK используются в качестве сигналов SWDIO и SWCLK для двухрежимного программирования. Дополнительный и необязательный сигнал, называемый выходом отладки по