URC220_QNX (1037667)

Файл №1037667 URC220_QNX (Раздаточные материалы)URC220_QNX (1037667)2017-12-25СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Московский государственный технический университет им. Н.Э. БауманаФакультет «Робототехника и комплексная автоматизация»Кафедра «Робототехнические системы»Куренев П.Н.Описание драйвера и алгоритма работы ПО длямногофункционального устройства URC220в ОСРВ QNXМосква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”.

Характеристики

Тип файла
PDF-файл
Размер
925,46 Kb
Тип материала
Высшее учебное заведение

Тип файла PDF

PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов учебной работы

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