0

我对设备驱动程序编程很感兴趣。我已经开始阅读LDD3,作者说

“要成为设备驱动程序员,您必须很好地了解您的特定设备”

谁能告诉我“了解您的特定设备”的含义是什么。在编写设备驱动程序之前我应该​​知道什么。

谢谢

4

2 回答 2

2

这是一个结合了软件和硬件的基本列表。

The Operating System driver API
The processor architecture as it relates to hardware interfacing
The 'bus' structure that interfaces the device hardware to the processor
Interrupt Handling
Dma Control
Processor Caching
Processor MMU control
OS Semaphores and scheduling
Data/Byte Alignment
Assembly language when needed
Control of Instruction Execution Order and Optimization
Consideration of performance issues

什么是 IO 和内存映射硬件?

http://www.cs.nmsu.edu/~pfeiffer/classes/473/notes/io.html

此链接讨论 Linux 设备驱动程序中的通用硬件访问。

http://www.linuxforu.com/2011/06/generic-hardware-access-in-linux/

这专门针对 USB 硬件

http://www.beyondlogic.org/usbnutshell/usb2.shtml

检查 lwn.net 它永远不会让设备驱动程序开发人员失望。

https://lwn.net/Archives/

最后但同样重要的是,他们拥有一切,CPU、内存、摄像头、PCI ..

http://www.hardwaresecrets.com/page/memory

于 2012-08-02T07:43:05.493 回答
2

-

嗨,我很高兴与大家分享我学到的东西。

是的,如果您想成为设备驱动程序程序员,了解您的设备是基本需求。我也想成为一名linux设备驱动程序员,甚至更多,虽然我有一些其他软件平台下的设备驱动经验。

你想接触它的原因是你想让它为你做点什么。

通常,它可以做什么是您必须知道的第一件事。很明显,您永远不会通过 UART 或 SPI 发送以太网帧,对吧?

世界上有各种各样的设备,如存储设备、FLASH、SD卡、硬盘;通讯设备、网卡、wifi;互连总线,PCI-express;有多少。

在那之后,您将关心的下一件事是如何实现您的目标。要访问设备、读取或写入,通常在处理器中嵌入一个控制器。在这里,当我说“处理器”时,它的意思是它是一个集成了各种控制器的核心,无论是pc桌面还是嵌入式系统领域。

控制器是您将面对的界面,用于在控制器后面的设备上工作。通过控制器,您可以要求设备做您想做的事情。在控制器中,有寄存器,这是软件可以触及的最深点。除此之外就是硬件,因为您是设备驱动程序程序员,您与硬件工程师沟通以完成工作是很常见的。

如果详细介绍寄存器,有控制寄存器用于告诉设备您想要它做什么,状态寄存器用于反映设备中正在进行的操作的状态,如果该设备支持中断,还有一些寄存器为您处理中断。

好吧,我差点忘了还有数据寄存器,用于存储要发送或写入的数据,或供用户读取的数据。根据具体实现,用于存储上层用户发送或写入的数据的寄存器与用于保存外部用户读取的数据的寄存器可以相同,也可以不同。

通常,如果你想让某人为你做某事,你应该先给他一些东西。谁想做什么,总得有一些投入吧?

总而言之,

动作(读、写或其他)+ 数据(您给予或要求)+ 状态(进度如何)

  1. 它可以做什么

  2. 它是如何做到的,如何组装命令单元,时间顺序?

  3. 一般来说,你必须提供什么才能达到你的目标
    ,你应该提供两种东西:

    如果你要求,在哪里存储你要求的东西;
    如果你给予,你给予的在哪里

  4. 它如何反映操作、轮询或中断的进度

嗯,这就是我想和你分享的全部内容。

谢谢。

于 2012-08-03T10:32:34.633 回答