按照国嵌的视频教程上来说的,最后就是—自动创建设备文件!

其实我感觉以前完全可以直接是手动创建了设备文件,然后就可以直接讲述自动创建设备文件,为啥非要拖到最后来讲述,我也就不清楚了!!

不管了,写完收工,睡觉!

(四)、嵌入式Linux内核驱动进阶

(7)、字符设备驱动(自动创建设备节点)—⑥

1、概念

在前面的实验中饿设备驱动程序由于无法自动创建设备节点,这里只好利用 mknod 命令手动创建设备节点。

实际上 Linux 内核为我们提供了一组函数,可以用来再模块加载的时候自动在 /dev

目录下创建相应的设备节点,并在卸载模块式删除该节点。

当然前提条件是在应用层移植了 udev(Linux Kernel 2.6

系列的设备管理器,它是工作在用户空间的),在嵌入式系统中则使用 busybox 的 mdev 替代。

内核中定义了 struct class 结构体,顾名思义,一个 struct class

结构体类型变量对应一个类。内核同时提供了 class_creat(...) 函数,可以用它来创建一个类,这个类存放于 sysfs

下面。一旦创建好了这个类,再调用 device_creat(...) 函数来在 /dev 目录下创建相应的设备节点。

这样在加载模块的时候,用户空间中的 udev/mdev 就会自动相应 device_creat(...) 函数,去

/sys/class 下寻找对应的类从而创建设备节点。

注意:

在较 kernel 2.6 早的内核版本中,device_creat(...) 函数名称不同,它是

class_device_creat(...),所以在新的内核中编译以前的模块程序有时会报错,这是因为函数名称不同,而且里面的参数设置也有一些变化。

2.编程接口

①、class_create

函数功能:

创建一个 class 结构。

头文件:

#include

函数原型:

struct class *class_creat(struct module *owner,const char

*name)

参数说明:

owner:指定类的所有者是哪个模块。

name:指定类名。

返回值:

成功返回 class 结构,失败返回错误号。

②、class_destory

函数功能:

销毁一个 class 结构。

头文件:

#include

函数原型:

void class_destory(struct class *cls)

参数说明:

class:待销毁的类。

返回值:

③、device_create

函数功能:

创建一个设备,并将它注册到 sysfs 中。

头文件:

#include

函数原型:

struct device *device_create(struct class *class,struct device

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

参数说明:

class:指定所要创建的设备所从属的类。

parent:这个设备的父设备,如果没有就指定为 NULL。

devt:设备号。

drvdata:被添加到该设备用于回调的数据,没有则置位 NULL。

fmt:设备名称。

...:可以是从设备号,作为格式字符串 fmt 的参数。

④、device_destory

函数功能:

移除一个被 device_creat() 创建的设备。

头文件:

#include

函数原型:

void device_destory(struct class *class,dev_t devt)

参数说明:

class:指定所要移除的设备所从属的类。

devt:设备号。

返回值:

linux内核创建字符节点,Tiny6410学习ing—(四)、嵌入式Linux内核驱动进阶—(7)、高级字符设备驱动(自动创建节点)—#931...相关推荐

  1. linux嵌入式学习教程,浅析嵌入式Linux学习的八大步骤

    嵌入式Linux要学哪些?一些人总在寻思,怕走了弯路,又怕学的东西离企业需求远.那么今天就请华清远见高级讲师曹大神告诉你,从这8点浅析嵌入式要学习的内容.下面是他本人亲笔. 1.要学习Linux,首先 ...

  2. Vxworks学习(四)_内核

    Vxworks学习(四)_内核 一.实时内核 1.1 实时 1.2 微内核 1.3 任务调度 1.3.1 优先级调度 1.4 任务属性 1.4.1 任务控制块 1.4.2 钩子函数 1.4.3 任务状 ...

  3. 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动

    以下内容转载于微信公众号:嵌入式企鹅圈.如有侵权,请告知删除. 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sysfs等相关概念和技术. 对于初学者来说会非常 ...

  4. linux 块设备驱动 (三)块设备驱动开发

    linux 块设备驱动 (三)块设备驱动开发 一: 块设备驱动注册与注销 块设备驱动中的第1个工作通常是注册它们自己到内核,完成这个任务的函数是 register_blkdev(),其原型为: int ...

  5. linux搭建web服务器论文答辩开场白,基于ARM9嵌入式Linux系统Web Server服务器计算机设计与科学专业毕业答辩.ppt...

    基于ARM9嵌入式Linux系统Web Server服务器计算机设计与科学专业毕业答辩 2009-5-31 计算机科学与技术专业 2009届本科生毕业论文答辩 基于ARM9的嵌入式Linux系统的We ...

  6. 《Linux内核剖析》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+Makefile+块设备驱动+字符设备驱动+数学协处理器+文件系统+内存管理+GDB+立钻哥哥+==)

    <Linux内核剖析> <Linux内核剖析> 版本 作者 参与者 完成日期 备注 YanlzLinux_Kernel0.12_V01_1.0 严立钻 2020.02.06 # ...

  7. Python学习第四天----Linux之用户与用户组权限

    Linux的用户及用户组管理 Linux是个多用户多任务的分时操作系统,所有一个要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面能帮助系统管理员对使 ...

  8. Linux驱动开发--写一个块设备驱动

    原文地址:[原创] 写一个块设备驱动 http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=2017377&fromuid=288 ...

  9. Linux驱动框架之misc类设备驱动框架

    1.何为misc设备 (1)misc中文名就是杂项设备\杂散设备,因为现在的硬件设备多种多样,有好些设备不好对他们进行一个单独的分类,所以就将这些设备全部归属于 杂散设备,也就是misc设备,例如像a ...

最新文章

  1. 胶囊网络升级新版本,推特2000+赞,图灵奖得主Hinton都说好
  2. 不得不爱开源 Wijmo jQuery 插件集(4)-【手风琴效果】(附页面展示和源码)
  3. ORA-28001: the password has expired
  4. java中list排序
  5. java hashtable 并发_Java 并发容器 —— Hashtable 与 Collections.synchronizedMap(HashMap) 的区别...
  6. python3前面加b_Python3 字符串前面加u,r,b的含义
  7. Linux用户管理案例(第二版)
  8. 飞行姿态角度表示: heading pitch roll
  9. .NET Standard,有哪些替代方案?
  10. Codeforces 702B【二分】
  11. sql数据库自动备份
  12. 西威SIEI电梯变频器维修图纸
  13. 中国机床行业投资现状与十四五发展战略决策报告2022版
  14. Hello CTP(一)——期货业务
  15. 后摩尔时代新星之自旋电子器件
  16. 《Thinking in Bets》读书分享 - 如何在信息不完全情况下做出更好的决策(1)
  17. 实例分析SQL中除法的三种写法
  18. OpenPose环境搭建的经历
  19. NAS实现家用服务器
  20. 浅析image,imagesc,imshow的用法

热门文章

  1. dart调用python_Dart - Isolate 并发
  2. 共享会话怎么设置没访问自动断开_谁总结的JavaWeb会话技术了?太全面了...
  3. OpenCV4每日一练day6:Image Watch的使用
  4. C++之继承探究(九):多态的代价
  5. i css svg,如何设置 CSS 背景图中的 SVG 的颜色
  6. 接口编译后生成什么文件_NDK编译生成Android可执行文件
  7. 文件服务器登入,密钥文件登录云服务器
  8. unity怪物攻击玩家减血_怪物猎人发布15周年 — 回顾历代封面怪之三大传奇怪物...
  9. calendar.getinstance()获取的是什么时间_时间管理技能培训.ppt
  10. 图像处理保研面试_细思极妙的保研面试经验汇总?这些小技巧太加分了吧