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

 
 
> Альтернатива 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
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
rx3apf
сообщение Jun 15 2016, 13:31
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Не представляю, почему бы 921600 мог бы не работать через FT2232 - у меня avreal32 на одном порте FT2232, а терминал на другом, и на этой скорости - прекрасно работает. Равно как работает и через FT232. Про SWD - не подскажу...
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 15 2016, 13:44
Сообщение #3


Ally
******

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



Цитата(NeDoEng @ Jun 15 2016, 15:42) *
SWO может так же или быстрее? Нигде не найду конкретных значений.


На ST-Link больше пары сотен килобайт с SWO не выжмете.
Есть еще более быстрый отладочный вариант - https://habrahabr.ru/post/259205/
Но и он не даст более 500 Кбит/с

Если применить J-Link Ultra то пару мегабит сделать можно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 15 2016, 14:08
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (NeDoEng @ Jun 15 2016, 15:42) *
Т.е. помимо программатора к плате подключен еще и преобразователь USB-USART - неудобно же.

Так выкиньте программатор нафиг и загружайте по тому-же отладочному UART. Всего делов загрузчик.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Jun 15 2016, 14:31
Сообщение #5


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(zltigo @ Jun 15 2016, 10:08) *
Так выкиньте программатор нафиг и загружайте по тому-же отладочному UART. Всего делов загрузчик.

программатор в 10 раз быстрее грузит. Зачем делать то, что можно не делать? Загрузчик, софт для него.

Имхо ничего удобнее уарта для отладки нет. Большие скорости там не нужны, 115200 более чем достаточно.
Капец какое неудобство, надо два разъема подключать! А еще же и питание надо по третьему? Как можно так жить?
Go to the top of the page
 
+Quote Post
NeDoEng
сообщение Jun 15 2016, 17:32
Сообщение #6


Участник
*

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



Цитата(AlexandrY @ Jun 15 2016, 16:44) *
На ST-Link больше пары сотен килобайт с SWO не выжмете.

Если применить J-Link Ultra то пару мегабит сделать можно.

Воот, я об этом и спрашивал. Спасибо за пояснение.
Цитата(zltigo @ Jun 15 2016, 17:08) *
Так выкиньте программатор нафиг и загружайте по тому-же отладочному UART. Всего делов загрузчик.

Да, можно так, но в одно движение из Кейла вряд ли получится загрузить.
Цитата(ar__systems @ Jun 15 2016, 17:31) *
Имхо ничего удобнее уарта для отладки нет. Большие скорости там не нужны, 115200 более чем достаточно.
Капец какое неудобство, надо два разъема подключать! А еще же и питание надо по третьему? Как можно так жить?

Во-во и не говорите. Хотя питание от программатора беру rolleyes.gif

Сообщение отредактировал Herz - Jun 16 2016, 07:56
Причина редактирования: Избыточное цитирование
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 16 2016, 03:26
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(NeDoEng @ Jun 15 2016, 18:42) *
SWO может так же или быстрее? Нигде не найду конкретных значений.

Лучше так не делать (не убирать отладочный UART). Вылезет потом у Вас проблема, что с подключенным SWD работает, а без - нет, как искать будете?
Включения/выключения питания, технологическое тестирование в течение длительного времени (когда какая-то инфа пишется в лог) с десятком устройств - как это всё делать?
Испытания на устойчивость к помехам и на помехоэмиссию с контролем работоспосбности, тоже - как?
Да и как-то пробовал я выводить отладку через J-Link, имхо: при этом нарушается реалтайм работы устройства, такое ощущение, что вывод через отладочный JTAG подтормаживает работу устройства,
по сравнению с обычной работой без лога или с логом в UART. Правда пробовал это не через SWD, а через JTAG. И может что-то не так сделал.
Но, имхо, работа с подключенным эмулятором и без оного - бывает несколько разной и нужно иметь возможность отладки и без подключенного эмулятора.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Jun 16 2016, 07:38
Сообщение #8


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(jcxz @ Jun 16 2016, 06:26) *
Да и как-то пробовал я выводить отладку через J-Link, имхо: при этом нарушается реалтайм работы устройства, такое ощущение, что вывод через отладочный JTAG подтормаживает работу устройства,
по сравнению с обычной работой без лога или с логом в UART. Правда пробовал это не через SWD, а через JTAG. И может что-то не так сделал.

Ну ещё бы. Semihosting - это старый механизм. Довольно гибкий, но крайне медленный:
- софт в контроллере на каждый putchar() выставляет брекпоинт.
- отладчик "ловит" этот брекпоинт, считывает переданный байтик (по определённой комбинации регистров, насколько я помню), отправляет в консоль.
Помимо двунаправленной консоли, можно ещё кучу "плюшек" организовать, но, вроде б, это так никто и не поддержал. Подробности есть на arm.com в разделе "ARM Compiler Software Development Guide" -> "Semihosting".
Но постоянные остановки ядра на пользу реалтайму не идут, конечно же.

SWO - это совсем другая штука. Ядро кладёт байтик в специальный регистр, а дальше "оно само". Но тут канал однонаправленный (впрочем, в 99% случаев отладочный канал такой и нужен).

Цитата(jcxz @ Jun 16 2016, 06:26) *
Но, имхо, работа с подключенным эмулятором и без оного - бывает несколько разной и нужно иметь возможность отладки и без подключенного эмулятора.

Это если только энергосбережение какое-то отлаживать. Но там и внешний уарт мешать будет.
А так - SWD и SWO штуки независимые, можно использовать только что-то одно.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
x893
сообщение Jun 16 2016, 08:15
Сообщение #9


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

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Можно использовать $1 JLink и RTT
Нужно 3 провода минимум

GND
SWD
SWC
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 16 2016, 11:13
Сообщение #10


Ally
******

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



Странно.
Куча разработчиков, но только единицы заботит быстродействие отладочного канала.
Хотя от этого напрямую зависит производительность программиста встраиваемых систем.

Короче так:

Скорость вывода по 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 Кбайт/с
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 16 2016, 11:36
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (ar__systems @ Jun 15 2016, 17:31) *
программатор в 10 раз быстрее грузит. Зачем делать то, что можно не делать? Загрузчик, софт для него.

Это иллюзия, поскольку упираетесь в скорость записи во Flash а не в скорость передачи. Это раз. Загрузчик для серийного изделия по любому делать надо. Это два.
Ну и на лишний разъем это Вы жаловались, а не я.


QUOTE (NeDoEng @ Jun 15 2016, 20:32) *
Да, можно так, но в одно движение из Кейла вряд ли получится загрузить.

Получится в одно движение из терминальной программы.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
NeDoEng
сообщение Jun 16 2016, 12:50
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 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
x893
сообщение Jun 16 2016, 13:12
Сообщение #13


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

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Цитата(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 Кбайт/с


Сравните со скоростью передачи через RTT
https://www.segger.com/jlink-rtt.html
раздел
Performance
Go to the top of the page
 
+Quote Post
NeDoEng
сообщение Jun 16 2016, 13:27
Сообщение #14


Участник
*

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



Цитата(x893 @ Jun 16 2016, 16:12) *
Сравните со скоростью передачи через RTT
https://www.segger.com/jlink-rtt.html
раздел
Performance

Слыхал про RTT, но как-то не придал значения. Однако... Даже за 60 баксов можно получить колоссальную скорость.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 16 2016, 14:14
Сообщение #15


Ally
******

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



Цитата(x893 @ Jun 16 2016, 16:12) *
Сравните со скоростью передачи через RTT


Фишка RTT в том что он работает без ожидания готовности на основе буфера произвольного размера. Переполнения при этом фиксируются.
Поэтому его можно применять для логирования прерываний, переключения контекста, сервисов RTOS и прочих мелких и разреженных явлений без деградации реалтайма.

SWO же требует готовности на каждое слово, поэтому неминуемо замедлит логирование и испортит тайминги хоть и имеет большую пропускную способность чем RTT.

Я использую HS USB если нужен действительно быстрый канал для чего-то типа J-Scope.
Go to the top of the page
 
+Quote Post

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

 


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


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