Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Драйвер USB устройства URC220 для OS QNX

Драйвер USB устройства URC220 для OS QNX

PDF-файл Драйвер USB устройства URC220 для OS QNX Программное обеспечение управляющих комплексов (ПОУК) (14922): Домашнее задание - 9 семестр (1 семестр магистратуры)Драйвер USB устройства URC220 для OS QNX: Программное обеспечение управляющих комплексов (ПОУК) - PDF (14922) - СтудИзба2017-12-25СтудИзба

Описание файла

PDF-файл из архива "Драйвер USB устройства URC220 для OS QNX", который расположен в категории "". Всё это находится в предмете "программное обеспечение управляющих комплексов (поук)" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "поук" в общих файлах.

Просмотр PDF-файла онлайн

Текст из PDF

Московский государственный технический университет им. Н.Э. БауманаФакультет «Робототехника и комплексная автоматизация»Кафедра «Робототехника»Драйвер USB многофункциональногоустройства URC220 для ОСРВ QNXПояснительная запискаСтудент……………………… (Куренев П.Н.) Группа РК10-72Руководитель проекта ……………………… (Гончаренко К.В.)Москва20071. Техническое заданиеНеобходимо разработать для операционной системы реального времени QNXдрайвер устройства URC220, подключаемого к компьютеру через универсальнуюпоследовательную шину (USB).Также необходимо разработать библиотеку для облегчения написанияпользовательских программ на C++, а также описание этой библиотеки идемонстрационные программы.22.

ДрайверДля многих задач не всегда требуется писать программу непосредственно длямикроконтроллера, так как достаточно простого управления с компьютера. Дляэтого была реализована программа для микроконтроллера, которая принимаеткоманды от компьютера по USB интерфейсу и управляет всеми периферийнымиустройствами на плате. Для компьютера создан драйвер и библиотека, котораяпозволяет легко управлять платой из любой программы под QNX.Драйвер USB устройства URC220 реализован в виде исполняемого файла “URCSrv”.Кроме драйвера, программа также является нумератором подключаемыхустройств.

Выполнена в виде консольного приложения.Программа URCSrv, выполняет следующие задачи:- определение факта подключения устройства;- назначение номера подключённому устройству;- обработка подключения, установление соединения;- корректное отключение от устройства;предоставлениеинтерфейсадлявзаимодействияпользовательским программам.сустройствами2.1 Алгоритм работыПосле запуска, драйвер подключается к USB стеку QNX и назначает функции,которые операционная система вызывает в случае подключения и отключенияустройства.Функция также создаёт объект общего доступа к памяти под именем“/dev/shmem/urc_srv_100”. С помощью этого объекта происходит взаимодействиемежду драйвером и пользовательскими программами.После подключения устройства, программа ищет незанятый номер в диапазоне [0;(URC_MAXDEV-1)] (URC_MAXDEV = 127) и присваивает его вновь подключённомуустройству. Все дальнейшие обращения к устройству будут производиться поэтому номеру (номер является индексом элемента в массиве объектов структурописателей).Далее происходит подключение к устройству и считывание его дескрипторов(дескриптор устройства, конфигурации, конечных точек (endpoints)) и проверка ихсоответствия тем, которые должны быть у устройств, для которых написан этотдрайвер.

Это вторая проверка, так как ещё при подключении к USB стеку былизаданы VID (Vendor ID) и PID (Product ID) того устройства, подключение которогонужно обрабатывать.Затем создаются потоки чтения и записи (pipes) и выделяется память для буфераданных. Теперь устройство готово к работе, поэтому создаётся поток (thread) дляобработки команд пользовательского приложения. То есть, кроме основногопотока программы создаётся ещё по одному потоку на каждое подключённоеустройство.3Послевсехэтихдействийданные об устройстве заносятсявобщуюпамять,чтобыпользовательскиеприложениясмогли работать с ним.Общаяпамятьпредставляетсобой массив из URC_MAXDEVэлементов.Каждыйэлементмассива – структура.

Поляструктуры составляют:- mutex для распределениядоступакпамятимеждудрайвером и приложениями;- состояние этого слотаподключения;- данные, отправляемые илипринимаемые из устройства;- команда; которую долженвыполнить сервер.Рис.1.1 Внешний вид программы URCSrvПосле отключения устройства происходит удаление всех созданных объектов(mutex, pipes, буфер и т.д.) и отсоединение от устройства.При закрытии программы происходит принудительное отключение от всехподключённых устройств, а также удаление объекта общего доступа к памяти.Все действия драйвера отображаются в окне программы (см. рис.1.1).43. Библиотека для работы с платой на компьютереБиблиотекапредставляетсобойклассCURC220,которыйупрощаетвзаимодействие между пользовательской программой и драйвером, то есть собъектом общего доступа к памяти, который создаёт драйвер.Библиотека автоматически производит адресацию к общей памяти, после чегочерез оболочку в виде класса CURC220 предоставляет программе доступ к этойпамяти.3.1 Алгоритм работы с библиотекойВся работа с библиотекой происходит через объект класса CURC220.

Прототипкласса находится в заголовочном файле “urc220.h”:#include “urc220.h”CURC220 urc;Сначала необходимо определить, устройства с какими номерами подключены ккомпьютеру. Для этого используется функция GetDevStates() класса, котораявозвращает состояние всех слотов для подключения устройств.

Перебрав в циклезначения всех ячеек, можно определить номера подключённых плат, так какномера ячеек, значение которых равно URCSTATE_OPENED, являются номерамиподключённых плат.Для начала работы с платой нужно открыть устройство функцией Open(), а поокончании работы вызвать функцию Close(). Если устройство успешно открыто,то записывать и считывать данные можно при помощи функций Read() и Write().Сначала вызывается функция для чтения (Read), далее производятсянеобходимые действия (функции GetInput, SetOutput, GetOutput, GetADC и т.д.), апо окончании всех действий вызывается функция для записи (Write).

Затем циклповторяется.3.2 Описание функций класса CURC220Функция GetDevStatesПрототип:int CURC220::GetDevStates(uint32 states[URC_MAXDEV]);Описание:Функция записывает в массив states состояние всех слотов для подключенияустройств. Элементы массива могут принимать следующие значения:- URCSTATE_CLOSED – устройство с номером, соответствующем номеруэлемента массива, не подключено- URCSTATE_OPENED – устройство подключеноПринимаемые параметры:states – массив чисел из URC_MAXDEV элементовВозвращаемое значение:Функция возвращает 0 в случае ошибки5Функция CloseПрототип:void CURC220::Close();Описание:Функция закрывает устройствоПринимаемые параметры: нетВозвращаемое значение: нетФункция OpenПрототип:int CURC220::Open(uint32 index);Описание:Функция открывает устройствоПринимаемые параметры:index - номер устройства (начиная с 0)Возвращаемое значение:Функция возвращает 0 в случае ошибкиФункция ReadПрототип:int CURC220::Read();Описание:Считывает текущее состояние устройстваПринимаемые параметры: нетВозвращаемое значение:Функция возвращает 0 в случае ошибкиФункция WriteПрототип:int CURC220::Write();Описание:Записывает внесенные изменения параметров в устройствоПринимаемые параметры: нетВозвращаемое значение:Функция возвращает 0 в случае ошибкиФункция GetInputПрототип:int CURC220::GetInput(uint32 index, uint8 *value);Описание:Считывает значение на порту вводаПринимаемые параметры:index - номер порта: 0..3value - указатель на число для записи значения: 0 или !0Возвращаемое значение:Функция возвращает 0 в случае ошибкиФункция SetOutputПрототип:int CURC220::SetOutput(uint32 index, uint8 value);6Описание:Записывает значение в порт выводаПринимаемые параметры:index - номер порта: 0..7value - число для записи в порт: 0 или !0Возвращаемое значение:Функция возвращает 0 в случае ошибкиФункция GetOutputПрототип:int CURC220::GetOutput(uint32 index, uint8 *value);Описание:Возвращает значение, которое сейчас установлено на порту выводаПринимаемые параметры:index - номер порта: 0..7value - указатель на число для записи значения: 0 или !0Возвращаемое значение:Функция возвращает 0 в случае ошибкиФункция GetADCПрототип:int CURC220::GetADC(uint32 channel, uint16 *value);Описание:Считывает значение АЦППринимаемые параметры:channel - номер канала: 0..3value - указатель на число для записи значения: 0..1023Возвращаемое значение:Функция возвращает 0 в случае ошибкиФункция SetPWMПрототип:int CURC220::SetPWM(uint32 channel, int16 value);Описание:Устанавливает значение ШИМПринимаемые параметры:channel - номер канала: 0..3value - новое значение ШИМ: -1000...+1000Возвращаемое значение:Функция возвращает 0 в случае ошибкиФункция GetPWMПрототип:int CURC220::GetPWM(uint32 channel, int16 *value);Описание:Возвращает установленое значение ШИМПринимаемые параметры:channel - номер канала: 0..3value - указатель на число для записи значения: -1000...+1000Возвращаемое значение:7Функция возвращает 0 в случае ошибкиФункция GetEncПрототип:int CURC220::GetEnc(uint32 index, int32 *value);Описание:Считывает значение энкодеровПринимаемые параметры:index - номер энкодера: 0..1value - указатель на число для записи значенияВозвращаемое значение:Функция возвращает 0 в случае ошибки84.

Применение библиотеки4.1 Создание проектаСначала загрузите QNX Momentics IDE (“Launch” – “QNX Momentics DevelopmentSuite 6.3.2” – “Integrated Development Environment”).Если вы загружаете эту среду первый раз, то вам будет предложено выбратьпапку для хранения проектов.Если оставить ту, что стоит поумолчанию,тоworkspace(пространстводляхраненияобъектов) будет создано в папке“/user_name/ide4-workspace/”(user_name – имя пользователя).Все вновь создаваемые проектыбудутдобавлятьсявэтотworkspace.После загрузки среды выберетеменю “File” – “New” – “Project”.

Впоявившемся окне выберете типпроекта: “C++” – “QNX C++Project” и нажмите на “Next”.Затем введите имя проекта(“ProjectName”),например"test_simple”,атакжевидконечного файла (“Type”) “Application” (приложение).Далее нажмите на “Next”. ВследующемокневыберетеРис.4.1 Настройки нового проектавкладку “Build Variants”, гдеустановите пункты “X86 (Little Endian)” (см. рис.4.1).Новый проект создастся после нажатия на “Finish” в папке “/User_name/de4workspace/test_simple”.В проекте появится файл исходного кода “test_simple.cc” с минимальным кодомдля компиляции.4.2 Пример использованияРассмотрим простой пример, который продемонстрирует запись данных вустройство. Для начала нужно переписать в папку с проектом файлы библиотеки:“stdtypes.h”, “urc220.h” и “urc220.cpp”.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5119
Авторов
на СтудИзбе
445
Средний доход
с одного платного файла
Обучение Подробнее