Дебаггинг в реальном времени через JTAG/SWJ-DP для микроконтроллеров на ядре ARM Cortex-M / Хабр
С некоторых пор фирма Segger предлагает технологию Real Time Terminal (RTT) для своих JTAG адаптеров J-Link. Суть ее в том, что программа на микроконтроллере может выводить и принимать отладочную информацию из JTAG/SWJ-DP порта, как это обычно делается через UART. И тогда нам больше не нужен реальный отладочный UART. Далее чуть подробнее о возможностях этой технологии.
Возможность выводить программой отладочную информацию в порт JTAG/SWJ-DP была реализована, как только у микроконтроллеров появился сам этот порт. Для этого есть два пути: использовать технику semihosting или технику Serial Wire Output (SWO).
Использование semihosting приводит к подмене каналов ввода-вывода стандартных файловых операций языка С-и. Это не всегда приемлемо, поскольку файловые операции в приложении могут уже использоваться по другому назначению. Также semihosting необходимо явно отключать и перекомпилировать проект при выпуске релизной версии.
Вдобавок ко всему semihosting обеспечивает самую медленную передачу данных из рассматриваемых здесь технологий.
Использование Serial Wire Output проще чем semihosting, однако требует использования дополнительного сигнала SWO порта JTAG/SWJ-DP, и также вызывает необходимость в перекомпиляции при переходе на релизную версию, т.е. версию без подключения отладчика. Функции вывода SWO синхронные, т.е. ожидают готовности порта и не обладают необходимым детерминизмом.
Технология Real Time Terminal от Segger еще более упрощает вывод отладочной информации через SWJ-DP и предоставляет следующие удобства:
• Достаточно только двух внешних линий– это SW CLK и SW DIO.
• Весь дополнительный код в микроконтроллере занимает не более 500 байт, если не использовать ввод, то даже 300 байт.
• Не требуется перекомпиляция для релизной версии, функции отладочного вывода асинхронные и практически не занимают процессорного времени и не оказывают никакого влияния на ход выполнения программы при отсутствии подключения отладочного адаптера.
• Скорость отладочного ввода-вывода очень высока.
• Отладочный ввод-вывод можно перенаправить в любую стороннюю программу эмулятор терминала поддерживающую протокол telnet.
• Segger предоставляет бесплатные утилиты эмулятора терминала, логгера и telnet клиента для подключения к микроконтроллеру через отладочный адаптер без необходимости запуска сторонних IDE с отладчиками.
На рисунке выше плата контроллера на базе чипа STM32F745VET6. Внешний кварц 16 МГц. Частота ядра 168 МГц.
Отладка потребовалась для начального загрузчика по шине CAN. Последовательный порт RS232 подключенный к UART есть, но тоже используется для загрузчика. Выводить в него отладочную информацию означало бы сильно видоизменить отладочную версию программы по сравнению с релизной. При дефиците времени это крайне нежелательно.
- Взяты исходники RTT (http://download.segger.com/J-Link/RTT/RTT_Implementation_141217.
zip)
- Исходники распакованы и скопированы в директорию проекта названную RTT. Сам проект выполнялся в среде Keil MDK ARM
- Исходники подключены к проекту. В общий список заголовочных файлов проекта добавлены файлы SEGGER_RTT.h и SEGGER_RTT_Conf.h
- В файле SEGGER_RTT_Conf.h выполнены дополнительные настройки: значение BUFFER_SIZE_UP увеличено до 2048, значение SEGGER_RTT_PRINTF_BUFFER_SIZE увеличено до 512. Параметры изменялись на самом деле итерационно, пока не перестали происходить переполнения указанных буферов.
- Редактирование исходников загрузчика. Во все интересующие места были вставлены вызовы функции SEGGER_RTT_printf с необходимыми сообщениями. Использовал эту функцию как самую удобную, хотя она и вносит значительное потребление стека и определенную задержку преобразования данных. Но в моем случае это было приемлемо.
- Поскольку нужна была отладка даже во время программирования внутренней Flash, то перенес код RTT в RAM микроконтроллера.
Для этого во всех 2-х файлах исходников RTT ввел директиву
#pragma arm section code = «CODE_IN_RAM»,
а в файле линкера .sct определил эту область следующим образом:RW_IRAM1 0x20000000 0x00010000
{
.ANY (+RW +ZI)
*(CODE_IN_RAM)
} - Определил для структуры SEGGER_RTT_CB абсолютный адрес размещения директивой
static SEGGER_RTT_CB _SEGGER_RTT __attribute__((at(0x20000000)))
- Скомпилировал проект. После компиляции выяснилось, что код RTT в RAM занял 400 байт при нулевой оптимизации.
- Вставил в инструментальное меню IDE Keil вызов утилиты JLinkRTTViewer.exe
- Поскольку предпочитаю в качестве эмулятора термина использовать TeraTerm, то вставил в меню вызов и его. Строка вызова при этом такая:
”C:/Program Files (x86)/teraterm/ttermpro.exe” /T=1 telnet://localhost:19021 /X=0 /Y=0 /W=»J-Link RTT”
Показалось интересным с какой же скоростью выводится информация в эмулятор терминала через отладочный адаптер с применением RTT.

Оказалось, что в J-Link используется поллинг с периодичностью около 40 мс. Для передачи данных используется не более 50% этого периода. В блоке данных передаваемых за период пакеты несущие полезные данные занимают тоже не более 50% времени. Пакеты переносят не более 3-х байт полезных данных. Три байта полезных данных в пакете также занимают не более 50% его длины. Итого получаем: 0.5*0.5*0.5 = 0.125 т.е. 12.5 % пропускной способности канала SW используется для передачи отладочного вывода.
Частоту канала выше 4 МГц в J-Link поднять не удалось ни при каких настройках. Это значит, что максимально мы имеем скорость передачи 4 Мбит/с. Из них только 4*0.125= 0.5 т.е. 500 Кбит/с в лучшем случае можно использовать для отладочного вывода. Это, конечно, немного, по сравнению с реальным отладочным UART, которые могут передавать на скоростях в несколько Мбит/с, но все имеет свою цену.
Версия отладчика J-Link для Arm Linux позволяет Raspberry Pi играть на хосте
Segger портировал свое программное обеспечение для отладки J-Link на оборудование Arm Linux, такое как Raspberry Pi, для использования со своими J-Link Debug Probes.
Raspberry Pi и другие штуковины Arm Linux уже давно поддерживаются в качестве целей платформами разработки, такими как Eclipse, и совместимыми отладчиками, такими как J-Link от Segger Microcontroller. Теперь они могут выступать в роли самой платформы разработки.
Segger выпустила свое первое программное обеспечение для отладки для использования со своими аппаратными отладчиками J-Link, которые поддерживают 32-битные и 64-битные платформы Arm Linux, включая Raspberry Pi. Этот выпуск, ориентированный в первую очередь на проекты промышленной автоматизации, совпадает с выпуском совместимого Eclipse Embedded CDT (C / C ++ Development Tools) для Arm и RISC-V (см. Ниже).
J-Link Pro 500 (слева) и J-Link Base Compact
J-Link для Arm Linux содержит все версии программного обеспечения для командной строки и поддерживает те же целевые устройства и функции, что и в эквивалентах Windows, macOS и Linux x86.
Программное обеспечение включает программное обеспечение удаленного сервера GDB Server, что делает его «совместимым со всеми популярными средами разработки». J-Link SDK поддерживает написание пользовательских программ для J-Link в Arm Linux.
J-Link для Arm Linux работает с различными отладочными зондами J-Link, подробно описанными в таблице ниже. Все зонды J-Link предлагают поддержку USB, JTAG, cJTAG, SWD, SWO и ETB Trace, а некоторые предлагают Ethernet, ETM Trace, WiFi и другие функции. Пропускная способность и целевые скорости интерфейса различаются, при этом скорость загрузки ОЗУ составляет от 200 КБ в секунду до 3 МБ в секунду.
Сравнение функций J-Link Debug Probe
J-Link для Arm Linux – важная веха на пути к быстрому освоению Arm с платформами x86 для размещения встраиваемых систем разработки. Тем не менее, даже четырехъядерный процессор Cortex-A72 Raspberry Pi 4 с объемом оперативной памяти до 8 ГБ далеко не идеален для более требовательных приложений для разработки и отладки.
Raspberry Pi 4 |
Как заявил Ливиу Ионеску, разработчик проекта Eclipse Embedded CDT с открытым исходным кодом: «Хотя это кажется очень необычным, даже маловероятным, теперь можно использовать небольшой одноплатный компьютер Raspberry Pi 4 с пакетом Eclipse для разработчиков встроенных C / C ++ и дополнительные бинарные инструменты xPack, а также зонд отладки Segger J-Link и программное обеспечение J-Link для создания проектов, их сборки и запуска сеансов отладки! Удивительный!”
Как заявил Рольф Сеггер, основатель Segger Microcontroller: «Хотя типичное использование – это автоматизированные тестовые системы и использование Raspberry Pi в качестве моста J-Link или сервера в LAN / WLAN, существует множество других приложений. С появлением Eclipse Embedded CDT можно использовать Raspberry Pi и J-Link в качестве оборудования для разработки, загрузки и отладки прошивки для встраиваемых устройств ».
Встроенный CDT Eclipse
Eclipse Embedded CDT (Инструменты разработки C / C ++) включает набор подключаемых модулей, которые позволяют разработчикам создавать, строить, отлаживать и управлять проектами ARM и RISC-V с помощью среды Eclipse, «без необходимости вручную создавать и поддерживать файлы сборки», говорит Фонд Eclipse . Эти подключаемые модули, ранее называвшиеся GNU MCU / ARM Eclipse, включают исполняемые файлы и статические / разделяемые библиотеки как в 32-, так и в 64-разрядных версиях и работают в Windows, macOS и GNU / Linux.
Платформа обеспечивает поддержку отладки через JTAG / SWD, а также просмотр периферийных регистров для сеансов отладки. Шаблоны доступны для некоторых процессоров Cortex-M. Плагины Eclipse могут интегрировать ряд внешних инструментов, доступных из отдельного проекта xPack.
Дополнительная информация
Программное обеспечение J-Link для Arm Linux доступно в бесплатных некоммерческих и коммерческих версиях. Коммерческие версии аппаратных пробников J-Link варьируются от 378 долларов за J-Link Base Compact до 998 долларов за J-Link Pro, оба из которых показаны выше. Образовательные версии, такие как J-Link EDU и J-Link EDU Mini, продаются всего за 18 долларов.
Более подробную информацию можно найти в Segger в объявлении , а также его странице J-соединения и торговой странице J-Link .
Подробнее о Eclipse Embedded CDT можно найти здесь .
SEGGER представляет J-Link EDU mini – недорогой J-Link, ориентированный на сектор образования
В другом направлении, направленном на удовлетворение потребностей образовательного сообщества в профессиональных, но недорогих инструментах разработки, SEGGER представляет J-Link EDU mini. Большие вещи входят в этот небольшой пакет, так как он предлагает все расширенные функции, связанные с коммерческим решением J-Link, при этом цена составляет всего 18 долларов США. К ним относятся использование ведущей IDE SEBGER Embedded Studio, Ozone Debugger и GDB Server, а также других мощных инструментов визуализации, таких как SystemView и J-Scope.
Единственными ограничениями являются разрешенное использование в образовательных целях, скорость зонда (до 200 кбайт / с) и использование для целей Cortex-M через интерфейс SWD.
Любой инструмент или среда IDE, поддерживающая отладчики J-Link, будут работать с J-Link EDU mini, включая SEGGER Embedded Studio, которые также могут использоваться без ограничений для образовательных целей. Это касается инструментов под управлением Windows, Linux и MacOS X. Независимо от среды разработки, J-Link EDU mini может напрямую загружаться во флэш-память и программы отладки, выполняемые во Flash или RAM. Он даже поставляется с возможностью установки неограниченного количества точек останова во флэш-памяти. Компактный форм-фактор составляет всего 50 мм х 18 мм (2 “x 3/4”).
«В SEGGER мы долгое время проводили профессиональные инструменты для студентов и любителей и будем продолжать это делать. Это позволит начинающим молодым инженерам со всего земного шара познакомиться с такими инструментами на раннем этапе их карьеры. Создание функциональности J-Link по такой низкой цене – еще одно усилие для создания равных возможностей и обеспечения доступности нашей технологии для всех », – говорит Рольф Сиггер, основатель микроконтроллера SEGGER.
Чтобы получить дополнительную информацию о J-Link EDU mini, перейдите по адресу: //www.segger.com/products/debug-probes/j-link/models/j-link-edu-mini/
Не удалось подключить устройство USB SEGGER J-Link [0100] к виртуальной машине WINDOWS 7
Я запускаю Windows 7 внутри Mac OS X с VirtualBox, я использовал BLE внутри W7 без каких-либо проблем. Затем я использовал BLE USB в Mac, и когда я попытался использовать его снова в W&, я получил это сообщение:
Failed to attach the USB device SEGGER J-Link [0100] to the virtual machine WINDOWS 7.
USB Device 'SEGGER J-Link’ with UUID {} is in use by someone else
Я отключил USB, перезагрузил Mac, запустил W7, но не могу снова подключить его к W7
macos usb virtualbox virtualizationПоделиться Источник Baldrick 20 октября 2014 в 20:50
4 ответа
- Не удается использовать беспроводную карту usb в virtualbox host:OSX guest:BT5
я пробовал много решений в интернете, и все решения не работают для меня.
я установил фильтр usb параметра usb в виртуальном поле, но он продолжает всплывать с ошибкой для меня. Вот такие ошибки: Не удалось подключить устройство USB Ralink 54M.USB……. [0001] к виртуальной машине BT5. USB…
- samsung android usb устройство disconnect reconnect постоянно windows 7
Когда я подключаю samsung tab s2 к ПК windows 7, изначально windows не распознает устройство usb, или драйвер MTU не удалось установить, много ошибок. Я удаляю все остальные драйверы usb, но все еще есть проблема. samsung android usb драйвер, неизвестное устройство, usb устройство постоянно…
60
Я все понял. Вы должны это сделать:
- Выключите гостя
- Подключите устройство, пусть хозяин схватит его
- В Хосте перейдите в виртуальное поле и отредактируйте конфигурацию для гостя. На вкладке “Ports” перейдите к USB и добавьте фильтр для включения подключенного устройства
- Отключите устройство от сети
- Запустить гостя OS
- Когда гостевая ОС работает, подключите устройство.
Виртуальная коробка захватит устройство usb и сделает его доступным для гостя. Затем гость продолжит работу и попытается идентифицировать и настроить устройство.
Сделано.
Поделиться Baldrick 21 октября 2014 в 20:19
16
Решение для меня состояло в том, чтобы установить пакет расширения Oracle VM VirtualBox. Мне пришлось обновить virtual box до последней версии, а затем загрузить последнюю версию пакета расширений.
Затем на вкладке USB настроек виртуальной машины я установил “включить USB контроллер” и “USB 2.0 (EHCI) контроллер”. До этого он был установлен на USB 1.1 (OHCI) контроллер, который не работал. Затем просто добавьте фильтр USB для составного устройства, и когда я снова запустил машину, все заработало.
Поделиться user38157 21 марта 2016 в 05:34
4
Я использую nRF51-ДК встроенных средств разработки от северных полупроводниковый прибор, который имеет компании Segger JLink встраиваемые на доске. У меня были проблемы с его обнаружением на Mac OS X, работающем под управлением VirtualBox/Windows 7.
Я попробовал добавить фильтр в разделе порты – >USB в настройках образа устройства. Устройство появлялось как составное устройство в разделе USB устройств в Диспетчере устройств Windows 7.
Затем я удалил фильтр, установил драйвер Segger/JLink для Mac и убедился, что Mac забирает устройство, запустив утилиту JLinkExe. Затем я продолжил добавлять фильтр в порты – >USB под изображением устройства и вуаля! – Windows 7 взял Segger / JLink над VirtualBox.
В качестве примечания я также установил пакет расширения Oracle VM для моей версии VirtualBox от www.virtualbox.org
Поделиться Ajith Peter 22 октября 2015 в 08:03
- Не удалось подключить устройство android к Windows 7
У меня есть следующая конфигурация Windows 7 Ultimate работает на MacBookPro Samsung Galaxy SIII (GT-I9300) с cyanogenmod 10.
2(stable) Android SDK с eclipse Я так старался, но мой eclipse не обнаруживает телефон для usb отладки приложения android. Я уже пробовал следующее. Я включил отладку USB на…
- Не удается подключиться к J-Link через USB на macOS Sierra
Недавно я переключился с машины Linux на Macbook Pro 2016 с macOS Sierra 10.12.4. Когда я пытаюсь подключиться к J-Link, он терпит неудачу независимо от того, какое приложение я использую (JLinkExe или JLinkGDBServer) со следующей ошибкой: kuba@chimera:~$ JLinkExe SEGGER J-Link Commander V6.14c…
3
J-Link debug probe версии 9.3 отлично работает с VirtualBox (VB) с USB1.1 (без пакета расширений). Как только я начал использовать более новый отладочный зонд J-Link версии 10.1, устройство jlink не было распознано в VB, потому что драйвер устройства jlink не удалось установить. Эта проблема была решена с помощью пакета расширений для virtualbox. Но пакет расширений нуждается в лицензии для долгосрочного использования, так что имейте это в виду.
Поделиться divya kalkotwar 15 мая 2017 в 09:58
Похожие вопросы:
Как использовать USB через удаленное подключение к виртуальной машине
Я пытаюсь заниматься разработкой мобильных приложений (BlackBerry, Android) на виртуальной машине. Моя идея заключается в том, что независимо от того, на каком рабочем столе я нахожусь, я могу…
Подключение принтера USB к устройству Windows CE
Я подключил принтер USB для windows xp и windows 7 без драйвера принтера, он подключается правильно, с помощью win32 API мы можем открыть порт и общаться с ним. Кво – теперь я хотел подключить…
T-Mobile Comet Android USB отладка соединения с Windows 7
Окружающая среда: Windows 7 Ultimate SP1 Java JDK 6 Eclipse Гелиос Android SDK (включая пакет драйверов Google USB, редакция 4) Android Инструменты Разработки (ADT) Комета T-Mobile с Froyo (Android. ..
Не удается использовать беспроводную карту usb в virtualbox host:OSX guest:BT5
я пробовал много решений в интернете, и все решения не работают для меня. я установил фильтр usb параметра usb в виртуальном поле, но он продолжает всплывать с ошибкой для меня. Вот такие ошибки: Не…
samsung android usb устройство disconnect reconnect постоянно windows 7
Когда я подключаю samsung tab s2 к ПК windows 7, изначально windows не распознает устройство usb, или драйвер MTU не удалось установить, много ошибок. Я удаляю все остальные драйверы usb, но все еще…
Не удалось подключить устройство android к Windows 7
У меня есть следующая конфигурация Windows 7 Ultimate работает на MacBookPro Samsung Galaxy SIII (GT-I9300) с cyanogenmod 10.2(stable) Android SDK с eclipse Я так старался, но мой eclipse не…
Не удается подключиться к J-Link через USB на macOS Sierra
Недавно я переключился с машины Linux на Macbook Pro 2016 с macOS Sierra 10. 12.4. Когда я пытаюсь подключиться к J-Link, он терпит неудачу независимо от того, какое приложение я использую (JLinkExe…
Не удалось подключиться к виртуальной машине Docker
Я использую Docker для windows и на hyper-v. Я создал эту виртуальную машину, но не могу подключиться к ней и получаю сообщение об ошибке:: Не удалось подключиться к виртуальной машине, попробуйте…
как подключить устройство hotplug USB к Qemu 4.2.0?
У меня есть Qemu 4.2.0 с Debian Testing Bullseye и Kernel 5.4.0 , и мне нужно подключить и отключить устройство USB. В настоящее время я подключаю свое устройство USB с помощью qemu… -usb -device…
как подключить Мой мобильный телефон к виртуальной машине google cloud
Я пытаюсь разработать приложение android в виртуальной машине google cloud, Я не могу подключить свой телефон к виртуальной машине google cloud. Я использую ubuntu 16.04
Превращаем ST-Link в J-Link и дружим его с Миландром.

Превращаем ST-Link в J-Link и учим его работать с микроконтроллерами Миландр.
Уже около года прошло с момента публикации вот этой новости (SEG-JLINK. Segger J-Link debug probe for STM32) на сайте STMicroelectronics, но её я только недавно заметил.
Забегая вперед скажу, что удалось прошить ссылка мой программатор под J-Link, правда без танцев не обошлось. И пока единственное что могу сказать, так это то, что шиться контроллеры стали быстрее (а может это самовнушение).
Интересно? Тогда читайте дальше.
И так, что же там обещают после обновления до J-Link
With unparalleled performance, extensive feature set, large number of supported MCUs, and compatibility with all popular development environments, the J-Link (SEG-JLINK) debug probes optimize user debugging and flash programming experience.
Хорошую производительность, поддержку большого количества микроконтроллеров и совместимость со всеми популярными средами разработки и много много всего. . Прям то, что нужно
Скажу сразу лицензионное соглашение предполагает обновление ПО на отладочных платах Nucleo и Discovery.
Вот список поддерживаемых плат:
- 32F0308DISCOVERY (STM32F0308-DISCO)
- 32F3348DISCOVERY (STM32F3348-DISCO)
- 32F411EDISCOVERY (STM32F411E-DISCO)
- 32F429IDISCOVERY (STM32F429I-DISC1)
- 32F429IDISCOVERY (STM32F429I-DISCO)
- 32F469IDISCOVERY (STM32F469I-DISCO)
- 32F746GDISCOVERY (STM32F746G-DISCO)
- 32L0538DISCOVERY (STM32L0538-DISCO)
- 32L100CDISCOVERY (STM32L100C-DISCO)
- 32L476GDISCOVERY (STM32L476-DISCO)
- NUCLEO-F030R8
- NUCLEO-F031K6
- NUCLEO-F042K6
- NUCLEO-F070RB
- NUCLEO-F072RB
- NUCLEO-F091RC
- NUCLEO-F103RB
- NUCLEO-F207ZG
- NUCLEO-F302R8
- NUCLEO-F303K8
- NUCLEO-F303RE
- NUCLEO-F303ZE
- NUCLEO-F334R8
- NUCLEO-F401RE
- NUCLEO-F410RB
- NUCLEO-F411RE
- NUCLEO-F429ZI
- NUCLEO-F446RE
- NUCLEO-F446ZE
- NUCLEO-F746ZG
- NUCLEO-F767ZI (Nucleo-144)
- NUCLEO-L011K4
- NUCLEO-L031K6
- NUCLEO-L053R8
- NUCLEO-L073RZ
- NUCLEO-L152RE
- NUCLEO-L476RG
- STM32F0DISCOVERY
- STM32F3DISCOVERY
- STM32F4DISCOVERY (STM32F407G-DISC1)
Если вашей платы нет в списке, не расстраивайтесь, скорее всего и её можно прошить.
Из основных плюсов после хирургического вмешательства можно выделить:
- Загрузка в RAM со скоростью до 3 МБайт/с
- Неограниченное количество точек останова
- Ну и конечно же кросплатформенность
Для того, что бы обновиться необходимо скачать с сайта Segger утилитку ST-Link Reflash Utility и распаковать в удобное для вас место. Эта же утилита позволит и откатиться обратно на стандартную прошивку ST-Link.
Что именно нужно делать. Желающие могут почитать оригинальную статью на официальном сайте, ну а остальные милости прошу:
Отключаем ST-Link если он подключен к ПК (Иначе он не определяется утилитой, хотя может мне просто не повезло)
Запускаем утилиту
Принимаем лицензионное соглашение
- И ещё раз
Подключаем наш ST-Link
Выбираем [1] Upgrade to J-Link и ждем окончания обновления прошивки. Пункт [3] возвращает родной ST-Link.
Должно получиться что-то похожее на это.
Прошиваться будут только те программаторы которые изначально запрограммированы только для отладки STM32, если как у меня прошивка стояла STM32+STM8 – то придется сначала прошить чистую, а затем уже J-Link.
Теперь осталось только настроить нашу любимую среду разработки (я про Keil) для работы с микроконтроллерами Миландр, так как изначально J-Link поддерживает российский ARM чуть меньше чем никак.
Решение максимально простое (решение найдено на форуме Миландр) – нужно показать J-Link как и куда шить. Для этого качаем файл MilandrDBforSegger.zip. И распаковываем в папку ..\Keil_v5\ARM\Segger\
Теперь можно шить и отлаживать микроконтроллеры Миландр. Я проверял только на 1986ВЕ92, прошивка и отладка работают отлично.
Интерфейс программирования выбран SWD, а скорость 3 МГц (выше ставить бессмысленно – отладка просто отваливается, аналогично и с JTAG).
Желаю хорошего и приятного кодинга.
Разблокировка и стирание FLASH с Segger J-Link
При использовании загрузчика (см. « Последовательный загрузчик для Freedom Board с Processor Expert »), я обычно защищаю области флэш-памяти загрузчика, чтобы приложение не было случайно стерто приложением ;-). При программировании моих плат с помощью P & E Multilink, прошивка P & E автоматически разблокирует и удалит микросхему. Это не то же самое, если работать с Segger J-Link, так как требует дополнительных действий.
Защищенные FLASH-страницы с помощью Processor Expert
Если я попытаюсь перепрограммировать защищенный загрузчик с помощью Segger J-Link (как в CodeWarrior, так и в Eclipse / KDS с GDB), загрузка завершится неудачно. Эффект в том, что приложение на плате почему-то не соответствует тому, что должно быть. Глядя на консоль, он показывает, что стирание завершилось неудачно (но о реальной ошибке не сообщалось) :-(:
Jlink: Failed to erase sectors 0 @ address 0x00000000 (Algo135: Flash protection violation.Flash is write-protected.)
J-Link не удалось стереть в CodeWarrior
Интеграция GNU ARM Eclipse Segger с GDB (например, Kinetis Design Studio) не лучше: без знака ошибки, единственная вещь — это скрытая ОШИБКА в журнале консоли JLinkGDBServerCL:
ERROR: Failed to erase sectors 0 @ address 0x00000000 (Algo135: Flash protection violation. Flash is write-protected.)
ОШИБКА Algo135 Flash Protection Нарушение в связи с неудачным программированием FLASH
Что мне нужно, это снять защиту памяти и затем стереть ее.
Segger J-Link имеет очень быстрое программирование. Частично эта скорость заключается в том, что прошивка Segger проверяет каждую FLASH-страницу, действительно ли она должна быть запрограммирована, и только затем она стирает и перепрограммирует эту страницу. Таким образом, загрузка дважды одного и того же приложения фактически не затронет флэш-память. Кроме того, он не выполняет полное удаление устройства: он только программирует страницы, которые я использую в своем приложении. Преимущество этого — первая скорость. И это не стирает данные приложения, которые я использую, в энергонезависимой памяти (см. « Данные конфигурации: использование внутренней флэш-памяти вместо внешней EEPROM »). Однако иногда мне действительно нужно очистить все свои данные во FLASH, а затем мне нужно стереть все свои страницы FLASH на устройстве.
У Segger есть продукт под названием «J-Flash», который используется для прошивки и удаления устройств вне среды IDE. Существует бесплатная версия Lite, которую можно скачать с Segger. Эта утилита не предназначена для использования в производстве. С помощью этой утилиты у меня есть графический интерфейс для стирания и программирования моего устройства.
J-Flash Lite
Но J-Flash Lite не может разблокировать мои заблокированные страницы Flash :-(.
Если мое устройство не заблокировано, я могу использовать CodeWarrior «Flash file to target» (см. « Мигание с помощью кнопки (и волшебной палочки) »), чтобы стереть устройство:
Стирание устройства с флэш-файла на цель
Опять же, это не работает, если устройство заблокировано. CodeWarrior имеет еще одну функцию под названием «Целевая задача», которую можно использовать для стирания / незащищенности (если ваше устройство поддерживается), см. « Устройство защищено? «.
Поэтому мне нужно использовать другой инструмент для разблокировки и снятия защиты с моего устройства: J-Link Commander .
Для разблокировки устройства в Segger есть утилита под названием «J-Link Commander», доступная по адресу http://www.segger.com/jlink-software.html . В Windows это двоичный файл «jlink.exe», который представляет собой утилиту командной строки. Для разблокировки устройства используйте
unlock Kinetis
Разблокировка устройства
Но, похоже, мне нужно сделать разблокировку, а затем стереть, чтобы сделать ее постоянной. Чтобы стереть устройство, я могу использовать ту же утилиту командной строки. Но мне нужно сначала указать имя устройства, а затем я могу стереть его (пример для KL25Z):
device mkl25z128xxx4 unlock kinetis erase
❗ Мне нужно сделать операцию стирания сразу после разблокировки.
а) установить устройство б) разблокировать и в) стереть, иначе не получится?
Разблокировка и стирание с помощью J-Link Commander
Чтобы перепрограммировать защищенные секторы FLASH с помощью Segger J-Link, мне нужно сначала разблокировать и массово стереть устройство. Для этого есть утилита J-Link Commander, которая имеет интерфейс командной строки для снятия защиты и удаления устройства. Только для стирания J-Flash (и Lite) является очень полезным инструментом, особенно для получения «чистой» памяти устройства.
Для меня способ и инструменты Segger очень мощные. В этом случае все очень гибко, но не так очевидно. Поэтому я надеюсь, что этот пост поможет другим разблокировать и стереть его устройство.
Счастливого стирания 🙂
Jlink Driver
The hardware is prepared to use HALL or latest. Segger was kind enough to send us a J-Link Plus probe for us to test. Keil, GCC and IAR IDEs and toolchains are supported, see this for more information.
















J-Link – датчик отладки Segger J-Link для STM32
В дополнение к Условиям использования, Условиям продаж ST и Политике конфиденциальности, содержащимся на этом веб-сайте, следующие положения и условия применяются ко всем партнерским программам STMicroelectronics.
Хотя STMicroelectronics попыталась предоставить точную информацию на веб-сайте, STMicroelectronics не несет ответственности за точность информации. Вся информация, предоставленная STMicroelectronics на этом веб-сайте, предоставляется «КАК ЕСТЬ», со всеми ошибками и без каких-либо гарантий, явных, подразумеваемых или установленных законом.STMicroelectronics может изменить или прекратить свои партнерские программы или свои продукты или услуги в любое время и без предварительного уведомления. Любое упоминание продуктов или услуг, не относящихся к STMicroelectronics, носит исключительно информационный характер и не означает одобрения со стороны STMicroelectronics. Использование слова или термина «партнер или партнеры» на этом веб-сайте не указывает и не подразумевает наличие каких-либо партнерских или агентских отношений или любых юридических или фидуциарных отношений любого рода между STMicroelectronics и любой другой компанией или о том, что такая компания является аффилированным лицом STMicroelectronics.Партнеры по партнерским программам STMicroelectronics предоставляют отдельные лицензии на покупку или использование своих продуктов и / или услуг и связанных технологий с устройствами STMicroelectronics. Свяжитесь с соответствующим партнером напрямую, чтобы узнать условия лицензирования, цену, поддержку любой другой информации о продуктах и / или услугах такого партнера. Условия использования таких продуктов и / или услуг могут отличаться от партнера к партнеру и лицензируются напрямую и отдельно от такого партнера. STMicroelectronics не делает никаких заявлений или гарантий относительно пригодности продуктов и услуг, предлагаемых или предоставляемых партнерами, и STMicroelectronics настоящим отказывается от всех гарантий и условий, явных, подразумеваемых или установленных законом, в отношении любого продукта или услуг, предоставляемых партнерами, включая, но не ограничены любыми гарантиями и условиями товарной пригодности, пригодности для определенной цели, права собственности, ненарушения прав или вытекающих из деловых отношений, использования или торговой практики.Ни при каких обстоятельствах STMicroelectronics не несет ответственности за любые прямые, косвенные, случайные, особые, примерные, косвенные или штрафные убытки или любые убытки, включая, помимо прочего, потерю использования, прибыль или доход, как бы то ни было, и по любой теории ответственности, будь то по контракту, строгая ответственность или правонарушение (включая халатность или иное), возникающее каким-либо образом в связи с вашим участием или вашей зависимостью от партнерской программы, использованием или невозможностью использования или покупки продуктов и / или услуг у партнеров или производительности таких продуктов и услуг, ваших взаимоотношений с партнером, вашего использования или невозможности использовать или полагаться на портал STMicroelectronics или любую информацию, предоставленную на нем STMicroelectronics, даже если было сообщено о возможности такого ущерба.Ссылки на сторонние веб-сайты, когда они предоставляются STMicroelectronics, не находятся под контролем STMicroelectronics, и STMicroelectronics не несет ответственности за любое содержимое, материалы, мнения, советы или заявления, а также за точность или надежность любого такого содержимого и материалов, сделанных на любом связанный сайт или любая ссылка, содержащаяся на связанном сайте, или любые изменения или обновления таких сайтов. STMicroelectronics не несет ответственности за любую форму передачи, полученной с любого связанного сайта, включая, помимо прочего, веб-трансляцию или передачу звука.Доступ к любому связанному сайту или любой ссылке, содержащейся на связанном сайте, осуществляется пользователем на свой страх и риск. STMicroelectronics предоставляет вам эти ссылки только для удобства, и включение любой ссылки не подразумевает каких-либо гарантий (подразумеваемых, явных или иных) или какого-либо одобрения STMicroelectronics стороннего веб-сайта.
Выбор и установка кабеля Segger J-LINK
Использование Tag-Connect с отладчиками Segger J-LINKJ-LINK – это эмулятор JTAG с питанием от USB, поддерживающий большое количество ядер ЦП.Это также относится к аналогичным отладчикам, которые поддерживают традиционное 20-контактное соединение ARM 0,1 ″.
Мы предлагаем два решения для использования кабелей Tag-Connect Plug-of-Nails ™ с отладчиком J-LINK:
1. Полный традиционный JTAG с использованием нашего адаптера TC2050-ARM2010 TC2050-IDC 10-pin Plug-of-Nails (tm ) кабели. Это совместимо со всеми процессорами ARM.
2. Решение меньшего размера для процессоров Cortex с использованием интерфейса JTAG SWD (Serial Wire Debug) ARM20-CTX и кабеля TC2030-IDC.
Оба решения похожи тем, что в них используется переходник с 20-контактным разъемом для подключения Tag-Connect. Тем не менее, Full Traditional JTAG также позволяет вам дополнительно включать питание цели от отладчика и обеспечивает доступ ко всем сигналам, предоставляемым традиционным 20-контактным соединением ARM 0,1 ″, тогда как решение SWD (Serial Wire Debug) предоставляет доступ только к сигналы, используемые протоколом SWD.
Полный традиционный JTAG с использованием адаптера TC2050 и TC2050-ARM2010
На приведенном выше рисунке показан программатор Segger J-LINK ™, адаптер TC2050-ARM2010 и наш кабель TC2050-IDC с ножками Plug-of-Nails ™.Адаптер также работает с кабелем TC2050-IDC-NL (без ножек).
Подключите TC2050-ARM2010 к J-LINK и подключите кабель TC2050-IDC к адаптеру.
Кабели с ножками и без ножек имеют стандартную длину кабеля 8 дюймов.
Для кабеля «без ножек» TC2050-IDC-NL потребуется TC2050-CLIP, если вам требуется решение для громкой связи во время отладки.
Ознакомьтесь с техническими данными:
Solutions
Разъем для печатной платы | Разъем для отладки | Предметы (Щелкните элементы для получения подробной информации) | Цена | Кол-во | Купить |
---|---|---|---|---|---|
ARM20 to 10 Pin Plug-of-Nails ™ – Нет Ножки | |||||
Конец печатной платы: 10-контактный Plug-of-Nails ™ Без ножек | Конец отладки: 20-контактный IDC 0.1 дюймовая розетка | TC2050-ARM2010 – это плата адаптера Tag-Connect, позволяющая использовать наши кабели TC2050-IDC для приложений ARM JTAG и ARM SWD (отладка последовательного кабеля). Хотя она предназначена для использования с нашим запатентованным разъемом TC2050-IDC. of-Nails ™ Cables, адаптер может быть полезен людям, желающим использовать 10-контактные 0,1-дюймовые ленточные заголовки на своей печатной плате. На рисунке показаны Segger JLINK, плата адаптера TC2050-ARM2010 и кабель TC2050-IDC. Примечание: Только адаптер в комплекте, отладчик и кабель в комплект не входят!Лист данных1 x TC2050-ARM2010 ARM 20-контактный к адаптеру TC2050 Кабель для программирования Plug-of-Nails ™ TC2050-IDC-NL “No Legs” ™ от Tag-Connect представляет собой 10-жильный кабель, снабженный пружинным разъемом Tag-Connector, который легко подключается в вашу печатную плату и оканчивается на 0.Ленточный соединитель 1 “.
Лист данных1 x TC2050-IDC-NL 10-контактный кабель без ножек с ленточным разъемом. | Цена: $ 86,95 | Кол-во: | Купить |
ARM20 to 10 Pin Plug-of-Nails ™ – с ножками | |||||
Конец печатной платы: 10 Pin Plug-of-Nails ™ на ножках | Окончание отладки: 20-контактный IDC 0.1 дюймовая розетка | TC2050-ARM2010 – это плата адаптера Tag-Connect, позволяющая использовать наши кабели TC2050-IDC для приложений ARM JTAG и ARM SWD (отладка последовательного кабеля). Хотя она предназначена для использования с нашим запатентованным разъемом TC2050-IDC. of-Nails ™ Cables, адаптер может быть полезен людям, желающим использовать 10-контактные 0,1-дюймовые ленточные заголовки на своей печатной плате. На рисунке показаны Segger JLINK, плата адаптера TC2050-ARM2010 и кабель TC2050-IDC. Примечание: Только адаптер в комплекте, отладчик и кабель в комплект не входят!Лист данных1 x TC2050-ARM2010 ARM с 20-контактным разъемом для адаптера TC2050. Кабель для программирования Plug-of-Nails ™ TC2050-IDC “Legged” Plug-of-Nails ™ от Tag-Connect представляет собой 10-жильный кабель, снабженный пружинным разъемом Tag-Connector, который удобно подключается непосредственно к вашей печатной плате. и заканчивается на 0.Ленточный соединитель 1 “.
Лист данных1 x TC2050-IDC – Tag-Connect 2050 IDC | Цена: $ 68.95 | Кол-во: | Купить |
Решение ARM20-CTX для процессоров Cortex с использованием SWD
Подключите ARM20-CTX к отладчику.
Подсоедините кабель TC2030-IDC к ARM20-CTX, и можно начинать отладку!
Кабели с ножками и без ножек имеют стандартную длину 6 дюймов.
TC2030-IDC-NL потребует TC2030-CLIP, если вы хотите использовать решение без помощи рук во время отладки.
Ознакомьтесь с техническими данными:
Микроконтроллер– Segger J-Link против JTAG Programmer?
ARMиспользуют либо JTAG, либо SWD, а наиболее распространенными ядрами ARM микроконтроллеров являются ядра серии Cortex, которые почти исключительно программируются и отлаживаются через SWD.
И JTAG, и SWD четко определены, и большинство поставщиков описывают, как вводить и управлять портом доступа отладки (DAP), который обычно используется для доступа к внутренним шинам, ЦП, памяти и периферийным устройствам.Физический интерфейс между ПК, который вы используете для разработки / отладки, и портом JTAG / SWD микроконтроллера – это адаптер.
Хотя это правда, что вы можете использовать практически все, что угодно для подключения к порту и управления интерфейсом SWD, у большинства производителей будет свой собственный «вкус» адаптера. Использование рекомендованного поставщиком инструмента обычно является путем наименьшего сопротивления, поскольку поставщик будет поддерживать свой адаптер, рекомендованное им программное обеспечение будет работать с его адаптером, и все должно быть достаточно хорошо задокументировано, чтобы сделать все максимально гладким.
При этом мой опыт работы с инструментами от поставщиков показывает, что это некачественные, быстрые и грязные инструменты. У меня часто возникают проблемы с OpenOCD и инструментами поставщика (в основном ST-Link, Olimex, OpenSDA и т. Д.), Особенно с отладкой. Позвольте мне сказать вам: ничто не вызывает большего разочарования, чем наконец заставить встроенную систему показать ошибку в среде отладки и что-то между программным обеспечением отладчика / ide (gdb, eclipse и т. Д.), OpenOCD, драйвером поставщика и поставщиком Адаптер выходит из синхронизации, разрывает отладочное соединение и требует перезапуска оборудования, чтобы повторить попытку.Эта неприятная нестабильность среды открывает двери для таких поставщиков, как Segger, которые создают свои собственные адаптеры JTAG / SWD, обеспечивают отличную поддержку и чьи инструменты работают со многими различными поставщиками. Есть что сказать о едином унифицированном интерфейсе, который можно использовать практически со всеми устройствами, с которыми вы работаете.
Я потратил много времени, избегая J-Link из-за цены и потому, что я предпочитал использовать открытое программное обеспечение и инструменты поставщиков. Я начал использовать адаптеры J-Link несколько лет назад в одном проекте, в котором они уже были, и я не оглядывался назад.Все их инструменты многоплатформенны, а их автономный отладчик Ozone просто великолепен. У меня редко возникала проблема «нестабильности в середине отладки» с OpenOCD и J-Link, и никогда не было с Ozone.
Segger также предпринял довольно хороший шаг, предложив бесплатное «обновление» любого встроенного отладчика в наборе разработчика, которое превращает отладчик конкретного производителя в лицензированный J-Link. Это, конечно, для того, чтобы вы попробовали и использовали их инструменты, чтобы вы купили их для использования на своих собственных досках, но это блестящая тактика.Более подробная информация о ST-Link находится здесь, следуйте их ссылкам «Модели -> Другие J-Links» для других поставщиков. У них также есть образовательные скидки и «облегченное» оборудование J-Link по очень разумной цене (50 долларов, я думаю?) И ограниченное ядрами процессоров Cortex.
Теперь Segger – не единственный сторонний адаптер: доступен отладчик с открытым исходным кодом, специально предназначенный для gdb. Это зонд черной магии. Они продают оборудование, но также имеют полные схемы, макеты и программное обеспечение, выпущенное под лицензией GPL.У меня еще не было возможности использовать их, но я очень рад попробовать этот отладчик. Реализация протокола GDB в отладчике должна значительно улучшить стабильность. Конечно, существуют и другие системы более высокого уровня, такие как Lauterbach и (ныне несуществующие) адаптеры Abatron BDI2000 и BDI3000. Более изящные / более дорогие инструменты обычно объединены в сеть, а не напрямую подключены к отладочному ПК, предлагают (намного) более быстрые интерфейсы JTAG и часто также имеют отдельные доступные порты трассировки, которые с совместимыми микроконтроллерами дают вам подробный журнал каждой выполненной инструкции, время его выполнения и состояние внутреннего процессора после каждой инструкции.
Вы всегда можете реализовать свое собственное. Я встроил свои собственные интерфейсы SWD в Cypress PSoC5LP для решения конкретной проблемы, которая позволила мне запрограммировать целую цепочку устройств через одно USB-соединение для производства. Вы также можете использовать параллельный порт или пару линий GPIO для вывода сигналов. Все зависит от того, что вам нужно.
SEGGER Инструмент для программирования | TI.com
SEGGER предлагает инструменты разработки аппаратного и программного обеспечения, поддерживающие программирование и отладку встроенных приложений на основе портфеля микроконтроллеров SimpleLink ™.SEGGER также предоставляет полный отладчик и набор инструментов компилятора GCC C / C ++ для разработки программного обеспечения SimpleLink MCU. Богатый набор встроенных программных стеков в дополнение к операционной системе реального времени (RTOS) обеспечивает полную поддержку микроконтроллера SimpleLink MSP432 ™.
- Зонды отладки: J-Link и J-Trace
Отладочные зонды SEGGER J-Link – это наиболее широко используемая линейка отладочных зондов, доступная сегодня. Они привносят этот опыт в свою поддержку портфеля микроконтроллеров SimpleLink.
Обладая скоростью загрузки до 3 МБ / с в ОЗУ и рекордными флэш-загрузчиками, а также возможностью устанавливать неограниченное количество точек останова во флэш-памяти микроконтроллера, отладочные датчики J-Link оптимизируют отладку и флэш-программирование.
Фактически, сочетание SEGGER J-Link и SimpleLink MCU обеспечивает самый быстрый вариант загрузки флэш-памяти, доступный в отрасли. Это означает более быстрое программирование новых устройств SimpleLink MCU для вашей производственной линии.
J-Link поддерживает широкий спектр популярных интегрированных сред разработки (IDE), таких как:
- Code Composer Studio ™ (CCS) в Windows ® , macOS ™ и Linux ®
- Встроенная рабочая среда IAR для ARM ® (EWARM)
- Keil MDK-ARM (µVision)
- Де-факто стандартный датчик отладки ARM (продано более 400000 единиц)
- До 3 МБ / с Скорость загрузки
- Кросс-платформенная поддержка (Microsoft Windows, Linux, macOS)
- Нет платы за обновления прошивки
- Имеется программное обеспечение для программирования Production Flash (J-Flash)
- Блок питания не требуется, питание через USB
- Поддерживает несколько целевых интерфейсов (JTAG, SWD)
- SEGGER Embedded Studio IDE
Embedded Studio – это полная IDE C / C ++ для создания и отладки встроенных приложений на основе микроконтроллеров SimpleLink MSP432.Embedded Studio можно свободно использовать для ознакомления и некоммерческих образовательных целей без каких-либо ограничений.
Характеристики
- Интегрированная среда разработки с инструментами управления проектами и редактором
- Встроенный компилятор C / C ++, GCC и LLVM включены
- Бесплатная библиотека C для встраиваемых систем
- Многофункциональный отладчик с бесшовной интеграцией J-Link, обеспечивающий самый быстрый вариант загрузки Flash-памяти, доступный в отрасли для микроконтроллеров SimpleLink MSP432 Плагины осведомленности об ОСРВ
- для EmbOS и FreeRTOS
- Поддержка внешнего набора инструментов – Project Importer для IAR / Keil
- Поддержка Windows, macOS и Linux
- Производственные программисты
SEGGER Production Programmers поддерживают программирование портфеля микроконтроллеров SimpleLink через JTAG / SWD и обеспечивают самую быструю загрузку Flash из доступных в отрасли.Эти производственные программаторы предназначены для программирования флэш-целей с помощью программного обеспечения J-Flash или автономно. Их также можно использовать в качестве датчиков отладки J-Link.
Характеристики
- Автономный программатор JTAG / SWD
- Подключение через USB, Ethernet или RS232
- Поддерживает внутренние и внешние вспышки
- Нет платы за обновления прошивки
- Поддержка Windows, macOS и Linux
- RTOS и встроенное ПО промежуточного слоя
SEGGER поддерживает микроконтроллеры SimpleLink MSP432 с их операционными системами реального времени (RTOS) и встроенным ПО промежуточного слоя.Эти программные библиотеки были разработаны для обеспечения высокой производительности при сохранении небольших размеров. Вот эти продукты:
- emOS ОСРВ
- emWin (графическое программное обеспечение и графический интерфейс)
- emFile (файловая система)
- emSecure (Пакет цифровой подписи)
Полное программное обеспечение SEGGER J-Link теперь доступно для Linux на ARM
18 января 2021 г.
Новости
Весь портфель программного обеспечения J-Link от SEGGER теперь доступен для Linux на ARM, как для 32-битных, так и для 64-битных платформ.Сюда входят как программы командной строки, так и инструменты графического интерфейса, такие как J-Flash, J-Flash SPI, J-Scope, J-Link Configurator и версия GUI сервера GDB.
Весь портфель программного обеспечения J-LinkSEGGER теперь доступен для Linux на ARM, как для 32-битных, так и для 64-битных платформ. Сюда входят как программы командной строки, так и инструменты графического интерфейса пользователя, такие как J-Flash, J-Flash SPI, J-Scope, J-Link Configurator и версия GUI сервера GDB.
«Теперь J-Link можно использовать на Raspberry Pi и других машинах на базе ARM без каких-либо ограничений», – говорит Алекс Грюнер, технический директор SEGGER.«Небольшие одноплатные компьютеры ARM теперь предлагают те же функции, что и машины на базе x86. Недорогие Raspberry Pi и аналогичные платы теперь являются жизнеспособными вариантами, особенно в тестовых фермах и производственных средах ».
Согласно компании, J-Link для Linux на ARM поддерживает те же целевые устройства и функции, которые есть в существующих пакетах J-Link для других платформ. Это включает в себя высокоскоростную загрузку во флэш-память и неограниченное количество точек останова, даже во флэш-памяти, а также сервер GDB, чтобы сделать его совместимым со всеми средами разработки.
Новый пакет дополняет уже доступные для Windows, macOS и Linux на платформе x86, все из которых поддерживают 32-битные и 64-битные хосты.
Все пакеты для всех платформ обслуживаются и обновляются параллельно. Они доступны для бесплатного скачивания на сайте www.segger.com
.Для получения информации посетите: www.segger.com/products/debug-probes/j-link/
Рекомендуемые компании
SEGGER
Ecolab-Allee 5Monheim am Rhein, 40789
Тиера Оливер, помощник редактора по дизайну встраиваемых вычислений, отвечает за редактирование веб-контента и создание историй.Она также помогает с обновлениями информационных бюллетеней, а также вносит и редактирует контент для подкастов ECD и канала ECD на YouTube. До работы в ECD Тиера окончила Университет Северной Аризоны, где получила степень бакалавра наук. Он занимался журналистикой и политологией, а также работал репортером в студенческой университетской газете The Lumberjack.
Больше от Тиеры
SEGGER J-Link Pro: исчерпывающий обзор
Встреча с J-Link
В нашем сознании мы всегда видели решения отладки SEGGER как профессиональные, но дорогостоящие инструменты: отладчик для выполнения сложных операций, но определенно слишком много для студента.Некоторое время назад мы слышали о новой версии SEGGER, J-Link EDU, которая дешевле и адресована практически нам. У него начала формироваться идея использовать его в качестве внешнего отладчика для этого оценочного комплекта ARM, который поставляется без отладчика.
Несколько месяцев назад SEGGER предложила прошивку, подходящую для встроенного отладчика STM32 Nucleo, которая делает J-Link доступным также для экосистемы STM32, и они уведомили нас об этом решении, комментируя наш обзор STM32 Nucleo-144. После обмена взаимными мнениями они определенно привлекли наше внимание, и мы решили попросить у них J-Link PRO, чтобы протестировать его.
J-Link PRO
SEGGER J-Link PRO под капотомJ-Link PRO – самый быстрый датчик от SEGGER. Он оснащен Ethernet, что позволяет достичь невероятной скорости при загрузке кода во Flash. Этот зонд поставляется с полным набором для отладки, который включает в себя сервер GDB, инструмент для прошивки под названием J-Flash, инструмент для проверки памяти под названием J-Mem и механизм, который позволяет использовать неограниченное количество точек останова флеш-памяти, что очень полезно при отладке сложного программного обеспечения.
Большая часть волшебства SEGGER J-Link заключается в его инструментах и прошивке.Сколько себя помню, у меня всегда была страсть разбирать мысли! Под капотом Altera Cyclone IV и STM32F407 , распаянные на высококачественной печатной плате.
Для подключения целевого микроконтроллера имеется стандартный 20-контактный разъем ARM JTAG , а на стороне ПК вы можете выбрать между USB Type-B или Ethernet RJ45 . Зонд также оснащен тремя светодиодами, которые используются для отображения потока данных во время операций отладки.
Другие Доступные модели
Если мы согласимся отказаться от определенных функций в обмен на более доступный датчик, мы сможем выбирать между множеством различий в обнаружении J-Link на справочной странице.Помимо PRO версии есть также ULTRA +, PLUS, BASE; Версии EDU и LITE.
PRO – единственный, имеющий возможность подключения к сети Ethernet: это позволяет удаленно прошивать Target. Эта версия демонстрирует очень высокую скорость при загрузке кода в ОЗУ (до 3,0 МБ / с), сопоставимую только с ULTRA +, другие зонды вместо этого демонстрируют более низкую скорость (до 1,0 МБ / с).
Все версии могут загружать код во флэш-память и проверять места в памяти. Функция сервера GDB также доступна для каждой версии.Неограниченные точки останова доступны только в версиях PRO, ULTRA +, PLUS и EDU.
Еще одна интересная особенность J-Link – это пакет J-Flash, который позволяет прошивать большое количество внутренней и внешней памяти. К сожалению, полная версия этого программного обеспечения доступна только для версий PRO, ULTRA + и PLUS.
Наше внимание привлекли две версии: J-Link EDU и не перечисленная J-Link Lite. Первый очень интересен студентам, которые хотят протестировать возможности J-Link по очень небольшой цене, около 60 $.Второй – бесплатный и поставляется с определенным набором средств разработки, например Infineon XMC. Как мы уже говорили, если у вас уже есть плата STM32 Nucleo и вы не хотите вкладывать деньги, также можно повторно прошить встроенный отладчик платы с помощью прошивки J-Link Lite.
Получение документации и ПО
SEGGER J-Link поставляется с отличным Руководством пользователя, которое можно загрузить с их веб-сайта.
SEGGER J-Link UM08001
Все программное обеспечение также можно загрузить на странице загрузки в пакете программного обеспечения и документации voice J-Link. Пакет доступен для Windows, Mac или Linux.
Наш опыт
Пользуемся J-Link уже пару месяцев. У нас была возможность использовать J-Link PRO с парой плат разработки Freedom от NXP (ex Freescale) и во время разработки прошивки для ST EVALKITST7580_1.
Мы столкнулись с некоторыми трудностями на первых шагах, так как в этом тесте нужно выполнить множество настроек, но настройки по умолчанию не подходили для нашего приложения. Действительно, во время порта на Infineon XMC1100 мы столкнулись с отказом от режима сброса по умолчанию, который по умолчанию выполняет определенные операции, приводящие к неправильному запуску оборудования.
Между прочим, зонд хорошо задокументирован, и после начальных трудностей мы нашли лучшую конфигурацию для наших целей. С этого момента большой набор инструментов, предоставляемый SEGGER, получил высокую оценку во время нашего длительного сеанса отладки. Мы высоко оценили возможность неограниченного количества точек останова и высокую скорость загрузки прошивки. JMem работает довольно хорошо, а сервер GDB великолепен: он предлагает большой набор команд и легко интегрируется в общую среду IDE.
Этот пробник поддерживает большое количество микроконтроллеров, и этот инструмент может стать окончательным пробником, готовым к применению во многих проектах. Мы настроили ChibiStudio, инструментальную цепочку на основе eclipse, для использования этого зонда с помощью программного обеспечения SEGGER, и в следующей статье мы шаг за шагом увидим, как выполнить эту операцию.
Nordic nRF5x Segger J-Link – Документация проекта Zephyr
Обзор
Все комплекты разработки, предварительные разработки и донглы Nordic nRF5x оснащены с отладочной микросхемой (Atmel ATSAM3U2C), которая обеспечивает следующие функции:
Встроенное ПО и инструменты рабочего стола Segger J-Link
Отладка SWD для nRF5x IC
Запоминающее устройство для прошивки изображений методом перетаскивания
USB CDC Последовательный порт ACM, подключенный к периферийному устройству nRF5x UART
Консоль Segger RTT
Отладчик озона Segger
Установка программного обеспечения Segger J-Link
Чтобы установить программное обеспечение J-Link и пакет документации, выполните следующие действия:
Загрузите соответствующий пакет с веб-сайта программного обеспечения J-Link и пакета документации
В зависимости от вашей платформы установите пакет или запустите установщик
При подключении платы с поддержкой J-Link, такой как nRF5x DK, PDK или ключ, диск, соответствующий запоминающему устройству USB, а также последовательный порт должен появиться
мигающий
Чтобы запрограммировать флеш-память с помощью скомпилированного образа Zephyr после выполнения инструкций чтобы установить программное обеспечение Segger J-Link и инструменты командной строки nRF5x, выполните следующие действия:
nrfjprog --eraseall -f nrf5
Где
либо 1 для плат на базе nRF51, либо 2 для плат на основе nRF52
nrfjprog --program outdir / <доска> / zephyr.шестнадцатеричный -f nrf5
Где:
– это имя платы, которое вы использовали в директиве BOARD при сборке (например, nrf52dk_nrf52832)
и
либо 1 для плат на базе nRF51, либо 2 для плат на основе nRF52
nrfjprog --reset -f nrf5
Где
либо 1 для плат на базе nRF51, либо 2 для плат на основе nRF52
USB CDC Настройка последовательного порта ACM
Важное примечание : Проблема с микропрограммой Segger J-Link на платах nRF5x может вызвать потеря и / или повреждение данных на последовательном порту USB CDC ACM на некоторых машинах.Чтобы обойти это, отключите запоминающее устройство на вашей плате, как описано в разделе «Отключение функциональности запоминающего устройства».
Окна
Последовательный порт будет отображаться как COMxx
. Просто проверьте раздел «Порты (COM и LPT)».
в диспетчере устройств.
GNU / Linux
Последовательный порт будет отображаться как / dev / ttyACMx
. По умолчанию порт доступен не всем пользователям.
Введите команду ниже, чтобы добавить вашего пользователя в группу dialout и предоставить ему доступ к последовательному порту.Обратите внимание, что для того, чтобы это вступило в силу, требуется повторный вход в систему.
sudo usermod -a -G dialout `whoami`
Последние версии ModemManager отправляют AT-команды на устройства типа TTY; это включает комплекты для разработки Nordic. Это помешает вам использовать серийный порт на несколько секунд и может привести к неправильной работе вашего приложения, если он читает данные от UART. Перед запуском приложения вы можете захотеть временно отключите ModemManager, выполнив следующие команды:
systemctl stop ModemManager.услуга systemctl отключить ModemManager.service
Вы также можете занести в черный список устройства Segger, отредактировав правила udev, чтобы ModemManager игнорирует их, запустив:
sudo sh -c 'echo "ATTRS {idVendor} == \" 1366 \ ", ENV {ID_MM_DEVICE_IGNORE} = \" 1 \ "" \ >> /etc/udev/rules.d/99-segger-modemmanager-blacklist.rules ' sudo service udev перезапуск
Исправление этого ожидается в ModemManager 1.8 и новой прошивке для Segger IMCU.
Apple, macOS (OS X)
Последовательный порт будет отображаться как / dev / tty.usbmodemXXXX
.
Отключение функции запоминающего устройства
Из-за известной проблемы в прошивке Segger J-Link, в зависимости от вашей операционной системы. и версия, при использовании USB CDC данные могут быть повреждены или сброшены. Последовательный порт ACM с пакетами размером более 64 байтов. Это наблюдалось как в GNU / Linux, так и в macOS (OS X).
Чтобы избежать этого, вы можете просто отключить запоминающее устройство, открыв:
А затем введите следующее:
И, наконец, отключение и повторное подключение платы.Запоминающее устройство должно больше не отображаются, и теперь вы можете отправлять длинные пакеты через виртуальный последовательный порт. Дополнительную информацию от Segger можно найти в Segger SAM3U Wiki.
Консоль RTT
J-Link Segger поддерживает отслеживание в реальном времени (RTT), технологию, которая позволяет терминалу
соединение (как вход, так и выход) должно быть установлено между целью (плата nRF5x)
и компьютер разработчика для регистрации и ввода. Zephyr поддерживает RTT на целях nRF5x,
что может быть очень полезно, если UART (через USB CDC ACM) уже используется для
цель, отличная от ведения журнала (например, трафик HCI в приложении hci_uart).Чтобы использовать RTT, вам сначала нужно включить его, добавив следующие строки в ваш файл .conf
:
CONFIG_USE_SEGGER_RTT = y CONFIG_RTT_CONSOLE = y
Предупреждение
Существует также символ HAS_SEGGER_RTT
, который указывает, что платформа
поддерживает SEGGER J-Link RTT. Этот символ устанавливается автоматически SoC
Kconfig файлы. Не путайте с USE_SEGGER_RTT
.
USE_SEGGER_RTT
зависит от HAS_SEGGER_RTT
.
Если вы не получаете вывода RTT, возможно, вам придется отключить другие консоли, которые конфликтуют.
с RTT, если они включены по умолчанию в конкретном образце или
приложение, которое вы запускаете. Например, чтобы отключить консоль UART,
добавьте это в свой файл .conf
:
После компиляции и прошивки с включенным RTT вы сможете отображать консоль RTT. сообщения, выполнив следующие действия:
GNU / Linux и macOS (OS X)
Программа просмотра Python
Средство просмотра Python RTT можно найти в репозитории pyrtt-viewer на GitHub.
Segger Озон
Segger J-Link совместим с Segger Ozone, визуальным отладчиком, который можно получить здесь:
После загрузки вы можете установить его и настроить так:
После настройки вы можете использовать меню File-> Open, чтобы открыть zephyr.elf
файл, который вы можете найти в папке сборки.