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

 
 
> Надежность потока TCP и USB bulk, Возможна ли потеря данных?
Avensis
сообщение Aug 13 2012, 09:40
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 13-08-12
Пользователь №: 73 107



Всем добрый день.

Заранее прошу прощения за возможный оффтоп, но я не нашел более подходящей ветки. Перенесите плз, если не прав.

Теперь к вопросу. Планируется выпуск устройства на базе ARM, которое будет получать инструкции от ПК. Должно поддерживать несколько интерфейсов, в т.ч. Ethernet и USB. Поток до 1 МБит/с. Данные представляют собой управляющие команды (как следствие, планируется пакетная передача) и терять их никак нельзя.
Возникает главный вопрос: возможна ли теоретически потеря или порча данных в потоке TCP или USB? Вроде бы такого быть не должно, однако даже поиск по этой конференции показывает, что крайне редко в том же ТСР встречаются пакеты с битой КС на уровне приложения.
Если допустить что раз в год и палка стреляет, то возможна такая ситуация, что будет испорчен заголовок команды. Тогда пакет будет принят некорректно, но самое страшное, что будет потеряно ожидаемое начало следующего пакета и т.п. Короче, возможен рассинхрон.
Во избежание, придется любо городить некие таймауты для восстановления синхронизации, что не очень хорошо скажется на скорости работы, либо делать стаффинг, но мне не очень нравится реализовывать логику по сути канального уровня поверх транспортного. Либо делать еще что-то, чего мне в голову пока не пришло.
Гуру, подскажите, как все таки правильно сделать надежный пакетный обмен?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Konst_777
сообщение Aug 14 2012, 08:14
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(Avensis @ Aug 13 2012, 12:40) *
...Планируется выпуск устройства на базе ARM, которое будет получать инструкции от ПК. Должно поддерживать несколько интерфейсов, в т.ч. Ethernet и USB. Поток до 1 МБит/с. Данные представляют собой управляющие команды...
...возможна ли теоретически потеря или порча данных в потоке TCP или USB?...
... подскажите, как все таки правильно сделать надежный пакетный обмен?

У нас был следующий случай при выдаче команд от ПК модулю через USB. На ПК был установлен неверный драйвер для chipset-а материнской платы. В результате в модуль поступали совершенно произвольные данные. Модуль не подвисал только потому, что все команды были завернуты в пакеты (на уровне приложения) со следующей структурой: Тип пакета, Длина пакета, Команда и параметры, Контрольная сумма. То есть, не совпадала контрольная сумма и модуль отбрасывал все пакеты.

Предположим, что Ваш модуль - это универсальный управляемый источник питания, формирующий на выходе питающие напряжения от 1.8 В до 48 В... crying.gif
Go to the top of the page
 
+Quote Post
Avensis
сообщение Aug 14 2012, 09:58
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 13-08-12
Пользователь №: 73 107



Цитата(Konst_777 @ Aug 14 2012, 12:14) *
Тип пакета, Длина пакета, Команда и параметры, Контрольная сумма. То есть, не совпадала контрольная сумма и модуль отбрасывал все пакеты.


Это все понятно, только Ваш случай (по крайней мере, как он здесь описан) не дает желаемой защиты. Предположим, что у Вас в результате ошибки приема исказились первые 2 слова пакета. Безусловно, контрольная сумма не совпала, только вот незадача: Вы больше не знаете сколько еще нужно выгрести мусора из потокового канала, чтобы попасть на границу следующего пакета.
Именно о подобных ньюансах восстановления синхронизации я и спрашиваю в данной ветке.
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Aug 15 2012, 06:10
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(Avensis @ Aug 14 2012, 12:58) *
...Предположим, что у Вас в результате ошибки приема исказились первые 2 слова пакета...Вы больше не знаете сколько еще нужно выгрести мусора из потокового канала, чтобы попасть на границу следующего пакета...

В нашем случае длина пакета, в который была завернута команда, не превышала 64 байт. То есть, одного Bulk (Int) пакета USB в режиме Full Speed USB. А при обмене через USB, контроллер все равно принимает данные пакетами. Это при обмене по TCP/IP уже имеем дело с потоком. То есть, Вы хотите использовать TCP/IP over USB и таким образом использовать одно и то же ПО при обмене и через USB и через Ethernet?

Цитата(Avensis @ Aug 13 2012, 12:40) *
...но мне не очень нравится реализовывать логику по сути канального уровня поверх транспортного...

Просто я привел пример, показывающий, что Вам все равно придется делать это.

Go to the top of the page
 
+Quote Post
ReAl
сообщение Aug 18 2012, 07:50
Сообщение #5


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Konst_777 @ Aug 15 2012, 09:10) *
В нашем случае длина пакета, в который была завернута команда, не превышала 64 байт. То есть, одного Bulk (Int) пакета USB в режиме Full Speed USB.
А что, при переходе от RS232 к USB из протокола обмена командами SLIP-рамку убрали?
Я бы оставил... Свечка-то оно свечка, но бережёного… biggrin.gif


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Avensis   Надежность потока TCP и USB bulk   Aug 13 2012, 09:40
- - Rst7   QUOTE однако даже поиск по этой конференции показы...   Aug 13 2012, 10:09
|- - Avensis   Цитата(Rst7 @ Aug 13 2012, 14:09) Если TC...   Aug 13 2012, 10:46
- - Rst7   QUOTE Вот тут говорят, что такое все же бывает. 1 ...   Aug 13 2012, 10:54
|- - Avensis   Цитата(Rst7 @ Aug 13 2012, 14:54) Разве т...   Aug 13 2012, 10:59
- - Rst7   QUOTE Вероятность таки существует? Согласно квант...   Aug 13 2012, 11:39
|- - KRS   Цитата(Rst7 @ Aug 13 2012, 15:39) Согласн...   Aug 13 2012, 11:46
- - Rst7   QUOTE Автору - если у вас соединение с ПК в одном ...   Aug 13 2012, 11:58
|- - Avensis   Цитата(KRS @ Aug 13 2012, 15:46) Автору -...   Aug 13 2012, 13:55
|- - gerber   Цитата(Avensis @ Aug 13 2012, 17:55) А пр...   Aug 14 2012, 07:09
|- - AlexandrY   Цитата(gerber @ Aug 14 2012, 10:09) USB -...   Aug 14 2012, 07:38
|- - aaarrr   Цитата(AlexandrY @ Aug 14 2012, 11:38) Ра...   Aug 14 2012, 07:49
|- - dinam   Насчет надежности USB. Подключал своё устройство 5...   Aug 14 2012, 07:56
- - maksimp   Цитата(Avensis @ Aug 14 2012, 13:58) Пред...   Aug 14 2012, 17:43
- - Konst_777   Цитата(ReAl @ Aug 18 2012, 10:50) А что, ...   Aug 18 2012, 17:47


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

 


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


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