![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
imx6ull
文章平均质量分 88
对imx6ull进行开发
鸭鸭打瞌睡
这个作者很懒,什么都没留下…
展开
-
hdiraw多点分析,使用getevnt进行上报
分析input event的数据多点按下多点发送是 开始先单点发送的指令 +另一个点0003 D047 00000001 //好像代表手指10003 D057 00000001 //应该是对1手指的追踪0003 D053 000020a10003 D054 00005a44多点移动/dev/input/event0: 0003 D047 00000000/dev/input/event0: 0003 D053 0000425b/dev/input/event0: 0003 D054原创 2021-08-18 17:07:51 · 428 阅读 · 0 评论 -
通用makefile快速上手
记个通用makefile平时写代码时,如果有通用makefile就好了,现在有时间,记录一个 基本目录结构如下include 包含了所有的头文件,其他文件里面都包含了一个MakefileMakefile还需要改改的顶层MakefileMakefileCROSS_COMPILE = AS = $(CROSS_COMPILE)asLD = $(CROSS_COMPILE)ldCC = $(CROSS_COMPILE)gccCPP = $(CC) -EAR = $(CROSS原创 2021-08-16 15:52:27 · 174 阅读 · 0 评论 -
hidraw进行单点复现触摸痕迹
查找官方的文档hidraw的描述可以读取一个usb的原生数据,并且对数据进行解析读取read()读取usb发送回来的数据写usb支持数据输入的话(有一个 INTERRUPT OUT 端点)ioctl()HIDIOCGRDESCSIZE:获取报告描述符大小HIDIOCGRDESC:获取报告描述符 —>返回 struct hidraw_report_descriptorHIDIOCGRAWINFO : 获取原始信息 —>返回 struct hidraw_devinfoH原创 2021-08-06 17:33:56 · 933 阅读 · 0 评论 -
触摸屏按键录制与回放--基于event和uinput
继续学习拿到的需求基础:1、可以正常录制触摸数据到文件,包含时间信息(进阶任务需要用到)2、可以通过分析触摸文件统计每个触摸点相关down/up状态,以及丢up等数据3、移植getevent工具进阶:1、实现触摸的回放功能(可以不考虑时间戳,单点实现X,Y坐标即可)。(提示:使用uinput)2、实现循环回放,以及时间序列与文件一致。3、实现多点触摸回放功能。进行分析录制触摸文件应该是直接分析hexdump里面的数据,因为是输入子系统,所以接口应该是相同的之前写的文章分析每个点d原创 2021-08-03 20:29:21 · 967 阅读 · 0 评论 -
中断深入-->中断下半部线程化(工作队列+ threaded irq)
在此之前前定时器、下半部 tasklet,它们都是在中断上下文中执行,它们无法休眠。所以复杂的事情,就不能放在下半部,不然系统会很卡如果使用线程来处理这些耗时的工作,那就可以解决系统卡顿的问题:因为线程可以休眠。不自己创建线程 —> 工作队列在内核中,我们并不需要自己去创建线程,可以使用“工作队列”(workqueue)。内核初始化工作队列是,就为它创建了内核线程。以后我们要使用“工作队列”,只需要把“工作”放入“工作队列中”,对应的内核线程就会取出“工作”,执行里面的函数。工作队列原创 2021-06-24 14:29:20 · 1234 阅读 · 1 评论 -
中断深入--->中断下半部 tasklet
在此之前因为中断的处理会打断其他程序的运行,所以我们希望中断越快结束越好那么我们就把复杂但不那么紧急的事情放在中断的下半部tasklet里面中断和tasklet是 多对一的关系怎么描述呢,描述不出来就像下面我按钮按了三下的话,就会循环三次,跑到100在跑到100之前,发生中断,还是继续先跑完当前的100驱动中使用tasklettasklet结构体中断下半部使用结构体 tasklet_struct 来表示,它在内核源码 include\linux\interrupt.h 中定义s原创 2021-06-21 23:52:41 · 138 阅读 · 0 评论 -
中断深入-->定时器
在此之前我们今天描述的定时器是软件上的定时器,当超过设置的时间,就会唤醒响应的功能然而怎么设置定时器的时间呢?就有了硬件上的定时器,通过硬件的的时钟来设置我们的定时器硬件定时器在源码根目录下有个 .config,里面有各种配置参数这里表示频率是100hz, 代表每秒100次,也就是10ms嘀嗒一下定时器(软件)所谓定时器,就是闹钟,时间到后你就要做某些事。有 2 个要素:时间、做事,换成程序员的话就是:超时时间、函数在内核中使用定时器很简单,涉及这些函数(参考内核源码 include\原创 2021-06-21 15:37:33 · 313 阅读 · 0 评论 -
中断深入-->异步通知
在此之前在中断中引进异步通知,可以让驱动发生中断后主动通知app省去大量的查询时间,和不必要的资源浪费异步通知的流程总体流程: 驱动发送信号给appLinux 系统中也有很多信号,在 Linux 内核源文件 include\uapi\asm-generic\signal.h 中,有很多信号的宏定义: 我们在异步里使用的是 SIGIO① 谁发:驱动程序发② 发什么:信号③ 发什么信号:SIGIO④ 怎么发:内核里提供有函数⑤ 发给谁:APP,APP 要把自己告诉驱动⑥ APP 收到原创 2021-06-15 17:02:52 · 304 阅读 · 0 评论 -
中断深入--> poll机制
在此之前poll机制相当于让app 休眠一段时间,如果在这段时间里有数据 -----> app调用read读取数据如果这段时间没有数据 ------> 不再等待,继续做app自己的事情pool机制的流程poll是在系统调用里面写好的,我们的驱动在 poll只做了两件事 把线程放入 waitqueue队列,但是不休眠 返回event 状态有按键按下,不超时的情况函数执行流程如上图①~⑧所示,重点从③开始看。假设一开始无按键数据:③ APP 调用 poll 之后,进入原创 2021-06-14 10:25:31 · 970 阅读 · 0 评论 -
中断深入-->休眠唤醒(通用)
在此之前中断里面 休眠唤醒,poll,异步… 等等都是为了读取该驱动的应用不占用那么多cpu资源相对来说,对原来的驱动的中断函数没有太多调整,而是在驱动其他地方进行改进处理,给应用程序更好调用休眠流程当app读取时候,有数据可以读取app读取时候没有数据,进入休眠先创建一个等待队列 waitqueue同时app->read,调用了驱动的read, 在驱动的read里,把进程放进等待队列app读取的时候没有数据,先进入休眠当有按键产生,会执行写好的 handle程序在hand原创 2021-06-12 23:07:47 · 1037 阅读 · 0 评论 -
设备树里使用中断---->对gpio进行编程
arm -> 中断过程先分清有硬件上的中断(hwirq),和软中断—>软件规划的中断至于arm在使用linux内核时候调用中断的流程之前就写了出来linux调用中断的流程设备树里使用中断设备树里面参考如何写出中断内核 Documentation\devicetree\bindings\interrupt-controller\interrupts.txt设备树的中断分层我们外设的中断就是这样一层一层的传到cpu在硬件上,“中断控制器”只有 GIC 这一个,但是我们在软件上也可原创 2021-06-07 00:25:38 · 1060 阅读 · 2 评论 -
imx6ull 正点原子设备树适配韦东山的开发板 (二)适配lcd,背光,和触摸屏
继续设备树的移植适配lcd查看内核文档lcdif设备树根据imx6ull.dtsi里面有的soc厂商设备树找到compile内容 compatible = “fsl,imx6ul-lcdif”, “fsl,imx28-lcdif”;根据这两个匹配项去document里面查找相关文档alientek_linux/Documentation/devicetree/bindings/fb/mxsfb.txtcompatible: 照着写reg: lcd寄存器初始和长度interrupts:d原创 2021-06-03 10:50:19 · 1872 阅读 · 1 评论 -
基于触摸屏的 输入系统应用分析
有时候想给输入系统的驱动写个应用也会发现无从下手,今天就对触摸屏写应用进行分析输入系统调用流程调用过程有各种输入设备,就拿触摸屏举例,各种触摸屏经过驱动适配后,会给上层提供一个统一的接口就便于app直接调用1.开始运行app open设备节点,暂时没有数据,app进行休眠2.按下屏幕产生中断,驱动直接获得数据,变成标准的输入事件,发送给输入核心层3.核心层把数据变成标准格式,传递给事件层4.事件层唤醒app,把之前标准格式的数据发送给app传输的数据格式根据上面所说,在核心层把各种设原创 2021-06-03 10:48:01 · 625 阅读 · 0 评论 -
imx6ull 字符驱动->点亮led
用韦老师的板子点灯由于刷面试题,好多驱动都忘记咋写了,今天开始复习驱动,以后接手其他板子照着上就行了电路分析从底板原理图上看找出led灯连到核心板里面 也是叫SNVS_TAMPER3时钟使用某一外设之前一定要配置时钟,在datasheet里面找到CCM根据外设指引找到该寄存器从下图看出是默认打开的,时钟全开???,那就不用配了电器属性在gpio这一章找到 pad structure进行分析一下我们配置电气属性是在IOMUXC章节HYS(bit16):对应图中 HY原创 2021-05-28 20:07:53 · 459 阅读 · 0 评论 -
imx6ull 正点原子设备树适配韦东山的开发板 (一)顺利启动,配置led,button
对比正点原子的设备树结构图韦东山的设备树结构图从因为蓝色的是开发板厂商对开发板自己的优化,所以我们对正点原子蓝色部分进行修改就行只编译imx6ull对正点原子里的包进行修改,因为有太多设备树编出来,所以把不要的去掉修改Makefilemakefile里面只留下我们要的根据缺失把之前删掉的其他文件找回,直到编译通过让设备树支持内核运行到根文件系统...原创 2021-03-20 23:02:26 · 2030 阅读 · 1 评论 -
imx6ull使用mjpg_stream调用摄像头,用opencv在windos进行视频查看
想用Python对arm板的摄像头数据进行分析初步采用的方法是,imx6ull使用mjpg_stream调用摄像头,用opencv在windos进行视频查看对imx6ull进行mjpg_stream的移植需要一个免驱摄像头别人的移植教程弄成这样就行了使用opencv截取视频流我们可以使用request来爬取我们的这个网站,用opencv对每一个画面进行读取(其实也就是一个一个的jpg图片连续起来)http://192.168.113.3:8080/?action=snapshot这个网页原创 2020-11-12 09:17:25 · 1177 阅读 · 0 评论 -
imx6ull 移植华为云,交叉编译openssl
之前移植过,好像这次移植又出问题下载我又一次造轮子 轮子先参考之前的移植之前的移植所以,移植openssl写的详细一点下载openssl下载1.1.0的 g版,只有这个里面有makefile解压进入CC=gcc ./config no-asm shared --prefix=/home/book/Public/openssl我自己的export了,这个用gcc 其实是arm-linux-gnueabihf-gccCC=arm-linux-gcc ./config no-asm sha原创 2020-11-09 15:15:20 · 641 阅读 · 0 评论