|
|
  |
Обмен данными через SWO |
|
|
|
Jun 20 2015, 08:24
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jun 21 2015, 10:37
|

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 и проч.
|
|
|
|
|
Jun 21 2015, 13:44
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 17-11-07
Пользователь №: 32 406

|
Цитата(AlexandrY @ Jun 21 2015, 13:37)  Чтобы работать через RTT нужно: 1. Подключить JLink отладчик к плате. 2. Запустить JLinkRTTViewer.exe И все! Замечательный способ, это все здорово. Но одно главное НО (о чем я писал выше дважды) - у меня нет отладчика JLink у меня STLink, встроенный в отладочную плату.
|
|
|
|
|
Jun 22 2015, 05:08
|

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

|
Есть набор программок для работы с stlink под Linux. Среди них есть st-term (ST-Linky proof-of-concept terminal). Автор st-term вроде водится тут, можете с ним списаться.
--------------------
|
|
|
|
|
Jun 22 2015, 11:14
|
Частый гость
 
Группа: Участник
Сообщений: 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 и смогу задействовать в своей программе.
|
|
|
|
|
Jul 30 2015, 23:21
|
Частый гость
 
Группа: Участник
Сообщений: 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-битных слов).
|
|
|
|
|
Aug 1 2015, 08:11
|
Профессионал
    
Группа: Свой
Сообщений: 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
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|