当前位置: 首页 > news >正文

嵌入式培训机构四个月实训课程笔记(完整版)-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);

http://www.lryc.cn/news/301518.html

相关文章:

  • 基于51/STM32单片机的智能药盒 物联网定时吃药 药品分类
  • 【学网攻】 第(27)节 -- HSRP(热备份路由器协议)
  • 【实战】二、Jest难点进阶(三) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(七)
  • Python编程中的异常处理
  • mysql3.7之触发器
  • 12.QT文件对话框 文件的弹窗选择-QFileDialog
  • ArcGIS学习(八)基于GIS平台的控规编制办法
  • 软件测试-自动化测试-面试题研究,知识要点,高频、重点知识点,自动化测试知识要点、知识梳理-PYTHON+自动化,评估试题
  • 一.重新回炉Spring Framework: 理解Spring IoC
  • 目标检测算法之YOLOv5的应用实例(零售业库存管理、无人机航拍分析、工业自动化领域应用的详解)
  • [蓝桥 2017]九宫幻方
  • Qt - 编译报错:“invalid use of incomplete type ‘class Ui::xxx‘ui(new Ui::xxx)”的解决方法
  • 基于Doris构建亿级数据实时数据分析系统
  • javascript中的prototype;javascript中的原型链
  • CI/CD部署
  • 定点数,定点数二维向量,定点数三维向量,定点数数学类
  • 安装ts-node有感
  • 飞天使-k8s知识点18-kubernetes实操3-pod的生命周期
  • 顺子日期 蓝桥杯
  • 基于 Python 的景区票务人脸识别系统,附源码
  • OpenAI全新发布的Sora,到底意味着什么?
  • 预防.locked.locked1勒索病毒攻击:保护数据安全
  • 【力扣hot100】刷题笔记Day5
  • 解锁Spring Boot中的设计模式—04.桥接模式:探索【桥接模式】的奥秘与应用实践!
  • [talib][python]ta-lib所有whl文件下载地址汇总
  • 【开源】JAVA+Vue.js实现农村物流配送系统
  • 锁相放大器,数字锁相放大器.C和python版的源代码
  • (02)Hive SQL编译成MapReduce任务的过程
  • 【C++初阶】值得一刷的字符串string相关oj题
  • 《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)