Сеньков Андрей SWD Software Ltd. Санкт-Петербург Особенности разработки драйверов для USB устройств в ОС QNX.

Презентация:



Advertisements
Похожие презентации
Периферийные устройства ЭВМ. Внешние интерфейсы Шина USB USB – универсальная последовательная шина, предназначенная для подключения к компьютеру периферийных.
Advertisements

Аппаратная экосистема QNX: поддерживаемые процессорные платы и стартовые комплекты SWD TimeMaster Эдуард Белохвостиков SWD Software Ltd. Санкт-Петербург.
Построение систем высокой надёжности на базе ОСРВ QNX.
IDE QNX – практическая работа Трофимов Александр SWD Software.
Настройка системы печати в ОС QNX 6 Cергей Зыль SWD Software.
Топология ЛВС. Топология – это конфигурация локальной сети, которая описывает схему физического соединения компьютеров, тип оборудования, методы управления.
®Microchip ОБЗОР USB. ®Microchip КРАТКОЕ СОДЕРЖАНИЕ Необходимость USB Преимущества USB Сравнения скоростей Эволюция USB USB хост/ Периферийные устройства.
Контроллер динамической памяти Ядро процессора Hammer Гипер Транспорт HyperTrasport TM КЭШ команд первого уровня L1 КЭШ данных первого уровня L1 КЭШ второго.
Модульное лицензирование Александр Варварик SWD Real-Time Systems Конференция QNX Россия сентября, Санкт-Петербург.
Операционная система. Базовые понятия Операционная система – это комплекс программ, обеспечивающий контроль за существованием, распределением и использованием.
1 Микропроцессорная система. 2 Особенности микропроцессорных систем Гибкая логика работы меняется в зависимости от задачи; Универсальность может решать.
Стандартизация сетевого взаимодействия СТАНДАРТИЗАЦИЯ ПРОЦЕДУР: - выделения и освобождения ресурсов компьютеров, линий связи и коммуникационного оборудования;
Периферийные устройства ЭВМ. ШИНЫ РАСШИРЕНИЯ Шина AGP AGP (от англ. Accelerated Graphics Port, ускоренный графический порт) специализированная 32- битная.
Администраторы ресурсов в QNX. Администратор ресурсов в QNX является пользовательской программой, которая предоставляет стандартизированный по интерфейсу.
Архитектура персонального компьютера. Компьютер - представляет собой программируемое электронное устройство, способное обрабатывать данные и производить.
Коммуникационные технологии. Передача информации. Локальные компьютерные сети.
OPC-технологии в QNX. Организация взаимодействия приложений QNX и Windows в системах промышленной автоматизации Александр Трофимов SWD Software Ltd.
Новая аудио подсистема для ОСРВ QNX4 – Audio2 Олег Большаков инженер-программист «СВД Встраиваемые Системы» Санкт-Петербург.
Вычисление времени запрета обработки внешних прерываний ОС с использованием ячейки МПВ-М Магистерская диссертация Студент: Севастинович Павел, 515 гр.
Передача информации. Отправитель информации Получатель информации Канал передачи информации.
Транксрипт:

Сеньков Андрей SWD Software Ltd. Санкт-Петербург Особенности разработки драйверов для USB устройств в ОС QNX

В чем секрет успеха USB? "Горячее" подключение и отключение Пропускная способность – 12Mbps Подключение до 127 устройств Встроенная помехозащищенность Контроллер USB занимает одно прерывание Связь CPU686E Fastwel через USB кабель – хорошая замена RS232

Топология шины USB Хост-контроллер Корневой Hub Hub Device Hub Device Hub Device Физическая топология шины USB - многоярусная звезда Единственный хост-контроллер

Хост-контроллеры USB UHCI Universal Host Controller Interface ( спецификация USB 1.x ) OHCI Open Host Controller Interface ( спецификация USB 1.x ) EHCI Enhanced Host Controller Interface ( спецификация USB 2.0 ) devu-uhci devu-ohci

Классы USB устройств Низкоскоростные (скорость до 1.5 Mbps) Высокоскоростные (скорость до 12 Mbps) Изохронные (естественные типы данных)

Модель передачи данных Конечная точка – логический источник/приемник данных в устройстве Интерфейс – набор конечных точек Канал (pipe) – модель передачи данных между хостом и конечной точкой USB Host USB device EP0 EP1 EPn управление передачи каналы (pipes) host device

Типы передачи данных Тип передачНаправление Запуск в определенный момент Гарантия доставки Управляющие ( Control transfers ) Двунаправленные Не гарантируется Есть ИзохронныеОднонаправленныеКаждые 1 мс Нет - отсутствует управление потоком Прерывания ( Interrupts ) Только ввод Определяется частотой опроса Есть Массивов данных ( Bulk data transfers ) Двунаправленные Не гарантируется Есть

Использование USB SDK QNX Neutrino 6 QNX Neutrino или старше GNU GCC USB OHCI или UHCI контроллер, спецификация 1.1 QNX 4 QNX 4.25, patch D или старше Watcom 10.6, patch B или старше USB OHCI или UHCI контроллер, спецификация 1.1 Системные требования Набор утилит ДокументацияUSBD – интерфейс драйвера USB USB DDK (QNX6.2) Примеры

USB утилиты devu-uhci - менеджер UHCI контроллера devu-ohci - менеджер OHCI контроллера usb - вывод конфигурации USB устройств devu-mouse - драйвер класса USB мышей ( Logitech, Microsoft ) devu-prn - драйвер класса USB принтеров ( Canon, Epson, HP ) devu-kbd - драйвер класса USB клавиатур ( Belkin, Micro Innovations )

Структура стека USB devu-uchi или devu-ochi это наша разработка Драйвер контроллера Драйвер управления Драйверы устройств Хост- контроллер Концентратор Устройство USB стек USBаппаратный уровень

Структура драйвера USB устройства Менеджер ресурсов - devu-mouse, devu-prn, devu-kbd devu-uhci & devu-mouse & Динамическая библиотека – devn-rtl8150.so (QNX6) devu-uhci & io-net –p qnet & mount –T io-net devn-rtl8150.so Сетевой драйвер – Net.upl (QNX4) devu-ohci & Net & Net.upl –l2 –a0001 &

Общий алгоритм работы драйвера Соединение со стеком usbd_connect() Соединение со стеком usbd_connect() Присоединение устройства usbd_attach() Чтение конфигурации устройства Выделение ресурсов, настройка устройства Основной цикл драйвера Отсоединение устройства usbd_detach() Освобождение связанных с устройством ресурсов INSERTIONREMOVAL Отсоединение от стека usbd_disconnect() Отсоединение от стека usbd_disconnect()

Соединение драйвера со стеком usbd_connect( ) – соединение с USB стеком Основные параметры: Тип устройства (VID, DID, Class, Subclass, Protocol) Имена функций обработчиков событий insertion/removal Имя стека, по умолчанию /dev/usb Время ожидания стека usbd_disconnect( ) – отсоединение от USB стека

Обработка события insertion Основные функции: usbd_attach( ) – присоединить устройство usbd_*_descriptor( ) – получить конфигурацию устройства usbd_open_pipe( ) – открыть канал для конечной точки usbd_alloc_urb( ) – разместить USB Request Block (URB) usbd_alloc( ) – разместить буфер для обмена данными Захват устройства Чтение конфигурации Выделение ресурсов Настройка устройства insertion callback

Обработка события removal Основные функции: usbd_close_pipe( ) – закрыть канал для конечной точки usbd_detach( ) – отсоединить устройство usbd_free_urb( ) – освободить память URB usbd_free( ) – освободить память буфера обмена Отсоединение устройства Закрытие каналов Освобождение ресурсов removal callback

Конфигурация устройства дескрипторы устройства версии контроллера и USB SDK дескрипторы конфигурации дескрипторы интерфейса вывод утилиты usb -vvv дескрипторы конечных точек

Ввод/вывод данных Установка URB usbd_setup*( ) Запрос менеджеру usbd_io( ) Менеджер USB devu-uhci, devu-ohci Менеджер USB devu-uhci, devu-ohci USB устройство драйвер пакеты заданной длины пакеты фиксированной длины Типы запросов: usbd_setup_bulk( ) usbd_setup_vendor( ) usbd_setup_interrupt( ) usbd_setup_isochronous( ) usbd_setup_control( ) Направление передачи: URB_DIR_IN – от устройства URB_DIR_OUT – к устройству

Примеры приема и передачи данных usbd_setup_bulk( urb, URB_DIR_OUT, out_buf, length ); usbd_io( urb, out_pipe, out_bulk_cbf, data, USBD_TIME_INFINITY ); блок URB, выделен usbd_alloc_urb() буфер, выделен usbd_alloc() Размер данных блок URB, выделен usbd_alloc_urb() функция callback, вызывается при завершении обмена тайм-аут обмена передача: прием: usbd_setup_bulk( urb, URB_DIR_IN, in_buf, IN_SIZE ); usbd_io( urb, in_pipe, in_bulk_cbf, data, USBD_TIME_INFINITY ); прерывание: usbd_setup_interrupt( urb, URB_DIR_IN, intr_buf, INTR_SIZE ); usbd_io( urb, intr_pipe, intr_cbf, data, USBD_TIME_INFINITY );

Оптимизация: цепочки URB USB-Ethernet конвертер // организация цепочек urb urb_out_end = usbd_alloc_urb( NULL ); urb_out = usbd_alloc_urb( urb_out_end ); usbd_setup_bulk( urb_out_end, URB_DIR_OUT, NULL, 0 ); usbd_setup_bulk( urb_out, URB_DIR_OUT, out_buf, length ); usbd_io( urb_out, out_pipe, out_bulk_cbf, data, USBD_TIME_INFINITY ); пример: драйвер устройство usbd_io( ) разделитель пакет данных URB2URB1URB0 NULL

Оптимизация: кольцевой опрос запрос 4 запрос 3 запрос 2 запрос 1 устройство данные драйвер // кольцевой прием данных for ( i=0; i < IN_URB_NUMBER; i++ ) { in_urb[ i ] = usbd_alloc_urb( NULL ); in_buf[ i ] = usbd_alloc( IN_BUF_SIZE ); usbd_setup_bulk( in_urb[ i ], URB_DIR_IN, in_buf[ i ], IN_BUF_SIZE ); usbd_io(in_urb[ i ], in_pipe, in_bulk_cbf, data, USBD_TIME_INFINITY ); } пример: Запросы обрабатываются менеджером в порядке поступления Ускорение приема данных 10 – 20 %

Обзор спецификации USB 2.0 Скорость передачи до 480 Мбит/с Обратная совместимость с устройствами USB 1.x Основа спецификации – технология EHCI Наличие неоптимальных и неработоспособных конфигураций EHCI хост-контроллер USB 2.0 Корневой hub USB 2.0 Hub USB 2.0Hub USB 1.1 Устройство USB 2.0 Устройство USB 2.0 Устройство USB 2.0 Устройство USB 1.1 Hub USB 2.0 Устройство USB 1.1 неоптимальное подключение Возможно неработоспособное подключение

SWD Software Ltd. Официальный дистрибьютор QNX , Санкт-Петербург, пр. Юрия Гагарина 23 тел.: (812) тел.: (812) факс: (812) web: Спасибо!