fishonesea

android 驱动,移植,qq群:91386163 推荐《Android深度探索(卷1):HAL与驱动开发》
  博客园  :: 首页  :: 新随笔  :: 管理

linux2.6字符设备的标准注册方法

Posted on 2012-02-07 10:54  fishonesea  阅读(259)  评论(0编辑  收藏  举报
关于字符设备的注册,标准的2.6中可以这样做:

static struct cdev dev;
static int wmsc_dev_init(void)
{
int ret;
dev_id = MKDEV(DEV_MAJOR,0);
ret = register_chrdev_region(dev_id,1,DEV_NAME);
if(ret < 0){
printk(KERN_ERR"Can't register device,maybe the device id has been used.\n");
unregister_chrdev_region(dev_id,1);
return ret;
}
cdev_init(&dev,&fops);
ret = cdev_add(&dev,dev_id,1);
if(ret < 0){
printk(KERN_ERR"Can't add device.\n");
cdev_del(&dev);
return ret;
}
return 0;
}

#define DEV_MAJOR 178
#define DEV_NAME "gpio"

static struct file_operations fops = {
.open = wmrc_open,
.read = wmrc_read,
.write = wmrc_write,
.ioctl = wmrc_ioctl,
.owner = THIS_MODULE,
};

后面就是些设备加载,和节点创建等,如下:

insmod xx.ko

mknod /dev/gpio c 177 0
chmod 766 /dev/gpio

这些流程是挺正确的,也有固定的流程,不用深归内部的原理,制作驱动还是要深入的算法里面的。