реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Обмен данными через SWO
AndyDev
сообщение Jun 18 2015, 22:41
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 17-11-07
Пользователь №: 32 406



Можно ли использовать данные приходящие от микроконтроллера через интерфейс SWO (например, используя ST-Link), в своей собственной программе на PC, а не в стандартных консолях и отладчиках?
Если у кого есть исходники с подобными примерами, поделитесь, плиз.

Сообщение отредактировал AndyDev - Jun 18 2015, 22:41
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 19 2015, 04:33
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(AndyDev @ Jun 19 2015, 01:41) *
Можно ли использовать данные приходящие от микроконтроллера через интерфейс SWO (например, используя ST-Link), в своей собственной программе на PC, а не в стандартных консолях и отладчиках?
Если у кого есть исходники с подобными примерами, поделитесь, плиз.


Можно, для этого не нужен даже SWO.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 19 2015, 07:45
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Можете посмотреть исходники openocd - там реализована SWO-консоль для ST-LINK.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
AndyDev
сообщение Jun 20 2015, 08:24
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 17-11-07
Пользователь №: 32 406



Цитата(AlexandrY @ Jun 19 2015, 07:33) *

Очень интересно, спасибо.
Хотя для RTT нужен именно J-LINK, а у меня ST-Link (встроенный в отладочную плату),
а так же не совсем из описания понятно, как использовать отладочные данные в своей собственной программе на PC, а не в прилагаемой утилите от Segger.

Можно было бы так же воспользоваться передачей через semihosting (мне скорость передачи вообще не важна), но, опять же нет информации - как это использовать в своей собственной программе на PC, а не в отладчике.

Сообщение отредактировал AndyDev - Jun 20 2015, 08:38
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 21 2015, 10:37
Сообщение #5


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(AndyDev @ Jun 20 2015, 11:24) *
Очень интересно, спасибо.
Хотя для RTT нужен именно J-LINK, а у меня ST-Link (встроенный в отладочную плату),
а так же не совсем из описания понятно, как использовать отладочные данные в своей собственной программе на PC, а не в прилагаемой утилите от Segger.

Можно было бы так же воспользоваться передачей через semihosting (мне скорость передачи вообще не важна), но, опять же нет информации - как это использовать в своей собственной программе на PC, а не в отладчике.


Чтобы работать через RTT нужно:
1. Подключить JLink отладчик к плате.
2. Запустить JLinkRTTViewer.exe
И все!

На вашем компьютере появляется Telnet server с адресом: localhost:19021

Подключайтесь к нему из любой программы.
В RAD Studio например есть набор компонентов AsyncPro который умеет кроме COM портов подключаться и к TCP портам, там же есть и эмулятор терминала и под Telnet и проч.
Go to the top of the page
 
+Quote Post
AndyDev
сообщение Jun 21 2015, 13:44
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 17-11-07
Пользователь №: 32 406



Цитата(AlexandrY @ Jun 21 2015, 13:37) *
Чтобы работать через RTT нужно:
1. Подключить JLink отладчик к плате.
2. Запустить JLinkRTTViewer.exe
И все!


Замечательный способ, это все здорово.
Но одно главное НО (о чем я писал выше дважды) - у меня нет отладчика JLink у меня STLink, встроенный в отладочную плату.
Go to the top of the page
 
+Quote Post
arhiv6
сообщение Jun 22 2015, 05:08
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 633
Регистрация: 21-05-10
Из: Томск
Пользователь №: 57 423



Есть набор программок для работы с stlink под Linux. Среди них есть st-term (ST-Linky proof-of-concept terminal). Автор st-term вроде водится тут, можете с ним списаться.


--------------------
Go to the top of the page
 
+Quote Post
AndyDev
сообщение Jun 22 2015, 11:14
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 17-11-07
Пользователь №: 32 406



Цитата(arhiv6 @ Jun 22 2015, 08:08) *
Есть набор программок для работы с stlink под Linux. Среди них есть st-term (ST-Linky proof-of-concept terminal). Автор st-term вроде водится тут, можете с ним списаться.


Замечательно, похоже - это именно то, что мне нужно.

Надеюсь, разберусь с исходниками STLink и смогу задействовать в своей программе.
Go to the top of the page
 
+Quote Post
AndyDev
сообщение Jul 30 2015, 23:21
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 17-11-07
Пользователь №: 32 406



Цитата(arhiv6 @ Jun 22 2015, 08:08) *
Есть набор программок для работы с stlink под Linux. Среди них есть st-term (ST-Linky proof-of-concept terminal). Автор st-term вроде водится тут, можете с ним списаться.


Еще раз спасибо за наводку - все получилось!

Разобрал исходник ST-Link под Linux, и сделал на основе него набор процедур для доступа к памяти микроконтроллера в реальном времени. Скорость доступа к памяти оказалась примерно 1200 байт/сек (300 32-битных слов).
Go to the top of the page
 
+Quote Post
brag
сообщение Aug 1 2015, 08:11
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



Я использовавл jlinkarm.dll и сделал свою софтину для работы с SWO, работаю только с JLink.
Раскуривал сам давно, вот функции.
CODE
U32 JLINKARM_SWO_Control(U32 arg0,U32 *arg4);
U32 JLINKARM_SWO_Read(U8 *dst,U32 offset,U32 *arg8); // arg8 - number of bytes to read
U32 JLINKARM_HasError(void);
U32 JLINKARM_TIF_Select(U32 iface);
void JLINKARM_Close(void);
U32 JLINKARM_SetSpeed(U32 khz);
void JLINKARM_Halt(void);
U32 JLINKARM_IsHalted(void);
U32 JLINKARM_IsConnected(void);
void JLINKARM_Go(void);
void JLINKARM_Reset(void);
void JLINKARM_ClrError(void);

Jlink::Jlink(){
JLINKARM_TIF_Select(1); // select SWD
JLINKARM_SetSpeed(500);
}
Jlink::~Jlink(){
JLINKARM_SWO_Control(1,0);
JLINKARM_Close();
}

int Jlink::SwoRead(){
n=sizeof(rxbuf);
JLINKARM_SWO_Read(rxbuf,0,&n);
if(!n)return 0;
JLINKARM_SWO_Control(2,&n);
if(JLINKARM_HasError()){
JLINKARM_ClrError();
return -1;
}
//n- number of bytes read
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th August 2025 - 05:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01431 секунд с 7
ELECTRONIX ©2004-2016