嵌入式内核及驱动开发之学习笔记(五) 编写字符驱动步骤总结

举报
王建峰 发表于 2021/11/19 01:09:21 2021/11/19
【摘要】 1,实现模块加载和卸载入口函数         module_init(chr_dev_init);         module_exit(chr_dev_exit); 2,在模块加载入口函数中  &nb...

1,实现模块加载和卸载入口函数
        module_init(chr_dev_init);
        module_exit(chr_dev_exit);

2,在模块加载入口函数中
    a, 申请主设备号  (内核中用于区分和管理不同字符设备)
             register_chrdev(dev_major, "chr_dev_test", &my_fops);

    b,创建设备节点文件 (为用户提供一个可操作到文件接口--open())
            struct  class *class_create(THIS_MODULE, "chr_cls");
            struct  device *device_create(devcls, NULL, MKDEV(dev_major, 0), NULL, "chr2");

    c, 硬件的初始化
           1,地址的映射
                gpx2conf = ioremap(GPX2_CON, GPX2_SIZE);
           2,中断到申请
           3,实现硬件的寄存器到初始化


    e,实现file_operations
            const struct file_operations my_fops = {
                    .open = chr_drv_open,
                    .read = chr_drv_read,
                    .write = chr_drv_write,
                    .release = chr_drv_close,
            };

文章来源: blog.csdn.net,作者:hinzer,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/feit2417/article/details/84073447

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。