LDD读书笔记第十二章-PCI驱动程序

PCI接口

PCI的设计目标:

  • 更好的传输性能
  • 平台无关性
  • 简化往系统中添加删除外设的工作

更多关于PCI的内容查看PCI规范

PCI寻址

Linux支持PCI域(16位),每个PCI域可以有256个总线(8位)每个总线上32个设备(5位)每个设备8种功能(3位)。
在硬件级每个功能由16位地址来表示(没有域),在linux中因为添加了域每个功能应该用32位来表示。
PCI总线中I/O空间使用32位地址总线,而内存空间可通过32位或64位来访问。

点击查看大图
[阅读全文] »

LDD读书笔记第六章-高级字符驱动程序操作(一)

ioctl

ioctl是用于控制设备的公共接口,设备除了需要处理读取写入之外还需要一些相关控制信息。这些控制信息就是由ioctl调用来完成
用户空间的ioctl原型为

1
int ioctl(int fd,unsigned long cmd,...);

后面的“…“表示函数的参数个数是可变的(如printf)。
内核空间的ioctl原型

1
2
int (*ioctl)(struct inode *inode,struct file *filp.
		unsigned int cmd,unsigned long arg);

cmd 为指令编号,后面讲述。
arg 为参数。可以是整数也可以是指针,但是内核会以unsigned long形式传送导函数里。
[阅读全文] »

LDD读书笔记第一章-设备驱动程序简介

第一章介绍性的东西。

没有什么知识点。

上传ldd3(linux device drivers 3)的全部配套源码

Linux Device Drivers, Third Edition Source Code