Перейти к содержанию
    

Не получается запустить SEGGER RTT

Скачал и установил 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(больше некому вроде)

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вряд ли дело в оригинальности программатора, если к нему JLinkExe цепляется. Можете попробовать с помощью OpenOCD связь проверить: http://we.easyelectronics.ru/arhiv_6/rtt-s...-ot-segger.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вряд ли дело в оригинальности программатора, если к нему JLinkExe цепляется. Можете попробовать с помощью OpenOCD связь проверить: http://we.easyelectronics.ru/arhiv_6/rtt-s...-ot-segger.html

 

 

Крайне признателен ! Попробую...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можете попробовать с помощью OpenOCD связь проверить:

Какой смысл проверять какими-то сторонними утилитами, если в составе segger-а есть всё необходимое???

ТС-у надо заглянуть в папку установленного ПО Segger-а и ознакомиться с разными утилитами там.

Там есть например JFlash.exe, с помощью которой можно и проверить JLink подключившись к МК и прошить/проверить прошивку.

И JLinkConfig.exe - для обновления прошивки JLink.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какой смысл проверять какими-то сторонними утилитами, если в составе segger-а есть всё необходимое???

ТС-у надо заглянуть в папку установленного ПО Segger-а и ознакомиться с разными утилитами там.

Там есть например JFlash.exe, с помощью которой можно и проверить JLink подключившись к МК и прошить/проверить прошивку.

И JLinkConfig.exe - для обновления прошивки JLink.

 

Проверять JLink на возможность прошить не требуется. Прошивка / отладка ведктся именно с его помощью. Имелись лишь

сомнения по поводу его работы в RTT.

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можете попробовать с помощью 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 собака.гмайл.ком

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

RTT технология примечательна тем, что требует уникальных первичных имён переменных и массивов. Если менять имена - то плагин не сможет найти свои данные. Так-же записывается уникальный паттерн в область первого массива на передачу. У него есть стандартная голова, тело - размеры массивов и их местоположение, и пассивное заполнение остатка. Массив не может быть меньше 128 байт.

Недостаток технологии - в способе сборки. RTT, также как и EBmonitor поставляется в виде собранной библиотеки, которая уже на стадии линковки подключается к проекту.

При этом в самой библиотеке имеется место где переключается тип ядра, это сделано для универсальности. Это-же свойство может стать основной проблемой при сборке проекта. Например при использовании собственного алгоритма выделения памяти - будет вечный сбой.

 

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

При горячем "подключении" (без ресета) - наличие паттерна - обязательно.

 

RTT и EBmonitor - полные клоны. Могу предложить код который получился для EBmonitor.

https://bitbucket.org/AVI-crak/rtos-cortex-...le-view-default

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

RTT технология примечательна тем, что требует уникальных первичных имён переменных и массивов. Если менять имена - то плагин не сможет найти свои данные. Так-же записывается уникальный паттерн в область первого массива на передачу. У него есть стандартная голова, тело - размеры массивов и их местоположение, и пассивное заполнение остатка. Массив не может быть меньше 128 байт.

 

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

 

кстати - один раз срослось, вывод заработал.. Решил добавить вывод во второй виртуальный терминал. Получил сообщение в логе скрипта RTT - Info : RTT already started.

вернул все обратно, но ничего не изменилось - Info : RTT already started

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Понимать следует буквально, нельзя менять названия массивов и структур - RTT перестаёт их находить.

Ещё одна вещь, технология RTT выполняет одну попытку поиска своих данных. По этой причине инициализация структур и массивов должна выполняться до первой контрольной точки, чаще всего это шапка майна.

Библиотека от RTT (без вмешательства) - инициализирует свои данные до майна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понимать следует буквально, нельзя менять названия массивов и структур - RTT перестаёт их находить.

Nanorobot скачал JLink Software and Documentation Pack, там есть архив с исходниками RTT, никакие либы не нужны, меняй имена как хочешь, или я что-то недопонимаю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Nanorobot скачал JLink Software and Documentation Pack, там есть архив с исходниками RTT, никакие либы не нужны, меняй имена как хочешь, или я что-то недопонимаю?

 

дак как то и смысла особенного их менять не просматривается ... :05:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

меняй имена как хочешь

Можно менять размеры буферов от 128б до "сколько влезет", остальное завязано на плагин - который работает на большой машине.

По ссылкам нет си исходников плагина для ID.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно менять размеры буферов от 128б до "сколько влезет", остальное завязано на плагин - который работает на большой машине.

По ссылкам нет си исходников плагина для ID.

Не знаю что там завязано, но я взял исходники, основательно их переделал, запихнул все в класс и давно пользуюсь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю что там завязано, но я взял исходники, основательно их переделал, запихнул все в класс и давно пользуюсь.

Аналогично, только без классов. Без всяких библиотек - из исходников.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Аналогично, только без классов. Без всяких библиотек - из исходников.

 

Еще раз подниму тему. Делал по ссылке приведенной выше. 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ожность?

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...