嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第五天-ARM Linux编程之自动创建节点 (物联技术666)

链接:https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd=1688
提取码:1688

        驱动程序编写好后,还需要创建设备节点,有两种方式,一是通过mknod命令去手动创建,例如:mknod /dev/hello c 250 0,/dev/hello为设备节点名字,c代表字符设备,250和0代表它的主次设备号。二是使用udev或mdev来实现自动创建设备节点。使用mknod手动创建设备节点不够灵活,如果是动态分配的设备号怎么办,难道每次加载驱动后去查看/proc/devices文件中查看它的主设备号,要是产品发布时怎么办,显然不太现实

利用udev(mdev)来实现设备节点的自动创建,udev(mdev)存在于应用层。

包含头文件

#include<linux/device.h>

新建一个class结构体指针

static struct class *my_class;

在初始化函数中调用class_create()函数创建一个类,参数分别为模块所有者和class结构name字段,在/sys/class/下体现。

my_class= class_create(THIS_MODULE, "my_class");

if(IS_ERR(my_class))

{

       printk("Err: failed increating class.\n");

       return -1;

 }

调用device_create()函数创建设备节点,参数分别为所从属类,这个设备的父设备,没有就制定NULL,设备号,设备的私有数据,最后一组参数指定设备节点名,比如这里的名为hello。函数原型:

extern struct device *device_create(struct class *cls, structdevice *parent,

                            dev_t devt, void *drvdata,const char *fmt, ...)

具体实现在drivers/base/core.c中

程序中使用

device_create(my_class,NULL,dev_n,NULL,"%s","hello");

或者

device_create(my_class,NULL,dev_n,NULL,"hello");

设备卸载删除类和设备节点

device_destroy(my_class,dev_n);

class_destroy(my_class);

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-18 11:14:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-18 11:14:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-18 11:14:05       87 阅读
  4. Python语言-面向对象

    2024-02-18 11:14:05       96 阅读

热门阅读

  1. 14 图论

    14 图论

    2024-02-18 11:14:05      52 阅读
  2. android11以上SD卡存储权限适配申请问题

    2024-02-18 11:14:05       51 阅读
  3. gin(结)

    2024-02-18 11:14:05       46 阅读
  4. WebSocket 详细教程

    2024-02-18 11:14:05       43 阅读
  5. [前端开发] CSS基础知识 [下]

    2024-02-18 11:14:05       59 阅读
  6. C++进阶语法:异常

    2024-02-18 11:14:05       54 阅读
  7. ts总结大全

    2024-02-18 11:14:05       47 阅读
  8. 2.17学习总结

    2024-02-18 11:14:05       59 阅读
  9. Nginx 命令(Ubuntu)

    2024-02-18 11:14:05       54 阅读
  10. Android录制屏幕功能适配androidQ前台通知栏显示

    2024-02-18 11:14:05       42 阅读
  11. leetcode-top100回溯算法

    2024-02-18 11:14:05       59 阅读
  12. day32 贪心

    2024-02-18 11:14:05       57 阅读
  13. stable diffusion webui学习总结(1):准备工作

    2024-02-18 11:14:05       64 阅读