itop4412之驱动注册

接着设备注册之后,就是进行驱动注册,本节主要介绍驱动注册操作流程

1.驱动注册和卸载函数介绍
  • 驱动注册函数:platform_driver_register函数
  • 驱动卸载函数:platform_driver_unregister 函数
    注册和卸载两个函数位于:include/linux/platform_device.h
    extern int platform_driver_register(struct platform_driver *);
    extern void platform_driver_unregister(struct platform_driver *);

函数中platform_driver 结构体为:

struct platform_driver {
        int (*probe)(struct platform_device *);
        int (*remove)(struct platform_device *);
        void (*shutdown)(struct platform_device *);
        int (*suspend)(struct platform_device *, pm_message_t state);
        int (*resume)(struct platform_device *);
        struct device_driver driver;
        const struct platform_device_id *id_table;
};
  • 结构体中字段的含义
    • probe方法:主要是进行设备的探索和初始化
    • remove:移除驱动,该函数一般用于去掉设备节点或释放软硬件资源
    • shutdown、suspend、resume:这三个函数分别是关闭、休眠以及恢复驱动的时候该驱动要做什么
    • 结构体struct device_driver :主要定义两个参数name(驱动名称)、owner一般是THIS_MODULE
2.驱动注册操作
  • 在模块入口函数中调用驱动注册函数:platform_driver_register(&led_driver)
  • 定义一个struct platform_driver类型的结构体“led_driver”
  • 为结构体”led_driver”赋值:
struct platform_driver led_driver ={

        .probe = led_probe,
        .remove = led_remove,
        .shutdown = led_shutdown,
        .suspend = led_suspend,
        .resume = led_resume,
        .driver = {
                .name = DRIVER_NAME,
                .owner = THIS_MODULE,
        }

};
  • 定义led_probe、led_remove、 led_shutdown、led_suspend、 led_resume函数:
/*设备初始化*/
static int led_probe(struct platform_device * pdv){

        printk(KERN_EMERG "init device\t%s,%d\n",__FUNCTION__,__LINE__);
        return 0;
}

/*移除驱动*/
static int led_remove(struct platform_device * pdv){

        return 0;
}

/*关闭驱动*/
static void led_shutdown(struct platform_device * pdv){

}
/*休眠驱动*/
static int led_suspend(struct platform_device *pdv,pm_message_t state){

        return 0;
}

/*恢复驱动*/
static int led_resume(struct platform_device * pdv){

        return 0;
}
  • 在模块出口函数调用驱动卸载函数:platform_driver_unregister(&led_driver)
3. 加载测试

开发板通过nfs服务器挂在,在开发板上进行驱动模块注册卸载测试
这里写图片描述

参考

itop4412驱动实验手册

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值