Intereting Posts
Почему люди все еще используют SFTP-тюрьмы на основе chroot SSH, а не пространства имен Systemd? Как я могу сравнивать разные файлы, не открывая их? Могу ли я сменить комбинацию клавиш на клавишу Windows? Как fakeroot не является нарушением безопасности в Linux? наблюдение за выполнением скрипта с помощью скрипта monit, похоже, игнорирует каналы Информация о сетевом интерфейсе в AIX Как отобразить изображения на сетке, которые содержат определенный размер (MxN) в FEH? Терминатор: ярлыки для Prev и Next? удалить фон с feh? Java «Не удалось зарезервировать достаточное пространство для кучи объектов», хотя имеется достаточно ОЗУ Почему «ps -p proc1 proc2 proc3» показывает «-csh», «-tcsh» и «- / bin / tcsh», тогда как «ps -p proc » индивидуально все говорят «tcsh»? Как устранить неисправность No Sound на CentOS 6.4 w / USB-гарнитуре? Что делает опцион конфигурации «virtual_private» Openswan под капотом? полнофункциональный USB-адаптер WLAN Как изменить формат даты на экране LXDM для входа / приветствия (LXDE)

Ошибка USB g_serial? – потеря данных в одном направлении

У меня возникают некоторые трудности с модулем ядра Gadget Serial v2.4. g_serial используется на ARM-машине BeagleBone Black с Arch Linux 4.6.3-1, которая взаимодействует с хост-компьютером.

Проблема была воспроизведена на этих хостах:

  • Linux 4.2.0-23, ПК x86_64,
  • Linux 3.4.43, Cubieboard2 armv7l,
  • Windows 10, ПК x86_64,

и с различным программным обеспечением:

Тест Python: https://github.com/tomasxvavra/serial_test .

Проблема в том, что данные теряются в устройстве direction -> host. Например, если устройство отправляет на ttyGS0 100 МБ данных, то хост получает от ttyACM0 только 99,7% данных. Это никогда не происходит в направлении host -> device.

Количество данных, которые теряются, зависит от этих условий:

  • Размер данных «пакеты», записанные на последовательный порт: * Если 100 МБ записывается в порт сразу через s.write (data), то он гораздо менее вероятен. Запись в порт с различными размерами пакетов приводит к частоте ошибок вариатора. Например:
    • Меньшие пакеты <= 512 B – в основном нормально, иногда с ошибкой около 10-512 бит.
    • Большие пакеты 4096 – 32768 B: Сбой чаще и больших объемов данных отсутствует.
  • Скорость хост-устройства. Частота отказов была намного выше на более медленном Cubieboard2, чем на ПК, особенно с большими пакетами.

Иногда это происходит при отправке только 1024 B или аналогичного размера, обычно 512 B теряется. Я также попытался проанализировать пакеты USB с wirehark и там действительно отсутствовали пакеты. Но я ничего не мог интерпретировать как аномалию.

Таким образом, с точки зрения ядра noob, это похоже на какой-то момент. Любой подобный опыт с g_serial? Спасибо.

редактировать

Я узнал, что когда хост является Cubieboard2 (2 процессора), тогда частота отказов быстро падает, если я загружаю один процессор с

cat /dev/zero > /dev/null 

Но другое количество нагрузки может сделать его еще хуже. Все еще выглядящий как некоторый момент: /