|
Проблема кодключения к RPi через USB-to-RS232, не все символы приходят в терминал |
|
|
|
Sep 22 2018, 09:53
|
Группа: Участник
Сообщений: 10
Регистрация: 22-10-15
Пользователь №: 88 978

|
Здравствуйте! Возникла необходимость посмотреть что происходит во время загрузки Raspberry Pi 3B. Настроил cmdline.txt, config.txt по инструкции, подключился через вот такой конвертер, но в терминал приходят не все символы, многие хаотично пропускаются. Подключаюсь через minicom (115200, 8N1, NOR). Вывод выглядит вот так:  Подскажите пожалуйста, в чем может быть проблема? Не из-за конвертера ли это вообще происходит? Может быть такое что пересылка через UART не успевает за выводом отладочных данных ядром Linux? Я полный ноль в этом деле.
Сообщение отредактировал Mickey Rourke - Sep 22 2018, 09:55
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 20)
|
Sep 22 2018, 10:11
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Mickey Rourke @ Sep 22 2018, 12:53)  Не из-за конвертера ли это вообще происходит? Вряд ли, но такие конвертеры после покупки следует препарировать на предмет "забытых" при сборке конденсаторов. Цитата(Mickey Rourke @ Sep 22 2018, 12:53)  Может быть такое что пересылка через UART не успевает за выводом отладочных данных ядром Linux? Не может. А чем принимаете (хост, ПО)?
|
|
|
|
|
Sep 22 2018, 10:50
|
Группа: Участник
Сообщений: 10
Регистрация: 22-10-15
Пользователь №: 88 978

|
Спасибо, aaarrr! Цитата(aaarrr @ Sep 22 2018, 11:11)  А чем принимаете (хост, ПО)? Использую minicom Цитата(kovigor @ Sep 22 2018, 11:18)  Попробуйте и на Raspberry и на персоналке включить управление потоком, как минимум, Xon/Xoff, а лучше - аппаратное, RTS/CTS. В крайнем случае - попробуйте уменьшить скорость до 9600. minicom включен режим Аппаратное управление потоком, а с RPi похоже все сложно, CTS/RTS вынесены на 36 и 11 пины и так просто это не решить. А вот включение XOFF и XON помогло на хосте. Большое спасибо, kovigor!
Сообщение отредактировал Mickey Rourke - Sep 22 2018, 10:51
|
|
|
|
|
Sep 22 2018, 16:07
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(kovigor @ Sep 22 2018, 14:57)  На здоровье. Так я не понял, вы и на хосте и на Raspberry включили Xon/Xoff ? Тогда все правильно ... Я не сталкивался с такой проблемой, хотя много раз подключал UART к различным карточкам, включая малину. Все контроли отключены. Все работает нормально. Проверьте кабель и разъемы. Попробуйте с другим компьютером. Короче ишите комбинации, что работают. Это поможет локализовать причину. Если вас устраивает посмотреть последние системные сообщения после загрузки, то в терминале исполните команду dmesg. Это о том, что некоторые вещи можно сделать и другим путем.
|
|
|
|
|
Sep 22 2018, 20:20
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(aaarrr @ Sep 22 2018, 13:11)  Не может. А почему бы и нет ? Не знаю как с Prolific, но вот CP2102 у меня теряла данные, начиная с некоторого объема входных. Т.е. идет поток 115200, если непрерывный блок больше какой-то величины - потеря. Если чуть-чуть притормозить передачу - потери нет. Управления потоком не было, естественно, но это никак не повод терять. С другими адаптерами - проблемы не было. А, нет, наврал. Эта она (2102) по передаче дохла, а не по приему, запамятовал уже...
Сообщение отредактировал rx3apf - Sep 22 2018, 20:55
|
|
|
|
|
Sep 23 2018, 00:36
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(rx3apf @ Sep 22 2018, 23:59)  В моем случае машина была пустая. Но я просто подзабыл уже, только сейчас вспомнил - она дохла по передаче ! И пришлось паузу добавить при передаче (самый минимум, чтобы буквально на единицы %% притормозить относительно номинальной скорости). FT2232 - без проблем. А эта вот дрянь преподнесла сюрприз. Много лет использую CP2102 - никаких проблем ни на каких скоростях до 921600 ни с какой плотностью потока. Как и с FTDI. Проблемы обычно есть у разных терминалов - при плотном потоке у большинства терминалов из инета начинается потеря данных. Обусловлено это только кривостью рук их написателей. Нормально работает на любых скоростях например putty. Вангую, что и у Вас причина именно в неумении работать с COM-портом под виндой (или с UART на МК). И CP2102 - не при чём. Цитата(kovigor @ Sep 22 2018, 23:55)  Я понимаю, для современных высокопроизводительных машин это уже не так актуально. Но все же ... Достаточно просто поднять приоритет thread-а, работающего с портом. И занятость машины не будет мешать. Так что опять - причина только в кривости рук программиста.
|
|
|
|
|
Sep 23 2018, 11:08
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(jcxz @ Sep 23 2018, 03:36)  Вангую, что и у Вас причина именно в неумении работать с COM-портом под виндой (или с UART на МК). И CP2102 - не при чём. .... Так что опять - причина только в кривости рук программиста. Дело было так - copy /b file com<n> Всегда все работало (потому что пользовался FT2232) и PL2303. И вдруг - не работает. А адаптер-то на CP2102. Если копируемый файл где-то от 2 кило и выше - выпадают куски. Так что к кривым рукам - в MS или к драйверописателям из Silabs, моего-то тут ничего не было. То, что выходило с UART конвертора, я посмотрел - да, потеря данных. Пришлось вместо системной copy использовать свою утилиту. И занятость машины тут не при чем (четырехядерный процессор с нулевой загрузкой по всем ядрам). И это не потеря на приеме - данные улетают в никуда, хотя драйвер должен бы как-то приостановить источник данных. Может быть, как-то зависит от конкретной системы...
Сообщение отредактировал rx3apf - Sep 23 2018, 11:10
|
|
|
|
|
Sep 23 2018, 11:48
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(jcxz @ Sep 23 2018, 14:29)  Может стоило обновить дрова. Стояли свежие (2016). Можете попробовать повторить эксперимент самостоятельно (W7 x64, 115200). Хоть на бинарнике, хоть на текстовом, начиная с какого-то размера файла выпадают фрагменты. Строго на одних и тех же местах, с точностью до байта. Эффект воспроизводился как через "copy", так и через компонент axserial для vbs, с разными экземплярами USB-UART. Сделал в скрипте задержку из расчета 25 ms на 256-байтовый блок - все в норме (реально хватало и меньше, 25 для подстраховки, а 11% замедления было некритично).
|
|
|
|
|
Sep 23 2018, 12:06
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(rx3apf @ Sep 23 2018, 14:48)  Стояли свежие (2016). Можете попробовать повторить эксперимент самостоятельно (W7 x64, 115200). Хоть на бинарнике, хоть на текстовом, начиная с какого-то размера файла выпадают фрагменты. Строго на одних и тех же местах, с точностью до байта. Эффект воспроизводился как через "copy", так и через компонент axserial для vbs, с разными экземплярами USB-UART. У меня нет W7 (дома XP, на работе - W8). Да и думаю будет и под W7 нормально работать. Я использую очень много USB-UART. Часто - для логов (обычно на 921600) иногда по несколько шт. сразу. И ни разу не наблюдал никаких проблем с разными экземплярами своих CP2102 или FT232. А вот с PL2303 - наблюдал на нескольких экземплярах. Возможно у Вас или сами модули кривые (где покупали? на али? я свои CP2102 покупал не на али), возможно там проблема с питанием. Или может проблема с питанием в том USB, куда втыкаете (проверяли напряжение, просадки? может запитать внешним источником?). Мои PL2303 которые глючат - они как раз с али.
|
|
|
|
|
Sep 23 2018, 12:16
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Ну при чем здесь питание ? Данные ушли в драйвер, драйвер отдал по USB. Если не приостанавливать - теряются. Чуть приостановить (хоть в том же ритме 115200, но чтобы заведомо не чаще) - не теряются. Ненормальное поведение самого 2102 - увы, есть только с ali, проверить трудно. А, вообще-то на пути еще хаб есть, при случае без него проверю...
Будет желание и возможность - проверьте. Если протокол предусматривает квитирование (и наверняка блоки меньше, чем в моем случае), проблем, естественно, никогда не будет. Ситуация возникает, когда льется непрерывным потоком в темпе, заданном настройкой конвертора USB-UART, без какого-то внешнего управления потоком.
|
|
|
|
|
Sep 23 2018, 12:46
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(rx3apf @ Sep 23 2018, 15:16)  Ну при чем здесь питание ? Ну тогда вопросов больше не имею... Питание вообще-то оно при всём. Цитата(rx3apf @ Sep 23 2018, 15:16)  Если протокол предусматривает квитирование (и наверняка блоки меньше, чем в моем случае), проблем, естественно, никогда не будет. Прочитайте внимательнее, что я писал: "использую часто для логов". Т.е. - вывода отладочной текстовой информации. Никаких квитирований или управлений потоком естественно там быть не может. И насчёт copy я не стал бы её принимать за мерило качества. Я не уверен что файловый вывод в COM-порты (да ещё не железные) под современными ОС эмулируется корректно. Лучше испытывать на чём-нить типа putty или писать самому, через WinAPI.
|
|
|
|
|
Sep 23 2018, 16:21
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(jcxz @ Sep 23 2018, 15:46)  ило качества. Я не уверен что файловый вывод в COM-порты (да ещё не железные) под современными ОС эмулируется корректно. Почему-то с другими адаптерами USB-UART никогда никаких проблем не возникало. И таки да, я проверил не только с "copy", сказал же уже. Что до вывода логов - а почему, собственно, это исключает управление потоком, если источник поддерживает такое управление ? Чем лог отличается от любой другой передачи ? Вот только как-то я не очень представляю, чтобы лог лился непрерывным потоком на полной скорости по несколько килобайт. Цитата(k155la3 @ Sep 23 2018, 17:03)  Если в лог (на драйвер) выдать 3-4, то должна отработать буферизация на передающей стороне. Должна (казалось бы). Но по факту - не работает. Наружу данные не вышли, до приемника не дошли. В том-то и "прелесть" ситуации...
|
|
|
|
|
Sep 23 2018, 17:05
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(rx3apf @ Sep 23 2018, 19:21)  Что до вывода логов - а почему, собственно, это исключает управление потоком, если источник поддерживает такое управление ? Потому что источник лога - моя программа в устройстве. И мне известно что и как там реализовано. Цитата(rx3apf @ Sep 23 2018, 19:21)  Чем лог отличается от любой другой передачи ? Вот только как-то я не очень представляю, чтобы лог лился непрерывным потоком на полной скорости по несколько килобайт. Так представьте. У меня через этот канал работает отладочная консоль. В ней у меня есть команды дампов разных массивов. И эти дампы - по несколько КБ. Потеря хотя-бы одного символа чётко видна - столбцы чисел сдвигаются. Не понимаю - что Вы пытаетесь доказать? Я говорю что у меня с PL2303 были проблемы аналогичные первому посту (даже глазом видимые потери символов в логе, ну может реже только они были); с CP2102 таких проблем за все годы отладки не наблюдал. Вам виднее какие у меня были проблемы, а каких нет, что-ли? У ТС-а ситуация подобная моим логам: он просто принимает текстовый поток данных.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|