Информационные технологииТехнологииПоиск
Поддержка Fire Wire, USB различными платформами Ни смотря на то, что в настоящее время USB устройства являются достсточно распространенными, поддержка их различными ОС несколько отставала от успехов производителей соответствующего "железа". Так, например, если возможность работать напрямую с собственным устройством, подключенным к последовательному порту RS232 при помощи стандартного компонента из программы Visual Basic или Delphi является весьма обычным делом, то это вряд ли можно сказать про USB, а тем более Fire Wire.
Существуют два осовных способа работы прикладной программы с USB/FireWire устройствами: первый - обращение к специализированным API драйверов верхнего уровня, которые обеспечивают доступ к абстрактному устройству (сканеру, принтеру, диску и.т.п.), скрывая при этом от программы детали, связанные с работой последовательной шины и второй способ, когда используется API нижнего уровня, предоставляющее доступ непосредственно к шине на уровне пакетов, каналов передачи, регистров CSR и.т.п.
  • 15 июн, 09:27
Unit registers Начиная со смещения 0x800 от начала Initial Units Registers располагаются регистры Unit
registers, наиболее важными из которых являются
TOPOLOGYMAP (диапазон адресов 0xl000-0xl3FC)
SPEEDMAP (диапазон адресов 0x2000 - 0x2FFC)
Устройство, которое оказывается менеджером шины, запоминает первые 4 байта из SelflD
пакетов, в том порядке в котором их посылают устройства во время процедуры Self
Identification.
На основании этой информации любое устойство, которому это потребуется может
восстановить топологию шины.
Формат TOPOLOGYMAP следующий:
16 бит длина всей таблицы.
16 6HTCRC.
32 бит generationnumber - количество раз, которое менеджер шины генерировал карту
топологии шины.
16 бит число подключенных устройств
16 бит selfidcount - общее число SelflD пакетов, посланных устройствами.
Дальше сдедуют 4 байтовые фрагменты SelflD пакетов в количестве selfidcount.
Регистр SPEEDMAP содержит от 0 до 4029 чисел, определяющих максимальную скорость. передачи между каждой парой устройств. Заголовок такой же в регистре TOPOLOGYMAP, в след за которым размещены однобайтовые элементы (симметричной) матрицы скоростей.
  • 15 июн, 09:21
Interrupt транзакции Хост посылает IN-token и устройство в ответ возвращает либо пакет данных, либо NACK (если данные не готовы), либо STALL (если данные не готовы). Получив пакет хост так же отвечает устройству АСК.
Процедура аналогична bulk транзакции типа IN, включая гарантированную доставку данных от устройства к хосту. Таким образом interrupt транзакция предназначена для передачи небольшого количества данных, например для использования в качестве канала обратной связи например при передаче данных по изохронному каналу. При этом поскольку хост опрашивает устройство с частотой, которое указало само устройство, interrupt передача может оказаться более оперативной чем bulk.
Для lowspeed устройств USB1.0 разрешенными типами передачи являются control и interrupt и поэтому производители устройств нередко используют interrupt для асинхронной передачи данных от устройства к хосту. Примером такого устройства может служить ридер чиповых карт ACE30U (производства Advanced Card Systems), для передачи данных от хоста к устройству в данном случае используется control передача.
В более поздних версиях спецификации (USB1.1) добавлено понятие interrupt передачи типа OUT. Повидимому это было сделано для того, чтобы обеспечить более удобный способ работы для медленных устройств с тем, чтобы вместо единственного канала для передачи от хоста к устройству типа control можно было использовать и другие каналы. В частности такой способ может использоваться устройствами, реализующими поверх USB прикладной протокол HID. HID - переводится как Human Interface Dvice и формализует некоторые общие свойства медленных устройств типа мышей и джойстиков.
  • 15 июн, 08:39
Control транзакции Транзакция control состоит из трех этапов: setup, data и status. Хост начинает транзакцию посылкой пакета SETUP, при этом передается информация о направлении передачи (IN или OUT) и предполагаемое количество байт данных. На этапе data (таковой может отсутствовать если нет данных для передачи) передаются данные в выбранном направлении, возможно количество данных будет больше заявленного и тогда этот этап будет содержать один или несколько дополнительных пакетов данных. Третий этап staus -передача пакета, содержащего ответ, в обратном направлении. Завершает весь процесс обычная handshake процедура (NACK означает что устройство не готово, a STALL означает ошибку).
Устройство, получившее token пакет SETUP в котором указан номер default endpoint (или номер любого другого control endpoint-a) в качестве номера endpoint-a обязано принять этот пакет (handshake ответы от устройства NACK и STALL не предполагаются, в случае ошибки устройство не возвращает никакого handshake пакета), если в качестве номера указан номер endpoint-a неподходящего типа, устройство должно проигнорировать пакет. Передача может быть разбита на несколько пакетов, но при этом IN и OUT пакеты никогда не смешиваются пока не закончится транзакция (за исключением пакета, передаваемого а этапе status). Фактически это означает что хост не потребует от устройства передачи данных (IN) через control endpoint до тех пор пока сам не завершит передачу (OUT).
Тип передачи control предназначается не для потоковой, а для пакетной передачи, поэтому пакеты control имеют определенную стандартом структуру, включающую информацию о направлении передачи, назначении пакета, длине вложенных данных и.т.п. Существует целый ряд служебных команд, которые могут быть переданы через default endpoint.
  • 15 июн, 08:38

Сервер информационных технологий

IT-технологии - портал содержит статьи и обзоры из всех областей компьютерных событий.
Мы в соцсетях
Последние новости