3、Linux温湿度传感器驱动程序实现
单片机控制的传感器设备中,单片机通常是单线程运行。在进行温湿度测量时,单片机需要等待测试结果返回,其方法阻碍了其他测试和操作的同步执行。
在嵌入式Linux系统中,驱动程序将测试任务送入任务队列,交出CPU控制权,继而进行其他实时任务运行,待内核空闲再进入任务队列完成传感器的测量,以此提高系统执行的效率和实时性。
3.1 Linux温湿度传感器设备加载
温湿度传感器使用Linux内核的Miscdevice数据结构在驱动程序初始化时将设备注册到内核。
Miscdevice是字符设备,其主设备号为10,设备及设备接口函数定义如下所示。
驱动程序加载设备时将调用内核的注册函数。在Linux2.4和2.6内核中,几乎所有Linux驱动程序都依靠如下函数加载模块。
驱动程序初始化完成后,上层应用程序可以调用sht10_fops中的sht10_read函数进行温湿度的读取操作。
3.2 Linux温湿度传感器设备操作
进行数据读取前,首先要在驱动程序中开辟4个字节的数据空间,用于存放温度和湿度测量值