属性系统 




        属性系统传感器驱动的主要组成部分。在传感器驱动中通常使用属性系统实现传感器的打开、关闭、参数设置读取等功能。一个简单的例子如下:

        属性系统的驱动代码 




HWMON驱动 

        hemon子系统,可以理解成 hardware monitor——监控硬件设备的传感器,包括温度传感器等等。通常一个典型的例子是LM75温度传感器。这个传感器的使用非常广泛,其代码在linux内核中的位置:$(LINUX SOURCE CODE)/driver/hwmon/lm75.c。这里我们有一个简单的HWMON例子: 




        HWMON的驱动代码

        我为hwmon也写了一个及其简单的测试代码,有点懒,不爱写了。。。

        HWMON的测试代码 

ioctl 

        ioctl属于高级字符驱动程序操作,详细的说明可以参考《ldd3》的第六章。在传感器驱动中,一般通过HWMON或者MISC设备驱动来实现和调用ioctl方法。在本文中我们将在MISC驱动中实现IOCTL方法。 




MISC驱动 

         Linux的MISC子系统通常用来实现不太好分类的字符设备,比如AD、看门狗以及一些传感器。在传感器驱动中,通常使用MISC驱动提供一个文件接口,通过该文件接口,用户层代码可以使用ioctl来传递命令和参数,从而控制传感器的工作。 

        一个MISC驱动的简单代码如下: 

        MISC代码链接 

        注:在Linux的misc子系统中,misc_register和misc_deregister分别用来注册和删除MISC设备。misc_register将结构体miscdevice注册成MISC设备,并将file_operations和该设备关联起来,这样我们可以通过在/dev下生成的文件接口使用ioctl传递控制参数。 

        驱动测试文件代码如下: 

        MISC驱动测试代码 

        注:MISC驱动的文件接口和SYS路径都在测试代码中宏定义了,我们获取/dev/misc_example的文件描述符之后,使用ioctl方法与MISC驱动交互。 

说明


        以上代码在64位ubuntu12.04上编译并测试通过。 

测试代码:

MISC代码链接

驱动测试文件代码如下:

MISC驱动测试代码

 

http://blog.chinaunix.net/uid-26017891-id-3491096.html

 

转载于:https://www.cnblogs.com/MMLoveMeMM/articles/4109627.html

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐