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

这篇具有很好参考价值的文章主要介绍了嵌入式培训机构四个月实训课程笔记(完整版)-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);文章来源地址https://www.toymoban.com/news/detail-834110.html

到了这里,关于嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第五天-ARM Linux编程之自动创建节点 (物联技术666)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包