Ветвь по умолчанию дерева разработки в git называется master
, и обычно эта ветвь используется в качестве основной.
клонируйте ее с помощью git и cd
в каталог:
git clone https://github.com/libimobiledevice/libimobiledevice.git
cd libimobiledevice
Обычно по умолчанию проверяется ветка master, проверьте ее с помощью:
git status -b
Или проверьте ветку master
:
git checkout master
Для компиляции выполните:
./autogen.sh
make
sudo make install
Предполагая, что для вашего протокола достаточно управлять пинами GPIO из пользовательского пространства через /sys/class/gpio/
, самый простой способ - написать драйвер tap
для пользовательского пространства. Из документации ядра linux/Documentation/networking/tuntap.txt
:
TUN/TAP обеспечивает прием и передачу пакетов для программ пользовательского пространства. Его можно рассматривать как простое устройство Point-to-Point или Ethernet, которое, вместо приема пакетов с физического носителя, принимает их от программы пространства пользователя и вместо отправки пакетов через физический носитель записывает их в программу пространства пользователя.
Чтобы использовать драйвер, программа должна открыть
/dev/net/tun
и выдать команду соответствующий ioctl() для регистрации сетевого устройства в ядре. Сетевое устройство будет отображаться какtunXX
илиtapXX,
в зависимости от выбранных опций. Когда программа закрывает дескриптор файла, сетевое устройство и все соответствующие маршруты исчезнут.В зависимости от типа выбранного устройства программа пользовательского пространства должна читать/писать IP-пакеты (с tun) или кадры ethernet (с tap). Какой из них используется зависит от флагов, заданных в ioctl().
Пакет от http://vtun.sourceforge.net/tun содержит два простых примера использования устройств tun и tap. Обе программы работают как мост между двумя сетевыми интерфейсами.
br_select.c
- мост, основанный на системном вызове select.br_sigio.c
- мост на основе async io и сигнала SIGIO.Однако лучшим примером является VTun http://vtun.sourceforge.net :))
Вы также можете поискать в Google множество руководств (хотя большинство из них, вероятно, будут посвящены интерфейсу tun
, т.е. IP-пакетам вместо Ethernet-кадров).
Даже если конечный продукт должен быть модулем ядра, я бы все равно начал с tap
драйвера, потому что их гораздо легче отлаживать. Вы все равно сможете превратить его в модуль ядра после того, как большая его часть уже будет работать.