Android使用switch模块进行GPIO口检测(一)-->LINUX驱动部分

谈一个GPIO驱动 谈一个GPIO驱动 一切的操作其实都是gpio的变化,这也就是说gpio驱动是基本的入门,我想很多人应该对gpio都不陌生,从单片机stc89开始,一直都伴随着gpio的操作。mov P1 ,XX 之类的,不过如今咱们已经升级到arm上面的开发了,其实arm只是名字换了,操作也还是那样。所以今天我就献丑来谈一下关于arm11 s3c6410上面的gpio操作的驱动。。 首先必须了解的就是io口 阅读详情

费了两天时间将Switch模块熟悉了下并编写了LINUX部分的驱动程序,现在记录下。。。

Switch模块就是LINUX的GPIO口输入监测框架,位于/drivers/switch目录下,默认有switch_class.c与switch_gpio.c两个文件。

switch_class.c作为一个class看看就明白了,switch_gpio.c中在我看来是一个例子,可以仿照该例子自己新建相应的IO口驱动,

我的板子上有四个IO口需要监测,开始我是建立四个相应IO口驱动,然后发现这样做有些重复繁琐的感觉,就决定做一个switch_gpios.c文件,

将几个IO口检测驱动集成到一个文件中,然后就开动吧,主要修改的部分其实就是probe函数部分

过程参考了按键驱动部分,将所有引脚gpio_switch_platform_data结构打包为一个数组传到platform_device的dev.platform_data中,

然后在probe函数中解析出来,申请内存,申请IO中断,默认的IO触发条件为低电平,我按照这样做的结果是当该引脚电平拉低后系统直接卡住了。。。

所以我改成了上升沿与下降沿触发,并添加了工作队列结构,而非直接触发,因为要滤波的么。。。

其他再就没什么要注意的了。。。

Linux内核编程(三)gpio库函数驱动编写 Linux内核驱动gpio库函数编写 阅读详情

相关推荐

二阶锥松弛在配电网最优潮流计算中的应用(IEEE33节点配电网最优潮流算例matlab程序)(yalmip+cplex)

文献[7]建立了以支路潮流计算为基础的OPF模型,针对OPF中的非凸性约束,采用SOCR技术将其松弛为二阶锥约束,整个 OPF 模型则被转化为二阶锥规划( Second Order Cone Programming,SOCP)问题,对其求解可以得到全局最优解。其次结合辐射型配电网潮流特点建立支路潮流约束,并考虑配电网中的可控单元,包括分布式电源和离散、连续无功补偿装置,建立其出力约束,该模型为非凸非线性模型;式中,αj,t和βij,t分别为t时段内节点i电压的二次方和支路ij电流的二次方。

weixin_47365903的博客 1万+

linux下switch_gpio.c的使用

linux switch_gpio.c的使用

目前从事linux驱动开发,多交流多学习吧 661

cosmos-curate工业级视频数据预处理引擎/终端用户指南( end-user-guide)

摘要:Cosmos-Curate是一个用于视频和自动驾驶数据处理的开源工具,提供从本地到集群的完整部署方案。文档针对三类用户:终端用户(配置运行现有管道)、开发者(修改/创建管道)和贡献者(改进代码库)。核心功能包括容器化设计(Docker+NVIDIA工具链)、多平台支持(本地/Slurm/云)、集成HuggingFace/NGC模型,以及可扩展的管道架构。使用需满足硬件(如Ampere架构GPU)和软件(Ubuntu22.04+Python3.10)要求,通过CLI工具构建镜像、下载模型并运行示例管道(

qq_45053161的博客 1202

zynq linux内核驱动编写,【原创】Linux下驱动Zynq GPIO (Switch、button、led)

版权声明:本文由电子技术应用博主“cuter”发布。欢迎转载,但不得擅自更改博文内容,也不得用于任何盈利目的。转载时不得删除作者简介和作者单位简介。如有盗用而不说明出处引起的版权纠纷,由盗用者自负。博客官方地址:1硬件设计:1.1) Vivado Block Design1.1.1)设计自主AXI-Lite IP核关键逻辑如下:下图所示的是寄存器读操作,主要目的是为了读取led、switch和bu...

weixin_33246707的博客 1024

如何用Lmcache+vllm优化KVcache存储?CPU与SSD性能实测对比

本文通过实测对比,详细介绍了如何利用Lmcache+vLLM将大模型推理中的KV Cache卸载至CPU内存或SSD硬盘,以解决长上下文场景下的GPU显存瓶颈。测试数据显示,CPU卸载方案在首字延迟(TTFT)上显著优于SSD方案,但SSD方案在存储成本上更具优势。文章提供了完整的配置指南、性能数据分析和生产环境选型建议。

fire9的博客 985

pgpool-II安装部署

文章介绍了pgpool-II的核心功能、架构组成以及实际部署的关键配置步骤

weixin_41690116的博客 1422

Android drivers/switch驱动详解(用于通过GPIO状态检测耳机、HDMI等的插拔状态)

相关文件: /drivers/switch/switch_gpio.c /drivers/switch/switch_class.c 节点创建流程: 1、在/sys/class/目录下创建“switch”类,创建完成后出现/sys/class/switch,具体实现如下: struct class *switch_class; switch_class

人工智能,深度学习,人脸识别 7699

python进行windows系统UI自动化之【pyautoit】

一般以我们平时操作,会从下图上方的地址栏进行操作,这里注意可以直接从下方的文件名处,输入对应的绝对地址,如:F:\程序设计书籍\《啊哈!pyautoit 是一个用python写的基于AutoItX3.dll的接口库,用来进行windows窗口的一系列操作,也支持鼠标键盘的操作。点击上访的图标,进行拖拉,到想访问的位置,注意下图两个红框中的数值,上面的框表示页面的标题和类,下面的框表示控件的类和序号(一般连起来使用)打开Auto Window Info(x64)或Auto Window Info(x86)

weixin_43936332的博客 9314

linux字符驱动之poll机制GPIO状态监测驱动

应用背景: 1、A20全志方案; 2、Linux系统; 3、两个GPIO口,一个用于检测门的状态(门开或门关),一个用于检测开门按钮是否按下; 4、生成两个字符设备:/dev/doorstate和/dev/doorstate,生成通过select函数监测; #include #include #include #include #include #i

人工智能,深度学习,人脸识别 4589

YOLO26涨点改进| TGRS 2026 | 独家创新首发、注意力改进篇| 引入CSSCA频谱-空间交叉注意力,含多种创新改进,小目标检测、图像分割、高光谱图像分类、语义分割任务任务涨点

🔥本文提出CSSCA(频谱-空间交叉注意力)模块,通过中心像素引导的光谱与空间交叉注意力机制,有效提升YOLO26模型的特征表达能力。该模块实现了光谱与空间信息的协同优化,能够自适应强化关键通道与重要空间区域,增强模型对小目标和复杂场景的感知能力。文章详细介绍了CSSCA的网络结构、工作原理及四大优势,包括精准特征表达、协同信息优化、小样本适应性和轻量化设计。同时提供了完整的代码实现和四种改进方案的YAML配置文件,包括基础版、增强版、C3k2融合版和C2PSA融合版,为YOLO26模型的性能提升

Ai缝合怪、助力小伙伴高效发论文 265

华为OD机试真题2025双机位C卷 C++ 实现【卡牌游戏】

小明正在尝试一种新的牌游戏。游戏规则只如下:首先,小明拿到一张写有数字m的牌。 然后,他会拿到另外n张牌,上面分别写有不同的数字,牌排成一排。小明的目标是从这排牌中找到一串连续的牌,这些牌上数字的总和可以被 m整除。你的任务是判断小明是否可以完成这个目标。

MISAYAONE的博客 280

第二章 microblaze通过switch开关ip运行led以及SDK的开发技巧

microblaze通过switch开关ip运行led以及SDK的开发技巧

dcc1120的博客 1027

9、储备池学习:从学习到学习的新范式

本文探讨了基于学习到学习(L2L)框架的储备池计算新范式,提出通过在外循环中优化储备池的超参数(如递归连接权重、输入权重和读出初始化),以提升其在多种任务中的内循环学习性能。研究展示了两种主要实验设置:一是优化储备池用于回归二阶Volterra滤波器任务,显著优于随机基线;二是实现无需调整读出权重、仅依赖内部动态学习非线性函数的能力,表明储备池可快速构建目标函数的内部模型并安装任务先验知识。结合流程图与表格,文章系统呈现了L2L的训练流程、技术细节及实验结果,并讨论了性能提升、泛化能力等开放问题,指出了未来

ujm56789012的博客 502

linux驱动 — switch_dev类设备的使用

前言 在项目中碰到有人用switch_dev_register注册了switch_dev类设备,并且应用层能读到它的状态信息,感觉挺好奇,于是网上搜了些资料,自个又琢磨了一下,算是理解了,现在整理一下。 switch_dev是一个开关设备类,跟其它很多类一样的,像misc类,都是对一类设备的总称,使用起来很简单,大部分工作内核已经给你干了,通过switch_dev_register函数注册switch_dev类之后,系统会自动在/sys/class下生成你定义的文件夹,可以进入/sys/class/swit

上官绝痕的专栏 2918

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

linux switch 以及PHY

或反过来将网线传输过来的模拟信号,转换成数字信号,给soc,phy芯片一般有,控制接口(MDC/DMIO,I2C,SPI),数据接口(RGMII / GMII/MII)。个人理解是,是时序逻辑控制器,比如iic,spi,控制发送起始信号,发送数据,停止信号,控制时序的产生。PHY: 单纯的物理层芯片,就是将数字信号转模拟信号,将soc发过来的数字信号,转换成模拟信号,通过网线,发送出去,有些soc只有一个网卡接口,可以接一个Switch,接多个phy,Switch实现转发功能。

rjszcb的博客 1893

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

linux kernel switch driver(android headset device detection) 例如(耳机)

android native层的input flinger会去读这个event,读到后往android java层notify,notify给InputManagerService/WiredAccessoryManager,WiredAccessoryManager在处理这个msg,比如当收到的msg表示有耳机接入时,会将外放mute掉。上面的CallVoidMethod调用就是native层call java层的函数,call的对应的java层的函数是InputManagerService类中的方法。.

aningxiaoxixi的博客 744

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android Switch驱动的耳机检测

这个 switch_gpio.c 文件中,就是实现了一个由 GPIO 变化来触发的 switch 动作,当设备匹配上时,会注册一个 GPIO 中断,在中断处理函数中,可以看到它会先获取gpio的值,然后设置switch的状态。在这个函数中,会创建两个文件,一个是保存状态的文件,一个是保存名称的文件,其中状态就开关量的表现,在这个文件中还有一个改变状态的方法。在 Android 中添加了一个 switch 驱动,用于监测一些开关的变化,例如:HDMI、耳机的插拔检测之类的。为什么命名为 h2w?

DengCaixiang2021的博客 2057

android switch模块

前面我们已经提到过Android新增了一个switch处理模块,但是没有说明其具体用途,这里将对该模块进行详细的分析。switch是Android引进的一个新驱动,用于检测一些开关量。比如检测耳机插入和USB设备插入等。 Switch的构架原理 switch模块包含两部分内容:首先是switchclass,它在Android中是作为一个module来实现的,可以进行动态加载

baimingyong007的专栏 2843

Linux内核中常用的功能实例

switch上报功能:通过switch类上报内核状态值

QQ135102692的博客 652

树莓派GPIO口的常用配置代码

import RPi.GPIO as GPIO #导入GPIO模块 GPIO.setmode(GPIO.BCM) #设定编号模式 GPIO.setwarnings(False) #关闭警告说明 GPIO.setup(1, GPIO.IN) #设置引脚1(BCM编号)为输入通道 GPIO.setup(2, GPIO.OUT) #设置引脚2为输出通道 value=GPIO.input(1) #读取通...

qq_42759243的博客 1542

第22篇:Linux系统的Switch字符设备驱动设计

编写设计DE1-SoC-UP Linux系统的Switch字符设备驱动程序

weixin_47841246的博客 467

简析Android对Linux内核的改动-(下)

2 、YAFFS2     不同于PC机(文件是存储在硬盘上的),手机使用FLASH作为存储介质。HTC的G1使用的是NAND FLASH——这种存储目前已经相当普及了,而且种类也颇多(如SLC、MLC等),存储密度也越来越高(已经出现几十GB大小的NANDFLASH),价格也

JuanA1的专栏 5195

DA9034驱动程序阅读笔记(4)

 转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D|D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。DA9034的耳机插拔检测和线控开关检测的原理比较简单,因为不同状态电压不一

国产开源 GUI 引擎 AWTK 7896

Linux驱动开发——网络设备驱动(理论篇)

网络设备驱动是 Linux 的第三大类驱动,也是我们学习的最后一类 Linux 驱动。这里我们首先简单学习一下网络协议层次结构,然后简单讨论 Linux 内核中网络实现的层次结构。接下来着重介绍了网络设备驱动所涉及的核心数据结构和函数接口。在此基础之上实现了一个虚拟的网络设备驱动,并以该驱动框架为蓝本,分析了 DM9000 网卡的驱动。最后简单介绍了 NAPI的意义和实现过程。

qq_52479948的博客 4535

Linux驱动开发——网络设备驱动(实战篇)

以DM9000为例举例一个网络设备的编写,介绍一下NAPI机制。

qq_52479948的博客 4454

想了解Linux字符设备驱动?来看这篇!

由于驱动程序是内核程序,所以我们所必需的有1.Linux内核,可以在Linux官网下载,我这里使用了Linux3.142.交叉编译工具链,用于交叉编译环境一些其他的环境,诸如根文件系统,设备树文件等倘若需要可自行添加,如果只是用虚拟机模拟驱动那这两个已经足矣。英文:Device Driver简称:驱动(Driver)一种添加到操作系统中的特殊程序,主要作用是协助操作系统完成应用程序与对应硬件设备之间数据传送的功能简言之,设备驱动程序就是操作系统中“驱动”对应硬件设备使之能正常工作的代码。

m0_64432298的博客 1657
上一篇: 系统开启桌面小部件支持
下一篇: Android使用switch模块进行GPIO口检测(二)-->Android内核部分
路过&
博客等级 码龄19年 126粉丝 91原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值