Добро всем времени суток. Возникла такая проблемка. Было значит у меня устройство собранное на usb, в винде работал с ним радовался, но так как обстоятельства вынудили перейти на Ubuntu, чему я ОЧЕНЬ РАД, потребовалось написать собственный драйвер под него, по скольку оно вообще никак не реагировало в системе и никаких признаков жизни не подавало, повторюсь в винде работает. Значит пошарил я по инету, загуглил вопрос, нашел следующее:
http://www.opennet.ru/base/dev/write_linux_driver.txt.html. Прочел, благо знания языка хорошие, приступил писать, и в итоге получил примерно следующее
#include <linux/kernel.h>
#include <linux/usb.h>
#define DEV_NAME "HID-I/O"
#define PRODUCT_ID_0 0x05df
#define VENDOR_ID_0 0x16c0
#define PRODUCT_ID_1 0x21fe
#define VENDOR_ID_1 0x03eb
static struct usb_device_id hid_io_table [] = {
{ USB_DEVICE(VENDOR_ID_0, PRODUCT_ID_0) },
{ USB_DEVICE(VENDOR_ID_1, PRODUCT_ID_1) },
{ } // терминирующий элемент списка
};
struct usb_device *_usb_dev_; /* the usb device */
struct usb_interface *_interface_; /* interface of this device */
static int hid_io_probe(struct usb_interface *interface, const struct usb_device_id *id)
{
printf( "hid.io.probe\n");
// assign global parameters
_usb_dev_ = usb_get_dev(interface_to_usbdev(interface));
_interface_ = interface;
/* save our data pointer in this interface device */
usb_set_intfdata(_interface_, _usb_dev_);
return 0;
}
static void hid_io_disconnect(struct usb_interface *interface)
{
printf("hid.io.disconnect\n");
usb_set_intfdata(_interface_, NULL);
usb_put_dev(_usb_dev_);
}
static struct usb_driver hid_io_driver = {
.name = DEV_NAME,
.probe = hid_io_probe,
.disconnect = hid_io_disconnect,
.id_table = hid_io_table,
};
static int __init hid_io_init(void)
{
return usb_register(&hid_io_driver); // регистрируем драйвер
}
static void __exit hid_io_exit(void)
{
usb_deregister(&hid_io_driver); // выгружаем драйвер
}
module_init (hid_io_init);
module_exit (hid_io_exit);
MODULE_DESCRIPTION("HID-I/O");
MODULE_LICENSE("GPL");
После чего надо это дело было скомпилировать. Погуглил. Получилась такая команда
gcc -I /usr/src/linux-headers-2.6.28-11/include/ IO-drv.c Но после ее введения появляется куча ошибок в основном связанные с синтаксисом, странно перепроверил, ошибок нет, все делал по статье, и по примеру. Что происходит не знаю. Помогите.