属性系统 属性系统传感器驱动的主要组成部分。在传感器驱动中通常使用属性系统实现传感器的打开、关闭、参数设置读取等功能。一个简单的例子如下: 属性系统的驱动代码 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上编译并测试通过。
测试代码:
驱动测试文件代码如下:
http://blog.chinaunix.net/uid-26017891-id-3491096.html