linux GPIO模拟PS2 键盘驱动

linux驱动--GPIO     第一天写博客,先从工作最简单、最基础的写起,希望在未来的时光里,对有缘看见这篇文章的你和不断成长的自己又一些帮助吧。    一、概述        GPIO中断时linux驱动开发最基础,最简单驱动。可以在内核驱动中设置使用GPIO,也可以在应用层模拟使用,查看GPIO的使用情况,为在驱动中使用某个引脚做测试。内核已经有一套完整的GPIO驱动了,只要会调用各个接口去使用起来就行了。内核将... 阅读详情

背景:公司有一个PS2键盘驱动的项目,没有控制器,需要模拟PS2协议,检测按键并通过input子系统将按键时间上报

一、准备:

        1、PS2协议:

                PS2有两个控制线,时钟线和数据线。当按键按下或抬起,设备会向主机发送键码。时钟由设备产生,主机需要在下降沿去数据线采集一位数据。按键码由多个11位数据组成:0 (起始)+ 8位(数据)+1/0(奇偶校验位)+1(结束位)。数据位是先发的低位!

             PS2接口是以前台式电脑后边留的圆形接口,6个引脚,主要用VCC,GND,clk,data。与AT(5脚)一样

        2、键码:

                PS2键码大致分为两类:

                   第1类按键 通码为一个字节,断码为0xF0+通码形式。如A键,其通码为0x1C;断码为0xF0 0x1C。

                   第2类按键 通码为两字节0xE0+0xXX形式,断码为0xE0+0xF0+0xXX形式。如Right Ctrl键,其通码为0xE0 0x14;断码为0xE0 0xF0 0x14。

                    通码为按下,段码为抬起

        3、input 子系统下的PS2键盘驱动(因为没有驱动器,没有使用这个框架):

               1,Linux X86 PS/2 键盘驱动框架流程(以下均已Intel 8042键盘控制器为例): 
               1.1 设备初始化注册流程: 
                    键盘控制器硬件驱动(i8042.c) -> 串口驱动核心(serio.c) -> 串口驱动(atkbd.c) 
                    -> 输入驱动核心(input.c) -> 输入事件驱动程序(keyboard.c) -> 虚拟控制台驱动模块;

                    注册流程: 
                    1.1.1,键盘控制器硬件驱动(i8042.c): 

                    1)、首先键盘硬件驱动程序读写键盘硬件控制器寄存器,配置寄存器并获取相控制器硬件信息(PS/2键盘控制器一共有三个寄存器加一个命令端口,命令数量也不多,下载地址:https://download.csdn.net/download/a372048518/9835565) 

               注意:Intel8042键盘控制器内部已经实现了PS/2时序协议,硬件驱动程序只需要读写相关寄存器即可;

                    2)、将8042键盘控制器作为平台设备(struct platform_device)挂接在平台总线(struct bus_type)上,并将获取到的硬件信息及相关软件数据结构信息保存在平台设备实例中;

              
F1C200S嵌入式Linux掌机硬件设计与驱动实践 嵌入式Linux系统是资源受限场景下实现高可控性与深度定制的核心技术栈,其原理涉及BootROM启动流程、设备树驱动模型、内存管理与中断调度等底层机制。该技术具备低功耗、高确定性、强可调试性等工程价值,广泛应用于工业控制、智能终端及复古计算平台。在便携游戏设备领域,基于ARM9架构的F1C200S SoC凭借内置LCD控制器、DDR1支持及主线Linux兼容性,成为嵌入式Linux驱动开发与模拟器性能优化的理想教学载体;其GPIO矩阵键盘、RGB并行屏、Class D音频通路等典型外设设计,为理解硬件协同与 阅读详情

相关推荐

树莓派复古街机DIY:从GPIO引脚映射到RetroPie系统配置全攻略

GPIO(通用输入输出)接口是嵌入式硬件与外部世界交互的核心通道,其原理是通过引脚电平变化实现信号输入与输出控制。在树莓派等开源硬件平台上,GPIO的价值在于为爱好者提供了灵活、低成本的物理计算与硬件交互能力,广泛应用于智能家居、机器人、物联网原型开发等领域。本文聚焦于一个经典且富有成就感的工程实践场景——利用树莓派的GPIO接口连接街机摇杆与按钮,构建一个完整的复古游戏机输入控制系统。通过详细的引脚映射、电路连接与系统配置指南,并结合RetroPie这一流行的开源游戏模拟器平台,手把手教你实现从硬件组装到

weixin_33859231的博客 406

GPIO直接解析PS2标准键盘linux驱动程序

使用lpc3250的GPIO直接接ps/2标准键盘PS2 clock口线必须接中断

PS/2接口协议深度解析:从硬件电气特性到FPGA/MCU实现

同步串行通信协议是嵌入式系统中设备与主机间可靠数据交换的基石,其核心在于通过共享时钟信号严格同步每一位数据的传输时序。PS/2协议作为一种经典的同步串行协议,采用集电极开路输出和奇校验机制,确保了在电气噪声环境下的通信可靠性。其技术价值体现在极低的协议开销、无需复杂驱动的即插即用特性以及对系统资源的极低占用,这使得它在实时性要求高的场景中具有独特优势。典型的应用场景包括工业控制面板的键盘输入、嵌入式人机交互接口以及需要与早期系统BIOS直接交互的底层硬件开发。本文以PS/2接口为例,深入剖析其电气特性、通信

weixin_30613343的博客 399

linuxps2键盘驱动

uclinux 下做的一个PS2键盘驱动 希望大家一起分享

使用 gpio 模拟 ps/2 接口对 Linux 实时性的要求

v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);} Normal 0 7.8 磅 0 2

zjujoe的专栏 2969

linux ps2键盘驱动,通用键盘鼠标模拟(包括USB和PS2)

通过直接调用Kbdclass的回调函数KeyboardClassServiceCallback直接给上层发送键盘驱动。这个方法网上已经公开,参考Hook KeyboardClassServiceCallback实现键盘 Logger,其他的还有很多,可以到网上去查。简单说一下没有公开的部分,就是按下和松开的模拟,已经扩展键的模拟模拟主要是构造KEYBOARD_INPUT_DATA结构,按下和松开...

weixin_31221157的博客 920

Linux驱动开发】PS2游戏手柄驱动开发与输入子系统框架

文章目录为什么需要输入子系统框架输入子系统框架驱动层事件处理层注册输入设备函数:注销输入设备函数:驱动实现——初始化(事件支持)驱动实现——报告事件驱动实现——报告结束关于事件报告的实现方法中断实现 常用于实体按键内核定时器实现,用于没有触发信号的输入事件PS2驱动开发硬件原理软件实现 为什么需要输入子系统框架 我们首先来看字符类驱动框架: 1)写file_operations结构体的成员函数: .open()、.read()、.write() 2)在入口函数里通过register_chrdev()创建驱动

yy197696的博客 1491

linux ps2键盘驱动,Linux下USB模拟ps2鼠标驱动

在linu-kernel/drivers/input/mouse/psmouse-base.c是ps2鼠标驱动的主体,如psmouse_reset、psmouse_connect等函数具体实现在此文件之中。简单地,拿psmouse_reset为例,调用ps2_command()->ps2_sendbyte()->serio_write()来完成对硬件的操作。而serio_write()...

weixin_34369521的博客 986

linux内核按键驱动,linux系统和驱动中按键驱动的编写详解

我们改了compitable的内容,同时要关注inerrupts,xlnx,all-inputs,xlnx,gpio-width这些属性。Gpio-width是宽度,all-inputs是表示为输入。设备树修改完后就可以编译设备树文件,然后用fsbl,u-boot,设备树来制作boot.bin了。放到SD卡,启动linux系统。接下来进入关键环节,key驱动的编写。2. 按键驱动代码剖析对于一个刚...

weixin_39740272的博客 240

linux 键盘驱动

用c编写的键盘驱动程序,能在开发板上运行

树莓派4B打造迷你PS5:复古游戏主机DIY全攻略

模拟器技术通过软件模拟旧硬件环境,让经典游戏在现代设备上重生。其核心原理是精确复制原硬件的CPU指令集、图形与音频处理单元,实现跨平台兼容。这项技术的价值在于保存游戏文化遗产,降低怀旧游戏的门槛,并激发硬件改造的创意。应用场景广泛,从个人复古游戏终端到小型街机复刻均可实现。本文以树莓派4B为核心,结合RetroPie/Batocera系统,详细讲解如何从硬件选型、散热设计、外壳3D打印,到软件配置、模拟器优化(特别是PS1、PSP及部分PS2游戏),打造一台兼具PS5美学与实用功能的客厅迷你游戏主机,并融入

weixin_33860528的博客 407

深入Linux输入子系统:从驱动开发到调试实战全解析

Linux系统开发中,输入子系统是连接物理输入设备与用户应用的核心框架,它遵循机制与策略分离的设计哲学。其核心原理基于典型的三层架构:驱动层负责硬件交互与原始数据采集,核心层进行事件路由与抽象,事件层则通过标准接口(如evdev)向用户空间提供统一的事件流。这一设计的技术价值在于实现了硬件多样性的统一抽象,为上层应用提供了稳定、一致的输入API。在嵌入式设备、工控HMI、移动终端等应用场景中,深入理解输入子系统对于开发稳定的触摸屏、键盘、鼠标等设备驱动至关重要。本文聚焦于input_register_de

weixin_29174013的博客 262

基于ESP32-S3的Cardputer复古游戏站:从硬件驱动模拟器集成的嵌入式实战

嵌入式系统开发是连接硬件与软件的核心技术领域,其原理在于通过微控制器(如ESP32系列)直接操作外设、管理资源并运行实时任务。这项技术的价值在于能够以极低的成本和功耗,构建出功能专一、响应迅速的智能设备,广泛应用于物联网、便携设备和消费电子等领域。在游戏与复古计算场景中,嵌入式开发使得在资源受限的平台上运行模拟器成为可能,这涉及到硬件驱动适配、实时渲染和输入处理等关键技术。本文聚焦于利用ESP32-S3芯片和Cardputer硬件平台,探讨如何解决“a fatal error occurred: faile

weixin_33895516的博客 343

Linux学习笔记(17.12)—— 基于输入子系统的按键驱动程序

Linux输入设备种类繁杂,常见的包括触摸屏、键盘、鼠标、摇杆等;这些输入设备属于字符设备,而linux将这些设备的共同特性抽象出来,Linux input 输入子系统就产生了。 1. 软件框架 ​ input输入子系统是一组驱动程序的集合,旨在支持Linux下的所有输入设备。大多数驱动程序位于drivers/input中,但也有相当一部分位于drivers/hid和drivers/platform中。 ​ 输入子系统的核心是输入模块,它必须在任何其他输入模块之前加载——它作为两组模块之间的通

glen_cao的博客 1437

PS2 键盘在win10下开机过程 收发的数据

PS2 rcv: EE send EE PS2 rcv: FF //复位命令,最重要, 要求回复FA, 延迟500ms后,发送AA (BAT成功标志) send FA send AA PS2 rcv: ED send FA PS2 rcv: 02 // 010 : Caps Lock Num Lock ScrollLock 使能小键盘 send FA PS2 rcv...

明天乌儿会歌唱 2053

ps2功能 gpio模拟linux驱动

【代码】ps2功能 gpio模拟linux驱动

baidu_37552881的博客 1069

PS2手柄移植到STM32上面的小笔记

一、硬件准备:战舰开发板、PS2手柄接收器、PS2手柄、连接线 二、硬件连接: PS2手柄接收器有六个引脚,和单片机连接IO口连接,如下图: 接收器信号 单片机IO GND GND VCC 3.3V DI/DAT PB12 DO/CMD PB13 CS PB14 CLK PB15 三、PS2通信简介 通讯时序如下,感觉和SPI很像,也是四线 DI与DO是一对同时传输的8 bit串行数据,传输的时候需要CS为低电平,CLK由高变低。 DO是单片机发送给接收器的信号。

wsq_666的博客 2万+

PS2非标准PC键盘调试心得

调试PS2的内容主要分为两个部分:1.设备(如键盘)发送数据给计算机。2.计算机在开机时设别设备。   调试的第一步,应先将设备(以下用键盘来代表设备)发送数据给计算机的通信协议调通, 这一步骤相对来说比较简单,调通后可以确保发送时序没有问题,因为在开机识别键盘时,需要应答计算机的命令。先用其他的好的键盘将你自己用单片机模拟PS2键盘带入计算机中,然后调试程序,最终使你的PS2键盘能和计算

wenze2010的专栏 1941
上一篇: linux驱动--GPIO
下一篇: Ubuntu tensorflow2.0安装
lonethy
博客等级 码龄8年 0粉丝 3原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值