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

Обмен данными через SWO

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

Если у кого есть исходники с подобными примерами, поделитесь, плиз.

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

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


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

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

Если у кого есть исходники с подобными примерами, поделитесь, плиз.

 

Можно, для этого не нужен даже SWO.

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


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

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

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


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

Очень интересно, спасибо.

Хотя для RTT нужен именно J-LINK, а у меня ST-Link (встроенный в отладочную плату),

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

 

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

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

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


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

Очень интересно, спасибо.

Хотя для 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 и проч.

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


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

Чтобы работать через RTT нужно:

1. Подключить JLink отладчик к плате.

2. Запустить JLinkRTTViewer.exe

И все!

 

Замечательный способ, это все здорово.

Но одно главное НО (о чем я писал выше дважды) - у меня нет отладчика JLink у меня STLink, встроенный в отладочную плату.

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


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

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

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


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

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

 

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

 

Надеюсь, разберусь с исходниками STLink и смогу задействовать в своей программе.

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


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

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

 

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

 

Разобрал исходник ST-Link под Linux, и сделал на основе него набор процедур для доступа к памяти микроконтроллера в реальном времени. Скорость доступа к памяти оказалась примерно 1200 байт/сек (300 32-битных слов).

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


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

Я использовавл jlinkarm.dll и сделал свою софтину для работы с SWO, работаю только с JLink.

Раскуривал сам давно, вот функции.

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

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


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

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

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

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

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

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

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

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

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

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