Linux字符设备驱动调试,求大神指教,答得好另外追加分数!谢谢!

以下程序有大神能解释下么。完全不理解要调试什么东西?谢谢!
static int driver_init( void )

{

int rc;
driver_dev = MKDEV( DEV_MAJOR, DEV_MINOR );

rc = register_chrdev_region( driver_dev, 1, "driver" );
if(rc < 0)
{
printk ("Panic! Could not register driver\n");
return rc;
}

driver_cdev = cdev_alloc();

driver_cdev->owner = THIS_MODULE;

driver_cdev->ops = &driver_fops;

cdev_init( driver_cdev, &driver_fops );

cdev_add( driver_cdev, driver_dev, 1 );
printk(KERN_ALERT "initial Device Successfully!\n");

return( 0 );

}

static int driver_init( void )    
//设备初始化函数,static是为了本函数只是在本文件中访问,不在其他文件中调用
{
int rc;
driver_dev = MKDEV( DEV_MAJOR, DEV_MINOR );
//用主设备号DEV_MAJOR和从设备号DEV_MINOR生成设备号

rc = register_chrdev_region( driver_dev, 1, "driver" );
//为一个字符驱动获取一个设备编号
if(rc < 0)
{
printk ("Panic! Could not register driver\n");
//如果失败,则打印调试信息并返回<0宣告失败
return rc;
}

driver_cdev = cdev_alloc();
//为设备驱动申请内存

driver_cdev->owner = THIS_MODULE;
//填写设备驱动的相关信息

driver_cdev->ops = &driver_fops;
//填写操纵这个字符设备文件的方法 

cdev_init( driver_cdev, &driver_fops );
//一般调用driver_fops中的一些方法来初始化设备文件

cdev_add( driver_cdev, driver_dev, 1 );
//将该设备放到系统设备链中
printk(KERN_ALERT "initial Device Successfully!\n");
//输出调试信息:成功

return( 0 );  //返回0宣告函数正常退出
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-21
这是一个简单的示例,让你了解字符设备驱动的注册过程,上面的作用就是注册了一个主设备号为DEV_MAJOR次设备号为DEV_MINOR的字符设备驱动,对它的操作函数是driver_fops中。
第2个回答  2014-05-20
OK,菜鸟推荐看linux设备驱动ddr3一书,比什么效果都好!
相似回答