Dzięki za odpowiedź.
Znalazłem prosty przykład http://www.linuxjournal.com/article/7353 i do niego się odwołuję.
Coś takiego wyskrobałem, trochę zmniejszona wersja powyższego modułu, usiłuję tylko połączyć się z urządzeniem:
#lsusb
Bus 005 Device 034: ID 03eb:6124 Atmel Corp. at91sam SAMBA bootloader
#include <linux/module.h>
#include <linux/usb.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <net/iw_handler.h>
#include <linux/string.h>
#include <linux/if_arp.h>
#include <linux/firmware.h>
#define DRIVER_AUTHOR "moja osobistosc"
#define DRIVER_DESC "USB My Driver"
#define VENDOR_ID 0x03eb
#define PRODUCT_ID 0x6124
//static struct usb_device_id usbdeviceid = {USB_DEVICE(0x03eb, 0x6124)};
static struct usb_device_id id_table [] = {
{ USB_DEVICE(VENDOR_ID, PRODUCT_ID) },
{ },
};
MODULE_DEVICE_TABLE (usb, id_table);
static int led_probe(struct usb_interface *interface, const struct usb_device_id *id)
{
struct usb_device *udev = interface_to_usbdev(interface);
struct usb_led *dev = NULL;
int retval = -ENOMEM;
/* dev = kmalloc(sizeof(struct usb_led), GFP_KERNEL);
if (dev == NULL) {
dev_err(&interface->dev, "Out of memory\n");
goto error;
}
memset (dev, 0x00, sizeof (*dev));
dev->udev = usb_get_dev(udev);
usb_set_intfdata (interface, dev);
device_create_file(&interface->dev, &dev_attr_blue);
device_create_file(&interface->dev, &dev_attr_red);
device_create_file(&interface->dev, &dev_attr_green);
dev_info(&interface->dev, "USB LED device now attached\n");
return 0;
error:
kfree(dev);*/
return retval;
}
static void led_disconnect(struct usb_interface *interface)
{
struct usb_led *dev;
/*
dev = usb_get_intfdata (interface);
usb_set_intfdata (interface, NULL);
device_remove_file(&interface->dev, &dev_attr_blue);
device_remove_file(&interface->dev, &dev_attr_red);
device_remove_file(&interface->dev, &dev_attr_green);
usb_put_dev(dev->udev);
kfree(dev);
dev_info(&interface->dev, "USB LED now disconnected\n");*/
}
static struct usb_driver led_driver = {
//.owner = THIS_MODULE,
.name = "usbled",
.probe = led_probe,
.disconnect = led_disconnect,
.id_table = id_table,
};
int init_module()
{
unsigned int retval;
retval = usb_register(&led_driver);
//err("Helloo!!!");
if (retval)
err("usb_register failed. "
"Error number %d", retval);
return 0;
}
void cleanup_module()
{
}
obj-m := main.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
make -C $(KDIR) SUBDIRS=$(PWD) modules
Przy tej linijce mam błąd
.owner = THIS_MODULE,
error: unknown field 'owner' specified in initializer
Bez niej wszystko się kompiluje, ale przy próbie załadowania:
main: Unknown symbol usb_register_driver
Coś zgubiłem w makefile?
kernel 2.6.32.8 slackware 12.2