Сборка USB HID под BeagleBone

Автор: admin от 9-08-2015, 12:50, посмотрело: 384

Сборка USB HID под BeagleBone
В одной из публикаций мы писали о настройке китайского USB-WiFi для Beagledone .Сегодня мы хотим привести способ сборки собственного класса управления устройством через HID-протокол. За основу была взята библиотека hidapi, а затем произведен способ кросс-компиляции под beaglebone и сборка тестовой программы для работы с USB-устройством.

Один из самых простых и надежных способов сделать управление по USB в Linux — это использование библиотеки libusb-1.0. Hidapi же является «надстройкой» над libusb, и служит для легкого подключения hid-устройств к программируемому девайсу. Если вы собираете на «чистой» системе hidapi, то придется отдельно собирать libusb и только потом собирать hidapi. В этой статье рассмотрим сборку именно hidapi. Заглянув вперед, скажем, что android ndk отказалась собирать hidapi без вмешательства.

Для начала работы мы скачали библиотеку и распаковали ее в рабочую директорию, для сборки и тестирования использовали дистрибутив Linux Mint. В распакованной папке (в нашем случае это hidapi-0.7.0) следует ознакомиться с инструкциями readme.txt. Поскольку в BeagleBone используется Linux, то мы проходим в папку hidapi-0.7.0/linux и встречаем там очередной файл readme.txt с инструкциями по сборке под Linux. Коротко, библиотека предлагает нам два варианта сборки: с использованием hid-libusb.c или с hid.c. В первом случае используется библиотека libusb, которую необходимо установить в систему. Во втором случае используется hidraw, требующая libudev-devel.

Сразу отметим, что мы попробовали собрать оба варианта; удачно собралась только hid-libusb.c, а hid.c выдавал различного рода ошибки. Далее разработчики предлагают нам поставить пакет libusb-1.0-0-dev или libudev-devel. Установив пакеты, можно собирать проект в папке linux. Выполняем make, собирается проект hidapi-0.7.0/hidtest/, и собирается как раз в нашу папку hidapi-0.7.0/linux. В командной строке можно видеть команды компилятора. Далее, суть сборки под BeagleBone заключается в подставлении кросс-компилятора вместо штатного gcc и g++ соответственно. Но есть одна тонкость, если взглянуть во-внутрь мейкфайла, то там можно увидеть

Эти строчки добавляют пути к библиотекам (includes), и задают ключи сборки библиотек(libs) динамически. Чтобы понять, что же подгружает скрипт в сборку, можно выполнить в консоли: `pkg-config libusb-1.0 libudev --libs` и `pkg-config libusb-1.0 --cflags`. При сборке софта под BeagleBone мы не меняли пути к include (там только файлы заголовков .h, причем кросс-платформенные), а либы прописывали напрямую без pkg-config. Возможно, это не самое удачное решение, но все же рабочее.

В общем виде, это выглядит
Исправляем мейклфайл прямым включением библиотек, прописываем кросс-компилятор и собираем программу под BeagleBone. На этом все, программа для работы с USB HID устройством готова.

Источник: Хабрахабр

Категория: Программирование, Веб-разработка, Linux, Железо

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *