空枝|LINUX IIO子系统分析之七 虚拟iio设备驱动实现( 二 )
该虚拟温度传感器的iio device相关的参数设置如下所示
另外针对虚拟中断控制器、虚拟iic device已经在其他专栏中说明 , 此处直接调用不再细说 。
四、虚拟IIO DEVICE DRIVER的测试验证本驱动已经在ubuntu16.04上测试验证 , 由于ubuntu16.04内核默认没有将iio 子系统 编译进内核 , 但是已编译成驱动模块 , 可以在路径/lib/modules/4.4.0-66-generic/kernel/drivers/iio下找到对应的驱动模块 , 我们需要这些驱动模块: industrialio.ko、industrialio-triggered-event.ko、kfifo_buf.ko、industrialio-triggered-buffer.ko即可 , 先将这些驱动insmod 系统中;
然后按照本次虚拟驱动主要涉及如下内容:
insmod virt_i2c_controller.ko
insmod virt0808_dev.ko
insmod virt0808_irq.ko
insmod virt0824_temp_driver.ko
测试温度告警阈值主要测试iio event功能 , 我们的虚拟程序中已经实现了iio event的应用测试程序 。
- 首先运行该测试程序;
- 修改虚拟温度传感器的两个通道的当前温度、通道0的温度过高告警阈值、并设置温度0过高温度告警fault bit为1 , 执行的命令如下:
- 寄存器值修改好后 , 我们手动触发一个温度过高告警中断 , 执行命令如下
- 查看测试程序已经收到iio event事件 , 如下图所示
测试连续数据采集(iio buffer功能)
- 首先使能通道0的温度采集功能 , 设置iio buffer的缓存为16 , watermark为1
- 开始监控/dev/iio:device,进行数据采集 , 命令如下
- 触发数据可读中断 , 如下图所示
- 查看读取的数据 , 如下图所示 , 可正常进行数据采集
测试单次数据采集执行如下命令即可对两个通道当前的数据进行温度采集工作 。
【空枝|LINUX IIO子系统分析之七 虚拟iio设备驱动实现】 至此完成了IIO子系统专栏的分析 , 即完成了IIO子系统内部的设计说明 , 也完成了一个虚拟的IIO DEVICE DIRVER , 希望对大家有所帮助 。
推荐阅读
- 精英联盟总队|最详细的Linux简史——Linux大神带你领略它的前世今生
- 轻拔琴弦|给你一个反悔的机会
- 空枝|一个漂亮的开源HTML5音乐播放器——APlayer
- 空枝|这台手机,我整整等了三年,终于要发布
- 空枝|华为云手机革新概念、与我书中未来手机革新概念同理
- 空枝|1368元 6GB+128GB+5000毫安电池四摄拍照手机
- 空枝|不看不知道,黄石还有这么硬核的地方
- 空枝|移动在学校又来搞事了
- 怅然|Glances:多功能 Linux 系统监控工具
- 空枝|为什么不敢禁用苹果?制裁苹果,我们得不偿失