Командная строка J-Link RTT Viewer |
![]() |
Добавил(а) microsin | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
J-Link RTT Viewer это GUI-приложение, доступное под операционными системами Windows, MacOS и Linux, и оно может быть загружено как часть пакета программного обеспечения и документации для отладчика SEGGER J-Link (J-Link Software and Documentation Pack) с сайта компании SEGGER. J-Link RTT Viewer позволяет реализовать все функции RTT для отладки приложения [2]. Основные возможности J-Link RTT Viewer: • Отображение вывода в терминал Channel 0. [Запуск J-Link RTT Viewer] Убедитесь, что J-Link и целевой отлаживаемый MCU приложения соединены друг с другом, и в систему подано питание. Запустите J-Link RTT Viewer открытием исполняемого файла(JLinkRTTViewer.exe/JLinkRTTViewerExe, в операционной системе Windows по умолчанию он находится в каталоге c:\Program Files (x86)\SEGGER\JLink_Vxxx, где xxx обозначают версию ПО SEGGER), либо через меню запуска. Если при запуске не указана опция командной строки --autoconnect, то откроется диалоговое окно конфигурации (Configuration). Сконфигурируйте настройки соединения, как будет описано далее, и кликните OK. Настройки соединения и конфигурация приложения будут сохранены для последующего запуска J-Link RTT Viewer. [Диалог J-Link RTT Viewer Configuration] Этот диалог используется для установки всех специфических для отлаживаемого MCU настроек, чтобы успешно запускалось соединение через интерфейс отладки, и можно было читать/передавать данные RTT из целевого MCU или в него. J-Link RTT Viewer может использоваться в 2 режимах: • Stand-alone, с открытием собственного соединения с J-Link и целевым MCU, без запуска сессии отладки в IDE. Stand-alone. В этом режиме для J-Link RTT Viewer нужно определить некоторые настройки, относящиеся к аппаратуре J-Link и целевого MCU: - Выбрать интерфейс подключения к J-Link - USB или TCP/IP. Для USB опционально можно определить серийный номер J-Link, а для TCP/IP нужно указать IP или имя хоста. Обратите внимание, что блок управления RTT не может быть найден автоматически, если он не помещен в RAM, заданную библиотекой J-Link. В этом случае адрес или диапазон RAM должен быть задан пользователем. Attach mode. Если выбрать Connection to J-Link -> Existing Session, то RTT Viewer запустится в режиме подключения к существующей сессии J-Link (attach mode). В этом режиме для J-Link RTT Viewer обычно не требуется каких-либо дополнительных настроек, однако адрес RTT Control Block или область его поиска все еще выбирается при необходимости. Для attach mode соединение с J-Link должно быть открыто и сконфигурировано в другом приложении наподобие отладчика или просто утилиты J-Link Commander [3]. Attach mode особенно полезен, когда используется отладчик сторонней фирмы или IDE, работающее с отладчиком J-Link (например IAR, Keil или Eclipse). [Закладки терминалов] J-Link RTT Viewer позволяет отобразить вывод Channel 0 в разных "виртуальных" Терминалах. Целевое приложение может переключаться между терминалами с помощью вызовов функций SEGGER_RTT_SetTerminal() и SEGGER_RTT_TerminalOut(). J-Link RTT Viewer отображает терминалы на разных закладках. All Terminals. Эта закладка отобразит полный вывод в RTT Channel 0, и позволяет реализовать ввод пользователя (Check Input -> Echo input... -> Echo to "All Terminals"). В начале каждой выводимой строки на этой закладке будет показан номер виртуального терминала (00, 01, ..), в который было отправлено сообщение. Для акцента вывод в терминал 1 показан красным цветом, а вывод в терминалы 2 .. 15 серым цветом: Terminal 0 - 15. Каждая из закладок Terminal 0 .. Terminal 15 отобразит вывод текста, который был отправлен в соответствующий терминал. Закладки Terminal интерпретируют и обрабатывают коды управления выводом текста (Text Control Codes), которые может посылать отлаживаемое приложение MCU, чтобы раскрасить выводимый текст или очистить экран терминала. На закладках Terminal 0 - 15 каждая выводимая строка отображается без префикса, обозначающего номер терминала. По умолчанию, если приложение не установило идентификатор терминала, то вывод будет отображаться в Terminal 0. Закладка Terminal 0 дополнительно может реализовать ввод символов текста пользователем (Check Input -> Echo input... -> Echo to "Terminal 0"). Каждая из закладок терминала может быть отображена или скрыта через меню Terminals -> Terminals..., или соответствующими горячими клавишами (см. далее врезку "Меню и горячие клавиши"). Меню File:
Меню Terminals:
Меню Input:
Меню Logging:
Меню Help:
Пункты контекстного меню закладок:
[Отправка текста] J-Link RTT Viewer может послать в MCU текст, введенный пользователем, в RTT Down Channel 0. Этот переданный текст может быть прочитан приложением MCU с помощью вызовов функций SEGGER_RTT_GetKey() и SEGGER_RTT_Read(). Передаваемый текст можно вводить в поле, которое находится ниже окна вывода терминала. Также J-Link RTT Viewer может быть сконфигурирован для непосредственной отправки каждого символа в процессе ввода символов, или отправки буфера после нажатия клавиши Enter is pressed (меню Input -> Sending...). В stand-alone mode утилитаJ-Link RTT Viewer может повторно отправлять введенный текст в случае, когда буфер целевого MCU заполнен, до тех пор, пока все данные не будут отправлены, это настраивается через меню Input -> Sending... -> Block if FIFO full. [Запись вывода в лог] Вывод Channel 0 и Channel 1 может записываться в файл лога. Terminal output (Channel 0). Формат вывода тот же самый, что используется на закладке All Terminals. Запись лога может быть активирована через меню Logging -> Start Terminal Logging... Data output (Channel 1). Лог Channel 1 может использоваться, например, для отправки данных трассировки событий (instrumented event tracing data). Файл лога данных содержит заголовок (header) и блок завершения (footer), и двоичные данные, которые были получены из приложения. Запись лога данных может быть активирована через меню Logging -> Start Data Logging... Примечание: Data Logging доступен только в stand-alone mode. [Опции командной строки] J-Link RTT Viewer может быть сконфигурирован через параметры командной строки. Все параметры (опции) командной строки не чувствительны к регистру символов. И у коротких, и у длинных имен команд используется одинаковый синтаксис.
--bright Запустит RTT Viewer в яркой теме. --device Выберет целевой MCU, к которому нужно подключиться. Пример: JLinkRTTViewer.exe --device STM32F103ZE --connection Устанавливает тип подключения к отладчику J-Link (usb, ip или sess). Подключение может быть либо через USB, через адрес IP, или с использованием существующей сессии (например, сессии отладки, которая была предварительно запущена в IDE). В случае использования существующей сессии никаких других опций конфигурации указывать не нужно. Синтаксис: --interface < fine|jtag|swd > Пример: JLinkRTTViewer.exe --interface swd --host Ввод IP-адреса или имени хоста J-Link. Эта опция применима только для сетевого подключения. Вместо IPAddr используйте * для получения списка доступных отладчиков J-Link в локальной подсети. Синтаксис: --host < IPAddr > Пример: JLinkRTTViewer.exe --host 192.168.1.17 --speed Установит скорость передачи интерфейса в (частота тактов в кГц) для соединения J-Link с целевым MCU. Синтаксис: --speed < частота_кГц > Пример: JLinkRTTViewer.exe --interface swd --speed 4000 --scriptfile Выполняет при запуске скрипт команд J-Link. Внимание: это совсем не то, что можно было подумать - в скрипте команд не указываются опции командной строки. По сути это программа на языке C. Синтаксис: --scriptfile < имя_файла_скрипта > Пример: JLinkRTTViewer.exe --scriptfile C:\temp\my-jlink-commands.txt --serialnumber Подключится к J-Link через USB по указанному его серийному номеру. Опция полезна, когда к одному компьютеру PC подключено несколько отладчиков J-Link, и необходимо запустить несколько сессий RTT Viewer индивидуально для каждого J-Link. Синтаксис: --serialnumber < серийный_номер > Пример: JLinkRTTViewer.exe --serialnumber 12345678 --rttaddr Установит фиксированный адрес для места нахождения RTT control block в памяти RAM. Это запретит автоматический поиск RTT control block. Синтаксис: --rttaddr < RTTCBAddr > Пример: JLinkRTTViewer.exe --rttaddr 0x20000000 --rttrange Установит один или несколько диапазонов поиска в памяти, в которых J-Link DLL должна найти RTT control block. Синтаксис: --rttrange < RangeStart[Hex] > < RangeSize >[, < Range1Start [Hex] > < Range1Size >]> Пример; JLinkRTTViewer.exe --rttrange "20000000 400" --autoconnect Позволяет J-Link RTT Viewer автоматически подключиться к целевому MCU без отображения диалога настройки соединения (см. выше "Диалог J-Link RTT Viewer Configuration"). Пример: JLinkRTTViewer.exe --autoconnect --terminalindex При запуске откроет терминал с указанным индексом. Значение индекса может быть в диапазоне [0:16], где 0 соответствует All Terminals, 1 соответствует Terminal 0, ..., 16 соответствует Terminal 15. Синтаксис: --terminalindex < Index > Пример: JLinkRTTViewer.exe --terminalindex 7 Этот пример подключится через SWD к микроконтроллеру nRF52832 (--device) и запустит сразу 2 закладки All Terminals и Terminal 0 (они открываются по умолчанию). Адаптер отладки J-Link, подключенный через USB (--connection), выбирается по серийному номеру (--serialnumber). Диалог настройки параметров не открывается (--autoconnect). @"%ProgramFiles(x86)%\SEGGER\JLink_V711\JLinkRTTViewer.exe" --device NRF52832_XXAA --connection USB --serialnumber 12345678 --interface SWD --speed 4000 --autoconnect [Использование виртуальных терминалов в RTT] Для отправки текста в виртуальные терминалы 0 .. 15 нужен только один Channel 0. Это особенно важно для целевых MCU, у которых мало памяти RAM. Замечания: • Если не указан терминал, то все данные отправляются по умолчанию в Terminal 0. [Использование Text Control Codes] RTT позволяет использовать коды управления выводом текста (Text Control Codes, стандартные коды ANSI escape), чтобы сконфигурировать отображение выводимого текста. J-Link RTT Viewer поддерживает изменение цвета текста и цвета фона, и очистку терминала. Эти коды управления предопределены макросами #define приложении MCU, и их можно просто использовать по установленным мнемоническим именам. Пример 1: SEGGER_RTT_WriteString(0, RTT_CTRL_RESET"Green: " \ RTT_CTRL_TEXT_BRIGHT_GREEN"Этот текст будет выведен зеленым цветом. " \ RTT_CTRL_TEXT_BLACK"" \ RTT_CTRL_BG_BRIGHT_RED"Фон выводимого текста будет красным. " \ RTT_CTRL_RESET"Здесь будет снова отображаться текст как обычно." ); Пример 2: SEGGER_RTT_printf(0, "%sTime:%s%s %.7d\n", RTT_CTRL_RESET, RTT_CTRL_BG_BRIGHT_RED, RTT_CTRL_TEXT_BRIGHT_WHITE, 1111111 ); //
// Очистка терминала.
// После выполнения этой команды первая выведенная строка отображаться не будет.
// SEGGER_RTT_WriteString(0, RTT_CTRL_CLEAR); SEGGER_RTT_printf(0, "%sTime: %s%s%.7d\n", RTT_CTRL_RESET, RTT_CTRL_BG_BRIGHT_RED, RTT_CTRL_TEXT_BRIGHT_WHITE, 2222222 ); [Решение проблем] 1. Иногда RTT Control Block не может быть определен автоматически. Такое может произойти, например, когда RTT Control Block не находится в диапазоне адресов RAM, который определен вJ-Link DLL. Чтобы решить проблему, необходимо установить место расположения J-Link RTT Control Block в диалоге конфигурации соединения. 2. Если RTT Control Block найден, но данные в RTT Viewer все еще не отображаются, то убедитесь, что используете Channel 0 для всех передач, поскольку для всех терминалов поддерживается только Channel 0. Обратите внимание, что Channel 0 совсем не то же самое, что Terminal 0. 3. Замечен глюк - если во время двух запущенных соединений, когда открыто две отдельные утилиты RTT Viewer, отключить питание у одного из целевых MCU, то вывод в терминал перестает работать в обоих окнах утилиты, даже если восстановить питание MCU. Для устранения ошибки надо закрыть все запущенные экземпляры RTT Viewer, и запустить их заново. 4. Для дополнительной информации см. раздел решения проблем и FAQ статьи [4]. [Ссылки] 1. J-Link RTT Viewer site:wiki.segger.com. |