|
|
  |
Не получается запустить SEGGER RTT, Cortex-M0, Linux/Eclipse/gcc 5_3-2016q1 |
|
|
|
Apr 28 2017, 03:07
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Скачал и установил 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 - Apr 28 2017, 06:32
|
|
|
|
|
Apr 28 2017, 07:45
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(arhiv6 @ Apr 28 2017, 13:16)  Вряд ли дело в оригинальности программатора, если к нему JLinkExe цепляется. Можете попробовать с помощью OpenOCD связь проверить: http://we.easyelectronics.ru/arhiv_6/rtt-s...-ot-segger.htmlКрайне признателен ! Попробую...
|
|
|
|
|
Apr 28 2017, 08:05
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(arhiv6 @ Apr 28 2017, 09:16)  Можете попробовать с помощью OpenOCD связь проверить: Какой смысл проверять какими-то сторонними утилитами, если в составе segger-а есть всё необходимое??? ТС-у надо заглянуть в папку установленного ПО Segger-а и ознакомиться с разными утилитами там. Там есть например JFlash.exe, с помощью которой можно и проверить JLink подключившись к МК и прошить/проверить прошивку. И JLinkConfig.exe - для обновления прошивки JLink.
|
|
|
|
|
Apr 28 2017, 09:13
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(jcxz @ Apr 28 2017, 14:05)  Какой смысл проверять какими-то сторонними утилитами, если в составе segger-а есть всё необходимое??? ТС-у надо заглянуть в папку установленного ПО Segger-а и ознакомиться с разными утилитами там. Там есть например JFlash.exe, с помощью которой можно и проверить JLink подключившись к МК и прошить/проверить прошивку. И JLinkConfig.exe - для обновления прошивки JLink. Проверять JLink на возможность прошить не требуется. Прошивка / отладка ведктся именно с его помощью. Имелись лишь сомнения по поводу его работы в RTT.
Сообщение отредактировал nanorobot - Apr 28 2017, 09:13
|
|
|
|
|
May 19 2017, 20:42
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(arhiv6 @ Apr 28 2017, 13:16)  Попытался запустить описанным по этой ссылке методом. Результат - RTT скрипт OpenOCD либо не находит RTT control block, либо(в случае когда я в скрипте задаю в качестве диапазона поиска всю RAM) находит не по тому адресу (правильный адрес нахожу в окне Expressions), и соответственно выода в SEGGER J-Link RTT Client не происходит. Кому удалось запустить RTT методом описанным по ссылке, поделитесь опытом плизз. Или , кто зарегистрирован на изиэлектроникс, пришлите приглашение для регистрации. Задам вопрос там. Мыло: r*a*i*n*6*2*s*t*e*r собака.гмайл.ком
Сообщение отредактировал nanorobot - May 19 2017, 20:50
|
|
|
|
|
May 19 2017, 21:45
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894

|
RTT технология примечательна тем, что требует уникальных первичных имён переменных и массивов. Если менять имена - то плагин не сможет найти свои данные. Так-же записывается уникальный паттерн в область первого массива на передачу. У него есть стандартная голова, тело - размеры массивов и их местоположение, и пассивное заполнение остатка. Массив не может быть меньше 128 байт. Недостаток технологии - в способе сборки. RTT, также как и EBmonitor поставляется в виде собранной библиотеки, которая уже на стадии линковки подключается к проекту. При этом в самой библиотеке имеется место где переключается тип ядра, это сделано для универсальности. Это-же свойство может стать основной проблемой при сборке проекта. Например при использовании собственного алгоритма выделения памяти - будет вечный сбой. При отладке без выхода из режима программирования - отладчику доступно все использующиеся символьные имена проекта, в этом случае поиск по паттерну не используется. При горячем "подключении" (без ресета) - наличие паттерна - обязательно. RTT и EBmonitor - полные клоны. Могу предложить код который получился для EBmonitor. https://bitbucket.org/AVI-crak/rtos-cortex-...le-view-default
|
|
|
|
|
May 19 2017, 22:15
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(AVI-crak @ May 20 2017, 03:45)  RTT технология примечательна тем, что требует уникальных первичных имён переменных и массивов. Если менять имена - то плагин не сможет найти свои данные. Так-же записывается уникальный паттерн в область первого массива на передачу. У него есть стандартная голова, тело - размеры массивов и их местоположение, и пассивное заполнение остатка. Массив не может быть меньше 128 байт. Признаюсь честно - мало чего понял.. :  Зато есть куда расти... кстати - один раз срослось, вывод заработал.. Решил добавить вывод во второй виртуальный терминал. Получил сообщение в логе скрипта RTT - Info : RTT already started. вернул все обратно, но ничего не изменилось - Info : RTT already started
|
|
|
|
|
May 20 2017, 07:53
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894

|
Цитата(nanorobot @ May 20 2017, 04:15)  Признаюсь честно - мало чего понял.. :  Зато есть куда расти... Понимать следует буквально, нельзя менять названия массивов и структур - RTT перестаёт их находить. Ещё одна вещь, технология RTT выполняет одну попытку поиска своих данных. По этой причине инициализация структур и массивов должна выполняться до первой контрольной точки, чаще всего это шапка майна. Библиотека от RTT (без вмешательства) - инициализирует свои данные до майна.
|
|
|
|
|
May 20 2017, 10:08
|
Участник

Группа: Участник
Сообщений: 48
Регистрация: 15-07-06
Пользователь №: 18 836

|
Цитата(AVI-crak @ May 20 2017, 10:53)  Понимать следует буквально, нельзя менять названия массивов и структур - RTT перестаёт их находить. Nanorobot скачал JLink Software and Documentation Pack, там есть архив с исходниками RTT, никакие либы не нужны, меняй имена как хочешь, или я что-то недопонимаю?
|
|
|
|
|
May 20 2017, 11:06
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894

|
Цитата(Reflector @ May 20 2017, 16:08)  меняй имена как хочешь Можно менять размеры буферов от 128б до "сколько влезет", остальное завязано на плагин - который работает на большой машине. По ссылкам нет си исходников плагина для ID.
|
|
|
|
|
May 20 2017, 11:10
|
Участник

Группа: Участник
Сообщений: 48
Регистрация: 15-07-06
Пользователь №: 18 836

|
Цитата(AVI-crak @ May 20 2017, 14:06)  Можно менять размеры буферов от 128б до "сколько влезет", остальное завязано на плагин - который работает на большой машине. По ссылкам нет си исходников плагина для ID. Не знаю что там завязано, но я взял исходники, основательно их переделал, запихнул все в класс и давно пользуюсь.
|
|
|
|
|
Jun 6 2017, 10:40
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(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ожность?
Сообщение отредактировал nanorobot - Jun 6 2017, 10:41
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|