linux iio 设备驱动,Linux设备驱动之IIO子系统——IIO框架数据读取-Go语言中文社区...

IIO DATA ACCESS IIO数据获取

只有两种方法可以使用IIO框架访问数据; 通过sysf通道进行一次性捕获,或通过IIO字符设备进行连续模式(触发缓冲)。

One-shot capture:单次获取

一次性数据捕获通过sysfs接口完成。 通过读取与通道对应的sysfs条目,您将仅捕获特定于该通道的数据。 给定一个带有两个通道的温度传感器:一个用于环境温度,另一个用于热电偶温度:

# cd /sys/bus/iio/devices/iio:device0

# cat in_voltage3_raw6646# cat in_voltage_scale0.305175781

通过将比例乘以原始值来获得处理值。

Voltage value: 6646 * 0.305175781 = 2028.19824053

器件数据表说过程值以mV给出。 在我们的例子中,它对应于2.02819V。

Buffer data access:缓冲区数据获取

要使触发的采集工作,必须在驱动程序中实现触发器支持。 然后,要从用户空间内获取数据,必须:创建触发器,分配它,启用ADC通道,设置缓冲区的维度,并启用它。这里主要介绍两种:sysfs触发器和hrtimer触发器。

使用sysfs触发器获取:

使用sysfs触发器捕获数据包括发送一组命令少量sysfs文件。 让我们列举一下我们应该做些什么来实现这一目标:

1. 创建触发器:在将触发器分配给任何设备之前,应该创建它:

# echo 0 > /sys/devices/iio_sysfs_trigger/add_trigger

这里,0对应于我们需要分配给触发器的索引。 在此命令之后,触发器目录将在/ sys / bus / iio / devices /下作为trigger0。

2. 将触发器分配给设备:触发器由其名称唯一标识,我们可以使用该触发器将设备绑定到触发器。 由于我们使用0作为索引,因此触发器将命名为sysfstrig0:

# echo sysfstrig0 > /sys/bus/iio/devices/iio:device0/trigger/current_t

我们也可以使用下面这个命令:cat /sys/bus/iio/devices/trigger0/name> /sys/bus/iio/devices/iio:device0/trigger/current_trigger. 也就是说,如果我们编写的值与现有的触发器名称不对应,则不会发生任何事情。 为了确保我们真正定义了一个触发器,我们可以使用cat/sys/bus/iio/devices/iio:device0/trigger/current_trigger.

3. 启用扫描元素:此步骤包括选择将其数据值推入缓冲区的通道。 应该注意驱动程序中的available_scan_masks:

# echo 1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage4_en

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage5_en

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage6_en

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage7_en

4. 设置缓冲区大小:这里应该设置缓冲区可以保存的样本集数量:

# echo 100 > /sys/bus/iio/devices/iio:device0/buffer/length

5. 启用缓冲区:此步骤包括将缓冲区标记为准备接收推送数据:

# echo 1 > /sys/bus/iio/devices/iio:device0/buffer/enable

要停止捕获,我们必须在同一个文件中写入0。

6.使能触发器:启动采集:

# echo 1 > /sys/bus/iio/devices/trigger0/trigger_now

现在数据获取已经完成,下一步我们可以

7. 禁用缓冲区:

# echo 0 > /sys/bus/iio/devices/iio:device0/buffer/enable

8.分离触发器Detach the trigger:

# echo "" > /sys/bus/iio/devices/iio:device0/trigger/current_trigger

9.转储IIO字符设备的内容

# cat /dev/iio:device0 | xxd –

使用hrtimer触发器获取(4.5及以上内核版本)

以下是允许使用hrtimer触发器捕获数据的命令集:

# echo /sys/kernel/config/iio/triggers/hrtimer/trigger0

# echo50 > /sys/bus/iio/devices/trigger0/sampling_frequency

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage4_en

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage5_en

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage6_en

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage7_en

# echo1 > /sys/bus/iio/devices/iio:device0/buffer/enable

# cat/dev/iio:device0 | xxd -

0000000: 0188 1a30 0000 0000 8312 68a8 c24f 5a14 ...0......h..OZ.0000010: 0188 1a30 0000 0000 192d 98a9 c24f 5a14 ...0.....-...OZ.

[...]

然后,我们查看类型以确定如何处理数据:

$ cat /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage_type

be:s14/16>>2

Voltage processing: 0x188 >> 2 = 98 * 250 = 24500 = 24.5 v

IIO tools

您可以使用一些有用的工具来简化和加快使用IIO设备开发应用程序的速度。 它们在内核树中的tools / iio中可用:

lsiio.c:枚举IIO触发器,设备和通道

iio_event_monitor.c: 监视IIO设备的IIO事件的ioctl接口

generic_buffer.c: 检索,处理和打印从IIO设备缓冲区接收的数据

libiio: 一个功能强大的库,由模拟设备开发,用于接口IIO设备,可从https://github.com/analogdevicesinc/libiio获得。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业物联网平台新版公共实例升级企业实例教程

简介:2021年7月30日企业物联网平台重磅升级,发布的新版公共实例支持一键升级企业版实例,本文将为大家介绍一键升级教程 一、企业版实例,企业用户首选 企业物联网平台 提供设备上云必备的基础服务,用户无需自建物联网…

【全观测系列】Elasticsearch应用性能监控实践

简介:本文介绍了应用性能监控的应用价值以及解决方案等。 1、什么是全观测? 要了解全观测,我们先看看传统运维存在哪些问题。 数据孤岛,分散在不同部门,分析排查故障困难;多个厂商的多种工具&#xff0c…

Gartner发布当前至2024年的五大隐私趋势

到2024年,全球75%人口的个人数据将得到隐私法规的保护。 供稿 | Gartner 出品 | CSDN云计算 根据Gartner的研究,随着全球隐私法规数量的不断增加,企业机构应关注五项重大隐私趋势,以应对保护个人数据和遵守监管要求方面的挑战。 …

linux下qt生成可安装的程序,linux – 如何为Qt应用程序创建“安装”包?

您可以从项目中创建debian包.据我所知,你想创建一个用于分发的包,所以我建议你从你的项目中创建一个debian包.Here是Debian Packaging系统的介绍.在文章中,他们在某些时候描述了如何创建一个“规则”文件,它是构建过程的核心.以下是我通常用于Qt / KDE项目的示例:#!…

es实战-使用IK分词器进行词频统计

简介:通过IK分词器分词并生成词云。 本文主要介绍如何通过 IK 分词器进行词频统计。使用分词器对文章的词频进行统计,主要目的是实现如下图所示的词云功能,可以找到文章内的重点词汇。后续也可以对词进行词性标注,实体识别以及对…

IC Nansha|AMD高级副总裁、大中华区总裁潘晓明:制程、架构、平台优化突破计算边界

6月25日,中国南沙国际集成电路产业论坛在广州南沙顺利举行。AMD高级副总裁、大中华区总裁潘晓明出席了本次会议,并在高峰论坛环节中以《高性能计算的未来》为主题发表了演讲。 (AMD高级副总裁、大中华区总裁 潘晓明) 作为一家深耕…

linux 输出后面几列内容,Linux下使用awk如何获取关键字所在字段号,第几列,以及打印这个字段之后的所有字段?...

netstat 的原始结果如下:[rootTest tmp]# netstat -tunp| grep ESTABLISHEDtcp 0 0 10.251.101.163:6379 10.251.101.163:51602 ESTABLISHED 2115/redis-server 1tcp 0 0 127.0.0.1:58657 127.0.0.1:3306 ESTABLISHED 13354/rpc_time_servtcp 0 0 10.251.101.163:52…

nltkdata路径设置linux,NLTK data路径设置

安装nltk后用这个命令:from nltk.book import *按照正常的,应该出现以下:>>> from nltk.book import **** Introductory Examples for the NLTK Book ***Loading text1, ..., text9 and sent1, ..., sent9Type the name of the text…

爱数SMART 2022峰会开启,分享数据战略与建设数据驱动型组织方法论

6月28日,爱数SMART 2022线上峰会全球直播正式开启。主论坛上,爱数正式提出了企业制定数据战略以及建设数据驱动型组织的方法论,并推出开源计划与数字伙伴计划2.0,共创数据驱动型组织。 通过清晰的数据战略,从容加速数据…

云原生时代开发者工具变革探索与实践

简介:本篇内容分享了原生时代开发者工具变革探索与实践。 分享人:马洪喜 行云创新CEO 正文:本篇内容将通过三个部分来介绍云原生时代开发者工具变革探索与实践。 一、云原生模块化开发概览 二、软件模块化开发特点 三、ADD产品简介 一、…

喜马拉雅 Apache RocketMQ 消息治理实践

简介:本文通过喜马拉雅的RocketMQ治理实践分享,让大家了解使用消息中间件过程中可能遇到的问题,避免实战中踩坑。 作者:曹融,来自喜马拉雅,从事微服务和消息相关中间件开发。 本文通过喜马拉雅的RocketMQ治…

Linux里怎么进行路由跟踪,[Linux] traceroute 路由跟踪指令用例

traceroute是用来跟踪数据包到达网络主机所经过的路由工具。在Linux系统中,称之为traceroute,在Windows中称为tracert。一条路径上的每个设备traceroute要测3次。输出结果中包含每次测试的时间(ms)和设备的名称及其IP。1、命令格式:tracerout…

Docker 容器为什么傲娇?全靠镜像撑腰!

作者 | 飞向星的客机来源 | CSDN博客🌟 前言Docker 镜像是 Docker 容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。Docker 镜像是一个只读的模板,一个独立的文件系统,包括运行一个容器所需的数据,…

HBase读链路分析

简介:HBase的存储引擎是基于LSM-Like树实现的,更新操作不会直接去更新数据,而是使用各种type字段(put,delete)来标记一个新的多版本数据,采用定期compaction的形式来归档合并数据。这种数据结构…

设置linux文件系统密码,busybox 文件系统设置 登陆 login 密码 password shadow

用busybox做文件系统的很多介绍,这里就不啰嗦了。说几点:1、etc目录下有inittab,则系统按此文件规则来启动和运行,内容为:::sysinit:/etc/init.d/rcS#把respawn改成askfirst就会出现按enter才能进去的提示::respawn:-/…

PolarDB for PostgreSQL 开源路线图

简介:作者:蔡乐 本文主要分享一下Polar DB for PG的开源路线图,虽然路线图已经拟定,但是作为开源产品,所有参与者都能提出修改意见,包括架构核心特性的技术以及周边生态和工具等,希望大家能够踊…

5分钟入门Lindorm SearchIndex

简介:SearchIndex是Lindorm宽表的二级索引,主要用来帮助业务实现快速的检索分析。本篇文章介绍如何通过简单的SQL接口操作SearchIndex。 一、引言 云原生多模数据库Lindorm,支持海量数据的低成本存储和弹性按需付费,提供宽表、时…

linux coreutils升级,Linux命令01--Coreutils软件包01--认识coreutils

//通过ls命令的所属软件包来获取coreutils软件包的版本 #rpm -qf /bin/ls >>>coreutils-8.22-18.el7.x86_64 //下载yumdownloader工具,yumdownloader是一个从RPM源下载RPM的程序 #yum -y install yum-utils //使用yumdownloader命令安装源代码,…

最后的 48 小时!云 XR 专题赛邀你一起绽放精彩,我们赛场见!

2022 年是 5G 应用规模化发展的关键之年。随着5G的深入发展,涵盖百亿级“人机物”的智能连接正加速构建,经济社会发展不断向虚实融合演进,基础设施形态也不断向云网融合升级。随着连接对象的拓展和基础设施的升级,XR、元宇宙等新业…

Snowflake核心技术解读系列——架构设计

简介:Snowflake取得了巨大的商业成功,技术是如何支撑起它的千亿美元市值呢?它技术强在哪?本文为大家倾情解读Snowflake的核心技术原理。 背景:2020年9月16日,Snowflake成功IPO,交易首日市场估值…