所以我正在摆弄Raspberry Pi,它有点像我这样说"所有这些驱动程序来自哪里".就像我们在他们身上使用的SNES控制器一样......究竟是怎么一个人想出怎么写的.
我体面地了解C,C++ ......好吧.但这一直是我有点想过的事情.这很酷,因为它的水平足够低,无法理解硬件方面的可能性......但也很了解操作系统.
我从哪里开始这样的事情?我猜这样做是为了让Windows与WAYYYY不同.
谢谢
在我看来,这里确实有两个问题,彼此之间并没有多大关系。
第一个是“Linux 对设备驱动程序有什么要求?” 这几乎总是可以通过阅读文档来回答。尽管设备驱动程序文档可能(可以说)不如编写普通程序的文档彻底、完整、易于阅读等,但它仍然相当不错。与普通代码最大的区别可能是调试,这通常是通过简单地用printk.
另一个问题是这样的:“你如何弄清楚 SNES 控制器等特定硬件使用什么协议(或“协议”)。当你开发普通硬盘或键盘之类的东西时,你可以很容易地只需遵循文档即可。您可能(经常这样做,至少根据我的经验)发现您需要补偿硬件中的一些错误,但除此之外,它(再次)相当正常的编程。相当多的最大挑战这些情况只是决定如何将有问题的特定设备呈现给系统的其余部分。对于像硬盘驱动器这样的东西通常非常简单,但对于像人机界面设备这样的东西,它可能更具挑战性(例如,您想要将其呈现为本身,还是想要模拟某些现有类型的设备(例如键盘或鼠标)?)
对于没有真正记录的硬件,事情可能会变得更加困难。用于查看逻辑信号的真正通用工具是逻辑分析仪。如果您有使用众所周知的硬件接口(例如,PS/2 键盘/鼠标、USB、SATA)的东西,您可以找到更专业的工具(和/或逻辑分析仪的附加组件),让生活变得更加美好更轻松。像 NES 或 SNES 控制器这样的东西几乎肯定使用专有接口,因此对于这些,您最终可能会使用逻辑分析仪。幸运的是,它们也可能是一个非常狭窄、缓慢的接口,因此逻辑分析仪不需要非常快或支持大量通道。
使用逻辑分析仪,您可以看到所有单独的信号,但对于专有接口,您几乎需要弄清楚哪些信号做什么。在典型情况下,您至少会有一些相当明显的:电源、接地、很可能是时钟等等。在相当多的情况下,您很快就会发现,即使没有公开记录,它也可能遵循一些众所周知的协议,如 I 2 C、SPI 等。
| 归档时间: |
|
| 查看次数: |
1691 次 |
| 最近记录: |