RK3568驱动指南|第十三篇 输入子系统-第145 章 输入子系统上报数据格式分析

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。


【公众号】迅为电子

【粉丝群】824412014(加群获取驱动文档+例程)

【视频观看】嵌入式学习之Linux驱动(第十三篇 输入子系统_全新升级)_基于RK3568

【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板


第145 章 输入子系统上报数据格式分析

在之前的章节中,我们已经了解到可以通过应用程序获取上报的信息。此外,还可以使用命令“hexdump /dev/input/event4”来查看上报的信息。实际上,使用hexdump命令查看到的数据也是input_event数据包,如下图所示。通过使用hexdump命令,我们可以快速查看上报的信息,而无需编写应用程序,从而提高效率。

接下来我们再来看一下input_event数据包中的成员,如下图所示:

在input_event数据包中,有四个成员变量:time,type,code,value。这些成员变量的值在使用hexdump命令获取到的数据中是以字节的形式存储的每个字节都以十六进制的形式表示。为了将hexdump输出的数据与input_event数据包中的成员值对应起来,你需要了解数据包的字节顺序(即字节序)和每个成员的字节大小。

一般情况下,input_event数据包的字节顺序是小端字节序(Little Endian)。这意味着较低的字节位于较高的内存地址处。对于每个成员变量,可以根据其字节大小来确定在hexdump输出中对应的字节范围。

在/usr/include/x86_64-linux-gnu/bits/types.h 文件中有如下定义:

由上图可得出以下结论

time.tv_sec和time.tv_usec的类型是long int,占8个字节

__u16 type的类型是unsigned short int,占2个字节

__u16 code的类型是unsigned short int,占2个字节

__s32 value的类型是unsigned int,占4个字节

下面是一个示例来说明如何与hexdump输出的数据对应。

假设hexdump输出的数据(以16进制表示)如下:

root@topeet:~$ hexdump /dev/input/event2

0000000 0f09 65d3 0000 0000 36fb 0001 0000 0000

0000010 0003 0039 0000 0000 0f09 65d3 0000 0000

0000020 36fb 0001 0000 0000 0003 0035 00f5 0000

0000030 0f09 65d3 0000 0000 36fb 0001 0000 0000

0000040 0003 0036 02b2 0000 0f09 65d3 0000 0000

0000050 36fb 0001 0000 0000 0003 0030 0021 0000

一个input_event数据包所占字节的大小为8+8+2+2+4 =24个字节。如下图所示为一个input_event数据包。

对应的成员值如下:

tv_sec: 0f09 65d3 0000 0000

tv_usec: 36fb 0001 0000 0000

type: 0003

code:0039

value: 0000 0000

好,现在我们对上报数据格式已经分析完毕。那么不知道大家有没有一个疑问,为什么要使用_u16等,而不是直接使用unsigned short int呢?

这是因为不同的机器类型,比如不同的硬件架构或者操作系统,可能在数据类型的大小个字节顺序上存在差异。

使用__u16是一种特殊的数据类型,它是Linux内核中定义的无符号16位整数类型,这个数据类型在不同平台上都保证占用2个字节,并且具有确定的字节顺序(大端或小端),这样就可以在不同机器上保持一致。相比之下,unsigned short int并没有提供对字节大小或字节顺序的特定保证,因此在不同的机器类型上,它的大小和字节顺序可能会有所变化,这可能导致在跨平台环境中出现数据不一致的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CodeSys创建自定义的html5控件

文章目录 背景创建html5control.xml文件控件界面以及逻辑的实现使用的资源安装自定义的html5控件库 背景 查看官方的资料:https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_html5_dev.html 官方的例子:https://forge.codesys.com/…

#Linux(VMwareTOOL安装)

(一)发行版:Ubuntu16.04.7 (二)记录: (1) (2)打开虚拟机然后安装,出现灰色可能是已经安装过但是自己没有找到 (3)删除VM…

React【Day1】

B站视频链接 一、React介绍 React由Meta公司开发,是一个用于 构建Web和原生交互界面的库 React的优势 相较于传统基于DOM开发的优势 组件化的开发方式不错的性能 相较于其它前端框架的优势 丰富的生态跨平台支持 React的市场情况 全球最流行,大…

烟火AI识别检测算法在新能源汽车充电桩站点的应用方案

新能源汽车作为现代科技与环保理念的完美结合,其普及和应用本应带给人们更加便捷和绿色的出行体验。然而,近年来新能源汽车充电火灾事故的频发,无疑给这一领域投下了巨大的阴影。这不禁让人深思,为何这一先进的交通工具在充电过程…

OpenCV+OpenCV-Contrib源码编译

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、OpenCV是什么?二、OpenCV 源码编译1.前期准备1.1 源码下载1.2 cmake安装1.3 vscode 安装1.4 git 安装1.5 mingw安装 2.源码编译2.1 打开cmake2.…

【科研基础】VAE: Auto-encoding Variational Bayes

[1]Kingma, Diederik P., and Max Welling. “Auto-encoding variational bayes.” arXiv preprint arXiv:1312.6114 (2013). 文章目录 1-什么是VAE1.1-目标1.2-Intractability:1.3-Approximation use NN:1.4-最大化 L ( θ , ϕ ; x ) L(\theta,\phi;x) L(θ,ϕ;x):1.5-优化 …

数据结构——二叉树-堆(堆的实现,堆排序,TopK问题)

目录 前言 1.树的概念及结构 1.1 树的概念 1.2 树的相关概念 1.3 树的表示 2. 二叉树的概念及结构 2.1概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储结构 3. 堆 3.1 堆的概念及结构 3.2 堆的实现 3.1.2 数据结构的设计和文件准备 3.1.2堆的初始化和销…

小字辈(左子右兄加强版)

文章目录 题目描述思路AC代码总结 题目描述 输入样例1 5 1 2 0 2 4 3 3 0 0 4 0 5 5 0 0 输出样例1 3 4 5输出样例2 5 2 5 3 1 2 0 3 0 0 4 0 0 5 0 4 输出样例2 3 4 5思路 dfs 二叉树 存储结构 1.用结构体数组存储每个节点的父节点、左右节点 2.用vector存储答案 具体做法 1.…

[论文笔记] Dual-Channel Span for Aspect Sentiment Triplet Extraction

一种利用句法依赖和词性相关性信息来过滤噪声(无关跨度)的基于span方法。 会议EMNLP 2023作者Pan Li, Ping Li, Kai Zhang团队Southwest Petroleum University论文地址https://aclanthology.org/2023.emnlp-main.17/代码地址https://github.com/bert-ply…

升级!Sora漫步街头的女人可以跳舞啦!科目三蹦迪多种舞姿停不下来,可精准控制动作

Sora为我们展开了一个充满惊喜的新篇章,同时,Viggle这一模型也吸引了公众的目光,并在推特上迅速走红! 想象一个场景,你仅需用几句话就能让画面活灵活现,无论是让角色跳舞、做后空翻,这些曾经只能…

LeetCode刷题【树状数组、并查集、二叉树】

目录 树状数组307. 区域和检索 - 数组可修改406. 根据身高重建队列673. 最长递增子序列的个数1409. 查询带键的排列 并查集128. 最长连续序列130. 被围绕的区域 二叉树94. 二叉树的中序遍历104. 二叉树的最大深度101. 对称二叉树543. 二叉树的直径108. 将有序数组转换为二叉搜索…

算法 之 排序算法

🎉欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ 🎉感谢各位读者在百忙之中抽出时间来垂阅我的文章,我会尽我所能向的大家分享我的知识和经验📖 🎉希望我们在一篇篇的文章中能够共同进步!!&…

CSS(一)

一、CSS 简介 1.1 HTML 的局限性 说起 HTML&#xff0c;这其实是个非常单纯的家伙&#xff0c;他只关注内容的语义。比如 <h1> 表明这是一个大标题&#xff0c;<p> 表明这是一个段落&#xff0c;<img> 表明这儿有一个图片&#xff0c;<a> 表示此处有链…

PCB产业渐出谷底,超颖电子能否找到发展确定性?

经历了三年多低迷期&#xff0c;消费电子在2024年终于以企稳回升的姿态逐步回暖。IDC预期&#xff0c;2024年&#xff0c;智能手机、PC、服务器等关键领域的出货量或迎来修复性成长。 这也将带动“电子产品之母”印刷电路板&#xff08;Printed Circuit Board&#xff0c;PCB&…

Python之装饰器-无参装饰器

Python之装饰器-无参装饰器 装饰器介绍 1. 为何要用装饰器 Python 中的装饰器是一种语法糖&#xff0c;可以在运行时&#xff0c;动态的给函数或类添加功能。装饰器本质上是一个函数&#xff0c;使用 函数名就是可实现绑定给函数的第二个功能 。将一些通用的、特定函数的功…

InstructGPT的流程介绍

1. Step1&#xff1a;SFT&#xff0c;Supervised Fine-Tuning&#xff0c;有监督微调。顾名思义&#xff0c;它是在有监督&#xff08;有标注&#xff09;数据上微调训练得到的。这里的监督数据其实就是输入Prompt&#xff0c;输出相应的回复&#xff0c;只不过这里的回复是人工…

python5:基于多进程的并发编程、基于协程的并发编程的学习笔记

进程 为什么要使用多进程&#xff1f;——GIL的存在&#xff0c;多线程实际不是并发执行 将任务分为两类&#xff1a;IO密集型&#xff08;多线程&#xff09;CPU密集型&#xff08;多进程&#xff09; 多进程的基本用法 concurrent.futures.process.ProcessPoolExecutor#进…

李清照想老公了,人比黄花瘦

年轻时的风光无限&#xff0c;中年时的颠沛流离&#xff0c;晚年时的孤独寂寞&#xff0c;李清照的一生跌宕起伏&#xff0c;十分凄惨。 北宋的国破家亡&#xff0c;让李清照从活泼可爱的少女成为孤独的老妇人。 一、少女情思 少女时期&#xff0c;李清照有一次去游玩&#…

【Linux】误删除/home家目录怎么办? -- 此时ssh连接登录的就是此普通用户

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…