该文章介绍了如何通过Linux的配置文件/etc/udev/rules.d/99-com.rules来识别和配置硬件设备,包括触摸板、键盘、鼠标等。作者通过一个实际的例子,展示了如何通过修改/etc/passwd文件来设置用户的UID和GID,以及通过修改/etc/group文件来设置用户的GID。此外,文章还介绍了如何在嵌入式设备中通过移植Linux内核来支持硬件设备的驱动,以及如何在嵌入式设备中使用Qt来开发图形界面应用程序。
linux中input子系统与I2C子系统类似,也被主观分成三部分:输入驱动、输入设备和输入核心。
前面两篇文章写了《input子系统的的概念》和《分析input子系统的代码》。这一篇文章来说说input子系统的驱动程序编写。
pdata->num_row_gpios = nrow = of_gpio_named_count(np, “row-gpios”);
input驱动的测试方法 1.ls /dev/event* -l 查看现有的/dev/event设备 2.insmod buttons_input.ko 安装驱动 3.ls /dev/event -l 查看buttons_input对应的设备 4.cat /dev/tty1,然后在按键,“l”“s”“ENTER”便会出现ls 5.如果启动了QT,可以点开记事本,按相应的按键“l”“s”“ENTER”便会在记事本上出现ls 6.也可通过执行exec 0</dev/tty1 //标准输入改为tty1,然后重复上述操作即可。
这个设备驱动适用于,矩阵键盘的每行,每列都是接到一个IO口, 行线接的IO口有中断功能. 需要在linux内核配置里选上相关的配置。在内核源码目录下:
Version: [ 2.6.11.8 ][ 2.6.25 ][ 2.6.25.8 ][ 2.6.31.13 ] Architecture:[ i386 ]
本节的触摸屏驱动也是使用之前的输入子系统 1.先来回忆之前第12节分析的输入子系统 其中输入子系统层次如下图所示, 其中事件处理层的函数都是通过input_register_handler()函数注册
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git 视频观看 百问网驱动大全 编写input_dev驱动框架 参考资料: 1. 回顾框架 2. 怎么编写input_dev驱动 2.1 分配/设置/注册input_dev 2.2 硬件相关的操作 3. 现场编程 在设备树里创建一个节点 指定硬件资源等信息 编译一个pla
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133118.html原文链接:https://javaforall.cn
上一篇文章写了《input子系统的的概念》。今天这篇文章主要分析input子系统的代码,input子系统作为一个字符设备存在kernel中,我们从input这个模块的入口函数开始讲起。
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git 视频观看 百问网驱动大全 I2C接口触摸屏驱动分析 参考资料: Linux 5.x内核 Documentation\devicetree\bindings\input\touchscreen\goodix.txt drivers/input/touchscreen/goodix.
本文介绍了如何通过Linux内核模块编程,实现USB设备驱动,特别是针对键盘、鼠标等输入设备的驱动开发。通过分析具体的实现过程,作者让读者了解如何通过Linux内核模块编程,实现USB设备驱动,特别是针对键盘、鼠标等输入设备的驱动开发。
上报设备 headset :听筒mic headphone:听筒没有mic Lineout:声音输出没有mic 上报方式 输入子系统: 可上报输入事件 上报开关事件 switch state:uevent 编写输入系统驱动 分配input_dev; 设置: 能产生哪类事件:EV_SW 能产生EV_SW中的哪些事件 headset headphone Lineout 注册input_dev 硬件相关(中断程序) 上报插入事件 上报拔出事件 #include <linux/module.h> #incl
为了对多种不同类型的输入设备进行统一的处理,内核在字符设备驱动上抽象出一层,即输入子系统。
本人用的触摸屏IC是FocalTech公司的ft5306,是一款i2c的电容屏多点触控芯片。对于它的整体驱动官方已经给了,我们就触摸屏和按键部分的代码做相关说明。说明其中应该注意的地方。
上篇文章介绍了电容触摸驱动的编写,包括设备树的修改和驱动程序(IIC驱动+中断+input子系统),并通过将触摸坐标值实时打印出来的方式,对触摸功能进行测试。
/home/yygyickl/A33/dragonboard/tools/pack/chips/sun8iw5p1/configs/vstar/sys_config.fex 这是我的目录。
在此节之前,我们学的都是简单的字符驱动,涉及的内容有字符驱动的框架、自动创建设备节点、linux中断、poll机制、异步通知、同步互斥/非阻塞、定时器去抖动。 其中驱动框架如下: 1)写file_op
/*输入子系统分析 input.c*/ /*1. 为什么需要输入子系统? 由于我们平时用的输入设备比较杂乱,比较多。 比如: 鼠标,键盘, 触摸屏等。 当我们写驱动的时候都需要注册字符设备文件或者混杂设备文件。所以出现了一种机制。 这种机制就是把各种输入设备定义为input_device。 把处理这种设备的函数定义为input_handler。 这个样以来,程序员只需要操作input_device,而input_handler则是已经为各种设备做好的处理函数了。 这样的好处是对所有的设备进行
uinput是一个内核模块(驱动),它允许应用程序模拟输入设备(input_dev)。 应用程序通过访问/dev/uinput或/dev/input/uinput:
如果不修改驱动程序,触摸功能也能使用上,但是x轴是左右反向的,y轴也是如此,在设备树中不能定义处理,需要修改驱动程序。 具体如下。
在目录下amp\a53_linux\drv\extdrv\touchpad\ft6236下可以看到ft6236.c的文件
A类协议在每发送完一个接触数据包后会调用 input_mt_sync() 声明 一次数据的结束; input_mt_sync() 会发出一个 SYN_MT_REPORT
Linux 自带的耳机拔插检测驱动是混在声卡驱动中,耳机拔插状态通过 input 子系统上报。
触摸屏子系统是通过input子系统来实现,对应设备节点 /dev/input/eventn,熟悉套路后重点放在硬件程序的编写
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git 视频观看 百问网驱动大全 Input子系统框架详解 参考资料: Linux 5.x内核文档 Documentation\input\input-programming.rst Documentation\input\event-codes.rst Linux 4.x内核文档
static struct s3c_ts_mach_info s3c_ts_platform __initdata = { .delay = 10000, /*转化延迟*/ .presc = 49, /*转化时钟分频*/ .oversampling_shift = 2, /*转化次数 1<<2 == 4次*/ .resol_bit = 12, /*转化进度*/ .s3c_adc_con = ADC_TYPE_2, }; /*s3c_ts所列的资源*/ static
当我们休眠时,如果想唤醒,则需要添加中断唤醒源,使得在休眠时,这些中断是设为开启的,当有中断来,则会退出唤醒,常见的中断源有按键,USB等.
输入设备种类很多,有GPIO按键、鼠标、电阻触摸屏、电容触摸屏、USB键盘、遥控手柄等等。 安装它能产生的数据类型,可以分为(前面3项比较容易理解,后面的就属于扩展了):
路径:/home/wells/tina-v853-open/tina-v853-open/device/config/chips/v851s/configs/lizard/board.dts(注意路径,要设置为自己的实际路径)
经过上一篇文章的学习,对USB HID驱动有了更多的了解,但是也产生了许多疑问,在后续的学习中解决了一些疑问,本篇文章先对已经解决的问题进行讲解。
Linux内核下的 drivers/input/keyboard/gpio_keys.c实现了一个体系结构无关的GPIO按键驱动,使用此按键驱动,只需在设备树gpio-key节点添加需要的按键子节点即可。驱动的实现非常简单,但是较适合于实现独立式按键驱动。
理想状况是:按下、松开按键,各产生一次中断,也只产生一次中断。 但是对于机械开关,它的金属弹片会反复震动。GPIO电平会反复变化,最后才稳定。一般是几十毫秒才会稳定。 如果不处理抖动的话,用户只操作一次按键,会发生多次中断,驱动程序可能会上报多个数据。
在linux内核系统中,各个模块、子系统之间是相互独立的。Linux内核可以通过通知链机制来获取由其它模块或子系统产生的它感兴趣的某些事件。
先来了解什么是输入设备? 常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等等,用户通过这些输入设备与 Linux 系统进行数据交换。
https://patchwork.kernel.org/patch/71857/
tina-v853-open/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/lcd
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115460.html原文链接:https://javaforall.cn
问1. 既然还没有"驱动程序",为何能知道是"android phone" 答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone" 提示你安装的是"设备驱动程序" USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序
以下是我对荣品开发板官方资料的补充,本人用的是淘宝购买的荣品RV1109 开发板,那么如何使用设备树来配置一个 GPIO 呢?
1、DTS相应修改: DTS相关代码:kernel/arch/arm/boot/dts/qcom/msm8909-qrd-skuc.dtsi: 1 sound { 2 compatible = "qcom,msm8x16-audio-codec"; 3 qcom,model = "msm8909-skuc-snd-card"; 4 qcom,msm-snd-card-id = <0>; 5 qcom,msm-codec-typ
从上图可以看到Linux系统将各异的设备分为三大类:字符设备,块设备和网络设备。内核针对每一类设备都提供了对应驱动模型架构,包括基本的内核设施和文件系统接口。
红黑树是一颗二叉搜索树,通过对任何一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因而是近似于平衡的。 树的每个结点包含5个属性,color,key,left,right,p。如果一个结点没有子结点或父结点,则该结点的响应指针属性的指为NIL。我们可以把这些NIL视为指向二叉搜索树的叶结点(外部节点)的指针,把带关键字的结点视为树的内部结点。 一颗红黑树是满足下面红黑性质的二叉搜索树: 1.每个结点或是红色的,或是黑色的。 2.根结点是黑色的。 3.每个叶子结点(NIL)是黑色的。 4.如果一个结点是红的,那么它的两个子结点都是黑的。 5.对每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑结点。 ——引用自《算法导论》 第十三章 红黑树 红黑树的性质
上篇文章介绍了LCD屏幕的使用,这个屏幕还有触摸功能,本篇就来介绍LCD的触摸功能的使用。
100ASK_V853-PRO开发板上共有5个功能按键,本章节跟大家讨论如何使能这五个按键。
TFT08006官方支持的一款MIPI屏幕,8寸,分辨率800*1280。官方套装支持触控。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154532.html原文链接:https://javaforall.cn
领取专属 10元无门槛券
手把手带您无忧上云