首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

想玩红白机游戏?先做一个游戏手柄

玩的第一个游戏是超级玛丽,第二个是魂斗罗。很长一段时间里,我一直以为游戏角色吃了花之后,变身成了一个厨师,而厨师发射的子弹是土豆… ? 原谅我当时的想象力(有没有跟我想的一样的????)...再后来,高中毕业,网吧网游兴起,游戏厅没落了,我似乎忘了这些东西的存在。大学时候玩的是跑跑卡丁车、征途、天龙八部、魔兽争霸。寒暑假的时候,去商场溜达,偶尔还能看到一两家游戏厅,里面的游戏大部分还在。...再后来知道有模拟器这种东西,可以在电脑上玩这类游戏。小激动了一把,下载了一个。没有手柄,就在键盘上玩吧,也还算玩的开心! 这段时间闲在家里无所事事,忽然想在模拟器上玩红白机!...想到之前没有手柄,后来有人送了两个,研究手柄的兴趣顿时高过了玩红白机游戏。 找了找,在网上找到了一个基于STM32的USB游戏手柄的方案。外形如下: ?...它只是借了一个游戏手柄的壳子,里面电路乱的一团糟: ?

61110
您找到你想要的搜索结果了吗?
是的
没有找到

原创 Paper | USB设备开发:从入门到实践指南(三)

2 Linux内核INPUT子系统简述 参考资料 因为暂时没有开发input相关驱动的打算,所以并不会深入讲解input驱动的各项细节,本章节的目标是让读者读完以后,在心中能对input驱动的运作模式有个大致的了解...2.2 注册手柄驱动 目前Linux下绝大部分手柄的客户端程序都是通过读取/dev/input/jsX文件获取手柄输入的数据,在上一篇Paper中,我们模拟的XBox手柄就能成功生成/dev/input...至于为什么Nintendo手柄会在Linux手柄驱动的黑名单中无从得知,只能从代码的注释中猜测一二:一般手柄会带有加速度传感器,用来玩一些支持体感类的游戏,比如健身环,可能Nintendo手柄的加速度传感器的功能在...Linux驱动中还未实现,从joydev_event可以看出,Linux手柄驱动仅支持坐标系和按键功能,所以把支持加速度传感器的手柄给禁用了。...3 总结 参考资 到本篇文章结束,关于USB游戏手柄部分的研究就结束了,接下来就是研究其他USB设备,经过了USB游戏手柄的一番折腾,对USB HID驱动还有input驱动都有了一定的了解,对后续的研究也能有非常大的助力

9410

原创 Paper | USB设备开发:从入门到实践指南(二)

2 模拟 USB 游戏手柄 参考资料 第二部分就是本篇的核心内容:模拟一个USB游戏手柄。 该部分内容说简单也简单,在能成功模拟USB鼠标键盘之后,也可以很容易的模拟出一个USB游戏手柄。...,而游戏手柄驱动会根据idVendor/idProduct匹配到该USB设备,在Linux上,手柄驱动的代码一般位于drivers/input/joystick/xpad.c,可以查看该驱动中能识别的部分...,但是却报了一堆的错误,猜测是这些错误导致手柄驱动注册失败,在Linux下能被正常识别的手柄应该像上面的案例一样,能在/dev/input/目录下生成jsX和eventX文件,因为在Linux上使用手柄的软件都是通过...另外因为测试使用的Linux是装在Windows上的虚拟机,vmware在Windows上安装了一个USB驱动,来让主机接入虚拟机当中的,可能是同样的BUG导致在Linux系统上也无法正常识别到手柄相关驱动...4 本篇总结 参考资 通过本篇文章,我们了解了如何模拟一个USB鼠标,USB游戏手柄设备,并且可以学习如何对Linux内核中的HID驱动进行修改然后输出相关调试信息。

7510

Linux驱动之网卡驱动剖析

Linux 网络设备驱动架构 驱动架构自上而下分为4层: 协议接口层 设备接口层 设备驱动功能层 网络设备与媒介层 协议接口层 协议接口层主要功能是给上层协议提供接收和发送的接口。...传递的数据被描述为套接字缓冲区,用struct sk_buff结构描述,该结构体定义位于include/linux/skbuff.h中,用于在Linux网络子系统中的各层之间传输数据,该结构在整个网络收发过程中贯穿始终...设备驱动功能层 类似于字符设备,struct net_device结构体也提供了一个操作函数集struct net_device_ops来描述对网卡的各种操作。...源码分析 笔者基于的是 S5PV210 的 DM9000 驱动,会大体上对 DM9000 的驱动源码进行分析, 分析源码位于DM9000 源码 platform 框架分析 DM9000 的驱动是基于 platform...return platform_driver_register(&dm9000_driver); } 该函数调用了 platform_driver_register 函数注册了一个平台总线驱动

55.4K20

Linux驱动开发: USB驱动开发

自微软在Windows 98中加入对USB接口的支持后,USB接口才推广开来,USB设备也日渐增多,如数码相机、摄像头、扫描仪、游戏杆、打印机、键盘、鼠标等等,其中应用最广的就是摄像头和U盘了。...四、 linux内核下USB相关的API函数与数据结构 前面介绍了USB相关一些基础概念与重要的数据结构,接下来就分析在linux内核中如何编写一个USB 驱动程序,编写与一个USB设备驱动程序的方法和其他总线驱动方式类似...(中断传输方式) 5.1 USB驱动注册框架代码 #include #include #include /*...[root@wbyq linux-3.5]# make menuconfig 由于内核自带了usb鼠标驱动,所以需要去除: Device Drivers ---> HID support...#include /* 本程序为USB鼠标驱动程序,要安装本驱动,需要先将内核自带的USB驱动程序卸载掉 */ //定义USB的IDTAB 24ae:2002 static

69.2K20

给PS4装上Linux,然后用Xbox手柄打任天堂游戏?网友:这场面我没见过

丰色 发自 凹非寺 量子位 | 公众号 QbitAI 在PS4上用Xbox手柄打任天堂游戏,是一种怎样的体验?...然后打开PS4上的内置Web浏览器,进入下面这个“漏洞利用”网址: 点击GoldHenV2.1对PS主机进行越狱,按照提示插入USB驱动等待系统自动完成后拔掉。...接着就可以再次插入带有Linux引导加载程序的USB驱动,再次进入上面那个网站,选择一个Linux有效负载。 如果你的PS4内存为8GB,选2GB代表6GB将分给RAM,2GB分给显存。...由此,PS上就成功装上了Linux,变成了双系统。 下面就可以“开动”了: 比如用模拟器Dolphin Emulator就能玩任天堂游戏。...Modded Warfare博主自己测试发现:在Linux上运行模拟器玩ps1的游戏、任天堂64的塞尔达传说……都比在破解版PS4操作系统上运行模拟器更流畅。

79520

Linux——Linux驱动之基本理论常识总结(什么是Linux驱动Linux驱动需要掌握哪些?)

2 Linux驱动程序需要掌握的内容 3 Linux驱动可参考的资源 4 ARM处理器体系架构 5 ARM的前世今生 ---- 0 引言 前面Linux专题中关于Linux下系统编程总结了17篇博文,主要是为了提高...Linux下的C编程应用能力,熟悉Linux编程应用环境,从此篇博文起开始Linux驱动的总结,后面计划加一些综合实践项目练习。...Linux驱动可参考的资源 Linux本身就是一个开源软件,开源的好处大家都知道,资料丰富,我们做Linux驱动开发,能找到技术支持和相应资源的有如下,列出的,对于新手来说,建议最佳的顺序是从1到5:...对上:Linux设备驱动给上层提供调用的接口; 对中:Linux设备驱动要注册到内核中,标准说法是 挂载在总线上; 对下:直接操作硬件,如GPIO、IIC、SPI、PWM等; 以上三个,Linux内核都提供了大量的接口函数...、结构体,其实Linux驱动,就是掌握了这些东西怎么用,适应到自己要写的驱动程序中。

8.1K30

Linux SPI 驱动

四、指纹SPI设备驱动框架 在对硬件有了较高的基础理解后,其实代码主要就是开始对SPI的接口做的软件实现了。...由于平台厂商通常给我们做好了spicontroller以及spicore部分,接下来的总结主要是针对SPI设备驱动部分的。...代码部分均来自于linuxkernel开源代码https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/?...五、总结 个人理解现在这个科技发展的风口下,手机、IOT、车机等终端设备齐放异彩的大背景下,新终端生态的搭建、基础智能设备的整合、大健康的趋势下,Sensor的发展是一个非常关键的驱动力,基础驱动软件能力的掌握也是重中之重...,linux给了我们一个很好的平台让我们能在前辈的肩上进行各种高质量的代码学习,我们也需抓住这个机会,在做好本质工作的基础上静心努力钻研,不断前行,祝愿各位也祝愿我自己在技术的道路上越走越远。

18.2K12

Linux笔记】Linux驱动基础

上一篇分享的:从单片机工程师的角度看嵌入式Linux中有简单提到Linux的三大类驱动: ? 我们学习编程的时候都会从hello程序开始。...同样的,学习Linux驱动我们也从最简单的hello驱动学起。...但是,在嵌入式Linux中,驱动和应用的分层是特别明显的,最直观的感受就是驱动程序是一个.c文件里,应用程序是另一个.c文件。...我们前面说了驱动的装载方式之一的动态装载:把驱动程序编译成模块,再动态装载。动态装载的体现就是开发板已经启动运行了Linux内核,我们通过开发板串口终端使用命令来装载驱动。...以上就是分享关于驱动一些内容,通过以上分析,我们知道,其是有套路(就是常说的驱动框架)可寻的,比如: #include #include <linux/kernel.h

25.8K54

光学追踪+裸手识别,是时候跟游戏手柄说再见了吗?

手柄作为一种成熟且被广泛接受的交互工具,在需要精确输入或复杂操作的情况下,例如一些游戏或绘画、手术模拟等专业训练中,通常可以提供更好的体验。...PICO 最新一代无灯环小手柄。新手柄 LED 灯减少且均在手柄内,更容易被手部遮挡,因此对手柄追踪的鲁棒性带来重大挑战。...在高难度的快速运动场景下,我们通过不断优化端到端的时序模型、千万级高精训练集,以及 MTP(Motion to Photon,动显延迟)测试方案,目前算法延迟与追踪丢失率在全球范围能做到技术领先,给用户在游戏与运动场景带来了流畅且稳定的体验...如今,数据驱动的 AI 正以前所未有的方式塑造着未来,尤其在 XR 领域,由于硬件和算法持续快速迭代,数据的效率、质量和可扩展性对于开发交互式 AI 算法至关重要。...「裸手+手柄」的融合式交互方案,结合了裸手追踪的直观性和手柄输入的精确性,既能提供自然、直观的体验,又能实现精确、细致的操作,对游戏、教育、医疗、设计等领域具有强大吸引力,有望成为未来 2~3 年行业的主流交互趋势

19330

Linux驱动开发: 块设备驱动开发

块设备是与字符设备并列的概念, 这两类设备在 Linux驱动的结构有较大差异,总体而言, 块设备驱动比字符设备驱动要复杂得多,在 I/O 操作上表现出极大的不同,缓冲、 I/O 调度、请求队列等都是与块设备驱动相关的概念...在Linux中,驱动对块设备的输入或输出(I/O)操作,都会向块设备发出一个请求,在驱动中用request结构体描述。...但对于一些磁盘设备而言请求的速度很慢,这时候内核就提供一种队列的机制把这些I/O请求添加到队列中(即:请求队列),在驱动中用request_queue结构体描述。...编写块设备驱动时,使用的一些单位介绍: 1. 扇区(Sectors):任何块设备硬件对数据处理的基本单位。通常,1个扇区的大小为512字节。(对设备而言) 2....绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。

31.8K30

linux设备驱动第四篇:linux驱动调试方法

在普通的c应用程序中,我们经常使用printf来输出信息,或者使用gdb来调试程序,那么驱动程序如何调试呢?...下面就根据一个简单的实例来说明如何调试驱动程序。...如何根据oops定位代码行 我们借用linux设备驱动第二篇:构造和运行模块里面的hello world程序来演示出错的情况,含有错误代码的hello world如下: #include <linux/...以上就是通过oops信息来定位驱动崩溃的行号。...printk的使用方法类似printf,只是要注意一下打印级别,详细介绍在linux设备驱动第二篇:构造和运行模块中已有描述,另外需要注意的是大量使用printk会严重拖慢系统,所以使用过程中也要注意。

10.3K171

Linux电源驱动-Linux Cpuidle Framework

前言 现如今,Linux处理器电源管理重点聚焦在处理器处于运行状态时对其进行电源管理,主要的技术是Cpufreq: 根据cpu的负载,实时的改变cpu的频率或这电压,同时管理处理器的性能水平和电源功耗等...面对在火热移动处理器市场的前提下,众多处理器都亟待加入到空闲状态下进行功耗管理,这时候linux系统就需要一套通用的架构来管理这些cpu,这就是本文的标题: Linux Cpuidle Framework...linux使用cpuidle_state结构用来表示各个idle状态。...对该cpu下的idle状态,需要一个统一的管理者,这时候cpuidle驱动就来管理该cpu下的各种状态。linux使用cpuidle_driver结构来表示cpuidle的驱动。...linux系统使用cpuidle_device结构抽象每个cpu core,可以简单认为cpuidle_device对应到每个cpu core上。

22.1K20
领券