Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не получается запустить SEGGER RTT
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
nanorobot
Скачал и установил JLink Software and Documentation Pack 614d. Добавил к проекту все необходимые файлы. В процессе компиляции получил следующие ругательства

In file included from SEGGER_RTT_V614d//Syscalls/SEGGER_RTT_Syscalls_GCC.c:64:0:
/usr/local/gcc-arm-none-eabi-5_3-2016q1/arm-none-eabi/include/reent.h:159:17: note: previous declaration of '_write_r' was here
extern _ssize_t _write_r _PARAMS ((struct _reent *, int, const void *, size_t));

по отношению к фукции

Код
int _write_r(struct _reent *r, int file, const void *ptr, int len);


заменил сигнатуру функциии на

Код
_ssize_t _write_r _PARAMS ((struct _reent *, int, const void *, size_t));


после чего компиляция завершилась успешно

Вызвал в main()

Код
SEGGER_RTT_ConfigUpBuffer(0, NULL, &buf[0], 256, SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL);


несколькими строками ниже с периодичностью около 2 Гц вызываю

Код
SEGGER_RTT_Write(0, "Segger_RTT \r\n", 13);}


для контроля, вызов сопровождаю миганием светодиода, Запускаю JLinkExe и выполняю connect. затем запускаю Putty: telnet / localhost / port 19021.

Telnet соединения срастается, но никакого вывода в Putty не происходит. Да, JLink не оригинальный, естественно - клон от starterkit. Может быть в этом причина?
Так как используется блокирующий вывод процесс(мигание светодиода) длится недолго, затем, когда буфер вывода заполнится, все застревает. Верно ли я понимаю,
что освобождение буфера производится выпjлняет JLink(больше некому вроде)
arhiv6
Вряд ли дело в оригинальности программатора, если к нему JLinkExe цепляется. Можете попробовать с помощью OpenOCD связь проверить: http://we.easyelectronics.ru/arhiv_6/rtt-s...-ot-segger.html
nanorobot
Цитата(arhiv6 @ Apr 28 2017, 13:16) *
Вряд ли дело в оригинальности программатора, если к нему JLinkExe цепляется. Можете попробовать с помощью OpenOCD связь проверить: http://we.easyelectronics.ru/arhiv_6/rtt-s...-ot-segger.html



Крайне признателен ! Попробую...
jcxz
Цитата(arhiv6 @ Apr 28 2017, 09:16) *
Можете попробовать с помощью OpenOCD связь проверить:

Какой смысл проверять какими-то сторонними утилитами, если в составе segger-а есть всё необходимое???
ТС-у надо заглянуть в папку установленного ПО Segger-а и ознакомиться с разными утилитами там.
Там есть например JFlash.exe, с помощью которой можно и проверить JLink подключившись к МК и прошить/проверить прошивку.
И JLinkConfig.exe - для обновления прошивки JLink.
nanorobot
Цитата(jcxz @ Apr 28 2017, 14:05) *
Какой смысл проверять какими-то сторонними утилитами, если в составе segger-а есть всё необходимое???
ТС-у надо заглянуть в папку установленного ПО Segger-а и ознакомиться с разными утилитами там.
Там есть например JFlash.exe, с помощью которой можно и проверить JLink подключившись к МК и прошить/проверить прошивку.
И JLinkConfig.exe - для обновления прошивки JLink.


Проверять JLink на возможность прошить не требуется. Прошивка / отладка ведктся именно с его помощью. Имелись лишь
сомнения по поводу его работы в RTT.
nanorobot
Цитата(arhiv6 @ Apr 28 2017, 13:16) *
Можете попробовать с помощью OpenOCD связь проверить: http://we.easyelectronics.ru/arhiv_6/rtt-s...-ot-segger.html


Попытался запустить описанным по этой ссылке методом. Результат - RTT скрипт OpenOCD либо не находит RTT control block, либо(в случае когда я в скрипте задаю в качестве диапазона поиска всю RAM) находит не по тому адресу (правильный адрес нахожу в окне Expressions), и соответственно выода в SEGGER J-Link RTT Client не происходит. Кому удалось запустить RTT методом описанным по ссылке, поделитесь опытом плизз.
Или , кто зарегистрирован на изиэлектроникс, пришлите приглашение для регистрации. Задам вопрос там. Мыло: r*a*i*n*6*2*s*t*e*r собака.гмайл.ком
AVI-crak
RTT технология примечательна тем, что требует уникальных первичных имён переменных и массивов. Если менять имена - то плагин не сможет найти свои данные. Так-же записывается уникальный паттерн в область первого массива на передачу. У него есть стандартная голова, тело - размеры массивов и их местоположение, и пассивное заполнение остатка. Массив не может быть меньше 128 байт.
Недостаток технологии - в способе сборки. RTT, также как и EBmonitor поставляется в виде собранной библиотеки, которая уже на стадии линковки подключается к проекту.
При этом в самой библиотеке имеется место где переключается тип ядра, это сделано для универсальности. Это-же свойство может стать основной проблемой при сборке проекта. Например при использовании собственного алгоритма выделения памяти - будет вечный сбой.

При отладке без выхода из режима программирования - отладчику доступно все использующиеся символьные имена проекта, в этом случае поиск по паттерну не используется.
При горячем "подключении" (без ресета) - наличие паттерна - обязательно.

RTT и EBmonitor - полные клоны. Могу предложить код который получился для EBmonitor.
https://bitbucket.org/AVI-crak/rtos-cortex-...le-view-default
nanorobot
Цитата(AVI-crak @ May 20 2017, 03:45) *
RTT технология примечательна тем, что требует уникальных первичных имён переменных и массивов. Если менять имена - то плагин не сможет найти свои данные. Так-же записывается уникальный паттерн в область первого массива на передачу. У него есть стандартная голова, тело - размеры массивов и их местоположение, и пассивное заполнение остатка. Массив не может быть меньше 128 байт.


Признаюсь честно - мало чего понял.. : sad.gif Зато есть куда расти...

кстати - один раз срослось, вывод заработал.. Решил добавить вывод во второй виртуальный терминал. Получил сообщение в логе скрипта RTT - Info : RTT already started.
вернул все обратно, но ничего не изменилось - Info : RTT already started
AVI-crak
Цитата(nanorobot @ May 20 2017, 04:15) *
Признаюсь честно - мало чего понял.. : sad.gif Зато есть куда расти...

Понимать следует буквально, нельзя менять названия массивов и структур - RTT перестаёт их находить.
Ещё одна вещь, технология RTT выполняет одну попытку поиска своих данных. По этой причине инициализация структур и массивов должна выполняться до первой контрольной точки, чаще всего это шапка майна.
Библиотека от RTT (без вмешательства) - инициализирует свои данные до майна.
Reflector
Цитата(AVI-crak @ May 20 2017, 10:53) *
Понимать следует буквально, нельзя менять названия массивов и структур - RTT перестаёт их находить.

Nanorobot скачал JLink Software and Documentation Pack, там есть архив с исходниками RTT, никакие либы не нужны, меняй имена как хочешь, или я что-то недопонимаю?
nanorobot
Цитата(Reflector @ May 20 2017, 16:08) *
Nanorobot скачал JLink Software and Documentation Pack, там есть архив с исходниками RTT, никакие либы не нужны, меняй имена как хочешь, или я что-то недопонимаю?


дак как то и смысла особенного их менять не просматривается ... 05.gif
AVI-crak
Цитата(Reflector @ May 20 2017, 16:08) *
меняй имена как хочешь

Можно менять размеры буферов от 128б до "сколько влезет", остальное завязано на плагин - который работает на большой машине.
По ссылкам нет си исходников плагина для ID.
Reflector
Цитата(AVI-crak @ May 20 2017, 14:06) *
Можно менять размеры буферов от 128б до "сколько влезет", остальное завязано на плагин - который работает на большой машине.
По ссылкам нет си исходников плагина для ID.

Не знаю что там завязано, но я взял исходники, основательно их переделал, запихнул все в класс и давно пользуюсь.
x893
Цитата(Reflector @ May 20 2017, 14:10) *
Не знаю что там завязано, но я взял исходники, основательно их переделал, запихнул все в класс и давно пользуюсь.

Аналогично, только без классов. Без всяких библиотек - из исходников.
nanorobot
Цитата(x893 @ May 20 2017, 18:51) *
Аналогично, только без классов. Без всяких библиотек - из исходников.


Еще раз подниму тему. Делал по ссылке приведенной выше. http://we.easyelectronics.ru/arhiv_6/rtt-s...-ot-segger.html.
Получил работоспособный вариант на связке STLink V2 / STM32F373. C клоном JLink от starterkit так толком ничего и не вышло. Возможно руки кривые. Далее возлагал
надежды на STLink. Попытался использовать его в связке с STM32F051. И вот здесь успеха добиться не удалось. В консоли все время получаю сообщение "Info : No RTT control block found".
Пробовал указывать в скрипте всю RAM камня в качестве области для поика RTT, менял уровень олптимизации компилятора до самого низкого. Но всегда плучал один и тот же результат.
RTT control block found. Вроде и путь уже проторенный (с F373) но тем не менее. Может быть все таки STM32F0xx не поддерживает эту возvожность?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.