Viewing Category » Linux设备驱动

Linux设备驱动(五)–系统时钟与定时器

Post Thumbnail of Linux设备驱动(五)--系统时钟与定时器
 Linux设备驱动 3 十二月 2011

时钟脉冲: 脉冲信号是一个按一定电压幅度,一定时间间隔连续发出的脉冲信号,脉冲信号之间的时间间隔称为周期.
时钟频率: 在单位时间(如1秒)内产生的时钟脉冲个数.
频率的其相应的单位有:Hz(赫)、kHz(千赫)、MHz(兆赫)、GHz(吉赫). 其中1GHz=1000MHz,1MHz=1000kHz.1kHz=1000Hz.
……

Linux设备驱动(四)-中断服务

Post Thumbnail of Linux设备驱动(四)-中断服务
 Linux设备驱动 6 九月 2011

Linux中断服务大多数情况下,一个驱动程序只需要为它的设备注册一个中断处理例程,当有中断时进行正确的处理。内核负责维护了一个中断服务信号线的注册表,驱动程序在启动中断服务前会请求一个中断通道,使用完后会释放。
……

Linux设备驱动(三)-file_operations结构体

Post Thumbnail of Linux设备驱动(三)-file_operations结构体
 Linux设备驱动 7 七月 2011

字符设备驱动一旦注册完后就会进入file_operations结构体对设备操作进行定义。
file_operations:是一个字符设备把驱动的操作和设备号联系在一起的纽带,是一系列指针的集合,把系统调用与驱动程序关联起来的关键数据结构,这个结构体的每个成员都对应着一个系统调用。
传统上, 一个 file_operations结构或者其一个指针称为 fops( 或者它的一些变体). 结构中的每个成员必须指向驱动中的函数, 这些函数实现一个特别的操作, 或者对于不支持的操作留置为 NULL. 当指定为 NULL 指针时内核的确切的行为是每个函数不同的。
file_operations中不少参数包含字串”__user”,这种注解是一种文档形式, 注意, 一个指针是一个不能被直接解引用的用户空间地址. 对于正常的编译”__user”没有效果, 但是它可被外部检查软件使用来找出对用户空间地址的错误使用。
……

Linux设备驱动(二)-字符设备驱

Post Thumbnail of Linux设备驱动(二)-字符设备驱
 Linux设备驱动 26 六月 2011

字符设备驱动是学习Linux驱动开发的基础入门,所以应从此开始入手。这一节主要记录字符设备驱动的注册与卸载函数。
在内核Linux-2.6中的字符设备是用cdev结构体来描述的,注册和卸载驱动也是由cdev来完成的。
这次我们来把分解注释和讲解其中的用法。

cdev结构体:
……

Linux设备驱动(一)-驱动基础概述

Post Thumbnail of Linux设备驱动(一)-驱动基础概述
 Linux设备驱动 19 六月 2011

Linux系统的设备分为三种基本类型:字符设备(char device),块设备(block device)和网络设备(network device)三种。

  • 字符设备指存取时没有缓存必须以串行顺序依次进行访问的设备。
  • 块设备指以块为单位进行操作,读写操作都有缓存来支持,并且可以任意顺序进行访问的设备。
  • 网络设备在Linux里做专门的处理,主要对数据包的接收和发送而设计的。Linux的网络系统主要是基于BSD unix的socket机制。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。但内核与网络设备的通信方式和内核与字符设备、块设备之间的通信方式完全不同。

……

Copyright ©2008 - 2016 Yayi's World
知识共享许可协议 粤ICP备09088251号