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

 
 
> Альтернатива USART, Как насчет SWO?
NeDoEng
сообщение Jun 15 2016, 12:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 17-04-16
Пользователь №: 91 333



В настоящее время (впрочем как и многие начинающие) использую для вывода отладочных сообщений USART. Т.е. помимо программатора к плате подключен еще и преобразователь USB-USART - неудобно же.
Знаю, что есть такой интерфейс SWD, который поддерживает вывод отладочной информации через вывод SWO. Т.е. имея 1 программатор с интерфейсом SWD такой как ST-link/V2 можно и шить и получать отладочные сообщения.
Например при использовании USART на скорости 921600 бод 1 байт можно передать примерно за 11 мкс. Достаточно быстро и погрешность установки скорости 0,16%. Быстрее пробовал, но не пашет почему-то. Использую преобразователь на ft2232.

SWO может так же или быстрее? Нигде не найду конкретных значений.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
NeDoEng
сообщение Jun 16 2016, 12:50
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 17-04-16
Пользователь №: 91 333



Цитата(AlexandrY @ Jun 16 2016, 14:13) *
Странно.
Куча разработчиков, но только единицы заботит быстродействие отладочного канала.
Хотя от этого напрямую зависит производительность программиста встраиваемых систем.

Короче так:

Скорость вывода по SWO вот в таком цикле :
Код
#define TESTBUF_SZ 1024
char testbuf[TESTBUF_SZ];


  for (i=0;i<1000;i++)
  {
    fwrite(testbuf, 1 , TESTBUF_SZ, stdout);
  }

будет:

J-Link Ultra+ - 2.7 Мбайт/с
J-Link - 480 Кбайт/с
ST-Link/V2 - 160 Кбайт/с


Понятно, что не для каждой задачи нужна максимальная скорость обмена.
Даже 160 кбайт/с неплохой результат, а значит вывод отладочной информации через ST-Link/V2 тоже имеет право на жизнь.
За вывод отладочной информации отвечает модуль ITM. Вот только не пойму -начиная с адреса 0xE0000000 расположены 32 32-х разрядных регистра (Stimulus port). Т.е. в любой из них кладем данные для передачи. И есть в регистре "ITM trace control" 23 бит - Busy. Как я понял - бит сигнализирует о занятости передатчика. Один на всех что ли? Тогда получается все как в UART - буфер передатчика и флаг занятости.
В общем, надо как-то это дело попробовать.

esaulenka, верно в 99% случаев достаточно одностороннего обмена.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:08
Рейтинг@Mail.ru


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