深耕 IC 现货市场 多年,我们是您值得信赖的伙伴。
我们提供 无最低订购量 的灵活选择,最快可实现 当天发货。欢迎联系我们获取 IC 报价!
Linux Misc子系统框架驱动程序4412蜂鸣器

Linux Misc子系统框架驱动程序4412蜂鸣器

关于如何编写杂项设备,上一篇文章介绍了一般过程,现在让我们实现最简单的杂项设备驱动程序。 http://blog.csdn.net/morixinguan/article/details/52700146以下有关先前字符设备的四篇文章可供参考:http://blog.csdn.net/morixinguan/article/details/55002774 http: //blog.csdn.net/morixinguan/article/details/55003176 http://blog.csdn.net/morixinguan/article/details/55004646 http://blog.csdn.net/morixinguan/article/details/55006654为什么学习其他设备的编程?因为,如果我们必须像原来那样为每个驱动器设备编写一个字符设备驱动程序,则必须分配主要设备号,次要设备号并实现相应的文件操作功能等,这将有点过多,并且记住它并不容易。
因此,Linux内核提供了一系列惰性技巧,以实现杂项设备。实际上,杂项设备可以视为字符设备,但是字符设备是封装的。
看看下面的介绍。知道吧首先让我们看一下misc设备的结构:// // miscdevice结构struct miscdevice& nbsp; {//通常将次设备号分配给MISC_DYNAMIC_MINOR ---->内核会自动将次设备号分配为int minor。
// misc设备的名称const char * name; //文件操作结构const struct file_operations * fops; struct list_head list; struct device * parent;结构设备* this_device; const char * nodename; umode_t模式; };在这里,我们编写最简单的Misc设备,我们只需要注意次要(次设备号),名称(设备名),fops(文件操作功能)。看到这一点,我们可以想象misc设备是字符设备的重新封装,并且,在misc设备中,主要设备号相同,都是10,只有次要设备号不同。
不知道应该在内核中分配哪个设备号,我们可以直接分配次设备MISC_DYNAMIC_MINOR这个宏,这意味着它是内核,可以帮助我们分配次设备号。不用说名称,如果设备成功注册,则在根文件系统/ dev /下将有已注册设备的名称。
fops是一系列文件操作功能,例如打开,读取,写入,ioctl等,很多,它与编写字符设备相同。因此,接下来,让我们看一个示例,在这里,我将省略我的Makefile和Kcofig,您可以参考上一篇文章以轻松实现。
实施简单的其他设备驱动程序(在TINY4412开发板上编写)cdev_test.c #include& lt; linux / kernel.h& gt; #include& lt; linux / module.h& gt; #include& lt; linux / miscdevice.h& gt; #include& lt; linux / fs.h& gt; #include& lt; linux / types.h& gt; #include& lt; linux / moduleparam.h& gt; #include& lt; linux / slab.h& gt; #include& lt; linux / ioctl.h& gt; #include& lt; linux / cdev.h& gt; #include& lt; linux / delay.h& gt; & nbsp; #include& lt; linux / gpio.h& gt; #include& lt; mach / gpio.h& gt; #include& lt; plat / gpio-cfg .h& gt; //其他设备名称---& gt;是字符设备#define DEVICE_NAME“ misc_dev”; //执行打开函数int tiny4412_misc_dev_open(struct inode * inode,struct file * filp){printk(“ tiny4412 misc dev open! ”); return 0;} //执行关闭函数int tiny4412_misc_dev_close(struct inode * inode,结构文件* filp){printk(“ tiny4412 misc dev close! ”); return 0;} //初始化文件操作结构struct file_operations tiny4412_file_ops = {.owner = THIS_MODULE,.open = tiny4412_misc_dev_open,.release = tiny4412_misc_dev_close,}; //初始化misc设备结构struct miscdevice tiny4412_misc_dev = {//次设备号由内核自动分配。 minor = MISC_DYNAMIC_MINOR,//初始化设备名称。
name = DEVICE_NAME,//初始化文件操作结构。 fops =& tiny4412_file_ops,};静态int __init tiny4412_misc_dev_init(void)  {int ret_error; //注册其他设备int ret = misc_register(& tiny4412_misc_dev); if(ret!= 0){& nbsp; ret_error = ret; & nbsp; printk(“其他注册公平! ”); & nbsp; goto fair;} printk("杂项初始化成功! ”);返回ret公平:返回ret_error;}静态void __exit tiny4412_misc_dev_exit(void)  {//取消注册其他设备misc_deregister(& tiny4412_misc_dev);} module_init(tiny4412_misc_dev_init); module_exit(MO” dev_PLENS_misc_misc_dev_exit)); MODULE_AUTHOR(“ YYX添加其他驱动程序”);然后,在编译驱动程序之后,将zImage下载到板上。
我们可以看到启动时misc初始化成功打印,这证明misc设备已成功注册。接下来,在Android的根文件系统中,我们打开/ dev /,您可以看到该设备
NEW
  • 压敏电阻的工作原理及应用领域

    压敏电阻是一种对电压敏感的电子元件,主要作用是保护电路免受过电压的影响。当电路中的电压超过其阈值时,压敏电阻的电阻会急剧下降,从而允许...

  • 负温度系数热敏电阻工作原理及应用

    负温度系数热敏电阻(NTC)是一种电子元件,其电阻值会随着温度的升高而降低。这种特性使得NTC热敏电阻在众多领域中有着广泛的应用,如温度测量、...

  • 温度传感器工作原理及应用领域

    温度传感器是现代工业与日常生活中不可或缺的一部分,它们广泛应用于各种设备和系统中,用于测量和监控温度变化。了解温度传感器的工作原理及其...

  • 积层压敏电阻的应用与特性详解

    积层压敏电阻(Multilayer Varistor,MLV)是一种小型化、高性能的压敏电阻,广泛应用于电子设备中以保护电路免受过电压的损害。这类元件具有体积小、响...

  • 静电保护器的作用与安装方法

    静电保护器在电子设备和敏感组件的保护中扮演着重要角色,尤其是在高湿度或干燥环境中,静电可能会对电子元件造成损害。静电保护器可以有效地防...

  • 电子浆料的应用与发展趋势

    在现代科技快速发展的背景下,电子浆料作为一种关键材料,在微电子、光电子、太阳能电池等领域发挥着不可替代的作用。电子浆料是一种具有导电性...

  • JVR标准系列详解:功能、应用与优势全面解析

    在现代工业自动化领域,JVR标准系列因其卓越的功能性和广泛的适用性而备受关注。本文将从多个角度对JVR标准系列进行全面解析,帮助您更好地理解其...

  • JVR高浪涌系列的应用与优势详解

    在电力系统和电子设备中,浪涌保护器是保障设备安全运行的重要装置。JVR高浪涌系列作为一款高性能的浪涌保护器,在众多领域得到了广泛应用。它具...

  • JVR超高浪涌系列 产品特性与应用范围详解

    在现代电气系统中,浪涌保护器是确保设备安全运行的关键组件之一。JVR超高浪涌系列作为一款高性能的浪涌保护解决方案,其设计旨在为各种应用场景...

  • JVZ标准系列详解:功能、应用与优势全面解析

    在当今快速发展的工业自动化领域,JVZ标准系列因其卓越的功能和广泛的应用而备受关注。JVZ标准系列是针对特定行业需求设计的一系列设备或系统,旨...

  • JVZ高浪涌系列使用方法及优势全面解析

    在面对电力系统中的瞬时电压波动和浪涌问题时,选择合适的保护设备至关重要。JVZ高浪涌系列作为市场上的一款高性能产品,凭借其卓越的设计理念与...

  • JVZ超高浪涌系列 产品特点及应用领域

    在现代电力系统中,由于雷击、开关操作等引起的瞬态电压浪涌问题日益突出,对电力设备的安全稳定运行构成了严重威胁。JVZ超高浪涌系列作为专为解...

  • JVT标准系列详解:应用、特点及优势

    在当今的工业自动化领域,JVT标准系列因其卓越的性能和广泛的应用而备受关注。JVT标准系列涵盖了从控制系统到网络通信等多个方面,旨在为用户提供...

  • JVT高浪涌系列的应用与优势

    在现代电子设备中,电源和信号线面临着各种瞬态电压冲击的风险,这可能对设备造成严重的损害。JVT高浪涌系列作为专业的保护解决方案,在众多应用...

  • JVT超高浪涌系列详解:特点、应用与优势

    在当今电子技术快速发展的背景下,保护电子设备免受电压浪涌的影响变得尤为重要。JVT超高浪涌系列正是针对这一需求而设计的产品,旨在为各类敏感...

  • MOVS系列功能与应用详解

    在现代科技领域,MOVS系列因其卓越的功能和广泛的应用而备受关注。MOVS系列是一种高性能的系统或设备,具体应用可能涵盖工业自动化、信息技术、通...

  • JNR热敏电阻工作原理及应用领域

    热敏电阻是一种对温度变化非常敏感的电子元件,其中JNR热敏电阻(假设为特定类型或品牌)因其卓越性能在众多领域得到广泛应用。了解其工作原理和...

  • JCR03热敏电阻参数及应用详解

    JCR03热敏电阻是一种广泛应用在各种电子设备中的温度传感器,它能够根据周围环境的温度变化改变自身的电阻值。这种特性使得JCR03热敏电阻成为监测和...

  • JCR05热敏电阻参数及应用领域详解

    JCR05热敏电阻是一种广泛应用于各种电子设备中的温度传感器。它具有高灵敏度、稳定性和可靠性等优点,因此在许多领域都有着重要的应用。接下来,...

  • JSR热敏电阻的工作原理和应用领域

    JSR热敏电阻,即Junction Signal Regulation(结点信号调节)热敏电阻,但更有可能您指的是NTC热敏电阻(Negative Temperature Coefficient Thermistor,负温度系数热敏电...