Имеется PCI-плата с адресом 0х200. Требуется записывать туда данные (16 бит). Как это можно сделать в Линукс? Скачал драйвер с www.fpga4fun.com, однако там ничего не сказано, как этот драйвер использовать (писать через него данные в порт 0х200). Драйвер загружается insmod'ом. Исходник привожу ниже. Помогите, пожалуйста, кто знает.
#include <linux/init.h>
#include <linux/pci.h>
MODULE_LICENSE("GPL");#define VENDOR_ID 0x1000
#define DEVICE_ID 0x0000
static struct pci_device_id pci_device_id_DevicePCI[] =
{
{VENDOR_ID, DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{} // end of list
};
int device_probe(struct pci_dev *dev, const struct pci_device_id *id)
{
int ret;
ret = pci_enable_device(dev);
if (ret < 0)
{
printk(KERN_WARNING "DevicePCI: unable to initialize PCI device\n");
return ret;
}
ret = pci_request_regions(dev, "MyPCIDevice");
if (ret < 0)
{
printk(KERN_WARNING "DevicePCI: unable to reserve PCI resources\n");
pci_disable_device(dev);
return ret;
}
printk(KERN_INFO "DevicePCI: device_probe successful\n");
return ret;
}
void device_remove(struct pci_dev *dev)
{
pci_release_regions(dev);
pci_disable_device(dev);
printk(KERN_INFO "DevicePCI: device removed\n");
}
struct pci_driver pci_driver_DevicePCI =
{
name: "MyPCIDevice",
id_table: pci_device_id_DevicePCI,
probe: device_probe,
remove: device_remove
};
static int init_module_DevicePCI(void)
{
printk(KERN_INFO "DevicePCI: init\n");
return pci_module_init(&pci_driver_DevicePCI);
}
void cleanup_module_DevicePCI(void)
{
printk(KERN_INFO "DevicePCI: cleanup\n");
pci_unregister_driver(&pci_driver_DevicePCI);
}
module_init(init_module_DevicePCI);
module_exit(cleanup_module_DevicePCI);