Easyelectronics.ru

Электроника для всех
Текущее время: 18 сен 2019, 12:27

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: STM32F4, подключение Segger SystemView
СообщениеДобавлено: 07 авг 2019, 18:51 
Заглядывает иногда

Зарегистрирован: 05 дек 2017, 18:17
Сообщения: 160
Добрый день.
Осваиваю цивилизованные способы отладки, пытаюсь подключить SystemView от Segger.
МК - STM32F429. Подключен при помощи J-Link OB (F103) линиями CLK, IO и GND.
Скачал с сайта Segger архив с исходниками и саму программу SystemView.
Подключал по описанию UM08027.
Никакую ОС не использую, взял SEGGER_SYSVIEW_Config_NoOS.c
В этом файле исправил только значение RAM_BASE (стояло 0x10000000)
Код:
// The lowest RAM address used for IDs (pointers)
#define SYSVIEW_RAM_BASE        (0x20000000)


В итоге RTT работает, сообщения в терминале Ozone и в RTTViewer есть, а в SystemView пустота. При попытке остановить запись
вываливается ошибка
Цитата:
Cannot send command to target.Possible reasons:
- Connection to target lost.
- Host debug session stopped.
- Target application halted.

Весь проект я положил на https://github.com/Sergey1560/stm32_systemview
Собираю GCC, Makefile там же лежит.

Что делаю не правильно? Пробовал в убунте и в Win10, результат одинаковый.
Насколько я понял, вызов функции SEGGER_SYSVIEW_Start() происходит при подключении программой SystemView.
На всякий случай, добавил вызов в конце SEGGER_SYSVIEW_Conf (SEGGER_SYSVIEW_Config_NoOS.c).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4, подключение Segger SystemView
СообщениеДобавлено: 08 авг 2019, 14:07 
Заглядывает иногда

Зарегистрирован: 05 дек 2017, 18:17
Сообщения: 160
Вообщем дело оказалось в том, что SystemView больше заточен для работы с RTOS. Но и без нее можно работать, а в UM08027 как-то это не явно описано.
Есть отдельное описание, как сделать - https://wiki.segger.com/Use_SystemView_without_RTOS
Вообще они пишут, что если вам нужны только прерывания (в моем примере main while пустой), то вроде как оно должно "из коробки" работать.
Но у меня не работает. Получает 7 events и все, дальше тишина.
Вообщем я добавил в начало прерывания SEGGER_SYSVIEW_RecordEnterISR(); и в конец SEGGER_SYSVIEW_RecordExitISR();.
Ну и описание этого прерывания SEGGER_SYSVIEW_SendSysDesc("I#44=TIM2IRQ");
В таком виде отлично работает.

Статья с wiki еще советует добавить SEGGER_SYSVIEW_OnIdle(); в main, но у меня это вызывает переполнение буфера, поскольку main пустой.
Так же рекомендация включить SysTick у меня не работает, просто перестают события идти.

Да, у меня SystemView работает только когда подключен Ozone. Без него события не идут.

Код на github поправил, там рабочий вариант.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB