欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 嵌入式 Linux 设备驱动:自动创建设备节点详解

嵌入式 Linux 设备驱动:自动创建设备节点详解

2025/9/23 18:45:46 来源:https://blog.csdn.net/weixin_63577471/article/details/145689996  浏览:    关键词:嵌入式 Linux 设备驱动:自动创建设备节点详解

文章目录

前言

一、设备节点简介

二、自动创建设备节点的原理

三、实现自动创建设备节点

四、测试


前言

在嵌入式 Linux 设备驱动开发中,设备节点是用户空间与内核空间交互的桥梁。传统的手动创建设备节点方式(mknod)不仅繁琐,而且容易出错,在每次加载设备驱动时都要手动对设备的节点进行创建。本文将详细介绍如何在 Linux 驱动中实现设备节点的自动创建。


一、设备节点简介

设备节点是 Linux 系统中用于访问硬件设备的特殊文件,位于 /dev 设备目录下。设备节点分为:

  • 字符设备节点:用于字符设备(如 LED、按键等)。
  • 块设备节点:用于块设备(如硬盘、U 盘等)。

二、自动创建设备节点的原理

Linux 内核提供了 udev 机制(用于动态管理设备文件的一个用户空间工具),可以根据设备信息自动创建设备节点。驱动开发者只需在内核中注册设备,并提供必要的信息(如设备号、设备名称等),udev 会自动在 /dev 目录下创建设备节点,无需再手动进行设备节点的创建。

三、实现自动创建设备节点

主要的自动创建设备节点的代码定义如下所示:

newchrled.class = class_create(THIS_MODULE, NEWCHRLED_NAME);if (IS_ERR(newchrled.class)) {return PTR_ERR(newchrled.class);}newchrled.device = device_create(newchrled.class, NULL, newchrled.devid, NULL, NEWCHRLED_NAME);if (IS_ERR(newchrled.device)) {return PTR_ERR(newchrled.device);}

 首先,创建一个新类并将这个类的指针赋值给newchrled.class成员变量,在创建了类后,接下来使用device_create()函数在之前创建的类下创建一个实际的设备节点。在device_create函数中第一个参数newchrled.class是指向前面创建的类的指针。第二个参数表示父设备。第三个参数newchrled.devid包含了设备号(主次设备号),这是由系统分配的。第四个参数表示是否传递私有数据到设备。最后一个参数为设备的名字,它将作为/dev下的设备文件名。

四、测试

嵌入式Linux设备上电加载uboot,linux内核,根文件系统启动后使用lsmod查看当前加载到内核中的模块,发现在没有加载设备驱动时,没有对应的设备节点

 

 随后,使用modprobe加载设备驱动,发现在加载设备驱动时,系统分配了主设备号和从设备号,无需在使用mknod命令来手动创建设备节点,提高了开发的效率。

最后在设备驱动使用结束后,可使用 rmmod命令来卸载设备驱动。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词