【Linux device driver】设备驱动程序概述(一)
来源:互联网 发布:centos yum安装jdk1.7 编辑:程序博客网 时间:2024/04/30 03:35
1.1 Linux设备驱动程序分类
Linux系统的设备分为三类:
(1)字符设备(char device)
(2)块设备(block device)
(3)网络设备(network device)。
字符设备是指存取时没有缓存的设备。(鼠标,键盘,串行口)
块设备的读写都有缓存来支持,并且块设备必须能够随机存取(random access)(硬盘,软盘,CD-ROM等)。一个文件系统要安装进入操作系统必须在块设备上。
网络设备在Linux里做专门的处理。为屏蔽物理设备的多样性,liunx对所有的网络设备抽象,并定义统一概念:接口(interface)。对于每一个已经驱动了的网络设备,都用一个struct device的数据结构表示。
网络设备与字符设备及块设备的不同
(1)网络接口不存在于linux文件系统中,而是在核心中用一个net_device数据结构表示。而字符和块设备都存在与之对应的设备文件 (/dev/hda1).
(2)网络设备在数据包发送和接收时,直接通过接口访问,而不需要进行文件的操作。
(3)网络接口是在系统初始化的时生成的,对于内核支持但不存在的物理设备,将不存在与只对应的net_device结构。
在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。
<script type="text/javascript"><!--google_ad_client = "pub-2299987709779770";google_ad_width = 468;google_ad_height = 60;google_ad_format = "468x60_as";google_ad_type = "image";google_ad_channel ="";google_color_border = "FFFFFF";google_color_bg = "FFFFFF";google_color_link = "0000FF";google_color_url = "008000";google_color_text = "000000";//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
1.2 编写驱动程序的一些基本概念
1.2.1 发送和接收
这是一个网络设备最基本的功能。
OS必须要提供两个机制:
(1)找到驱动程序的发送函数
(2)驱动程序把收到的数据送给系统。
1.2.2 中断
操作系统在硬件中断发生后调用驱动程序的处理程序。Linux支持中断的共享,即多个设备共享一个中断。
1.2.3 时钟
在网络驱动程序中,如果硬件没有中断功能,定时器可以提供轮询(poll)方式对硬件进行存取。或者是实现某些协议时需要的超时重传等
上一篇:《[linux driver]用I/O命令访问PCI总线设备配置空间》
下一篇:《【Linux device driver】网络设备驱动程序(二)》
<script type="text/javascript"><!--google_ad_client = "pub-2299987709779770";google_ad_width = 728;google_ad_height = 15;google_ad_format = "728x15_0ads_al_s";google_ad_channel ="";google_color_border = "FFFFFF";google_color_link = "0000ff";google_color_bg = "FFFFFF";google_color_text = "000000";google_color_url = "008000";//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 【Linux device driver】设备驱动程序概述(一)
- linux设备驱动程序( linux device driver)
- 【Linux device driver】网络设备驱动程序(二)
- LINUX DEVICE DRIVER(2ND)第3章 字符设备驱动程序(2,主设备号和次设备号)
- LINUX设备驱动之设备模型三--device&driver&bus(一)
- LINUX设备驱动之设备模型三--device&driver&bus(一)
- LINUX设备驱动之设备模型三--device&driver&bus(一)
- linux设备模型之bus,device,driver分析一
- linux设备模型之bus,device,driver分析一
- linux设备模型之bus,device,driver分析一
- linux设备模型之bus,device,driver分析一
- 读书笔记之《Linux Device Driver》-----(一)
- LINUX DEVICE DRIVER(2ND)第3章 字符设备驱动程序(1,待续)
- Linux Device Driver 3, Chp 3 字符设备驱动程序 示例代码修改 -- for kernel 2.6.32
- linux设备模型bus,device,driver(超级推荐)
- 2大类型的设备驱动程序(2 main types of device driver)
- 《Linux设备驱动程序》读书笔记:字符设备驱动程序(一)
- LINUX设备驱动程序笔记(一)设备驱动程序简介
- 用C#实现将汉字转化为拼音,其实现原理就是先将汉字转化为内码,然后通过内码和拼音的对照表来进行查找。
- .Net 2.0开始支持泛型,下面给出摘录一个MSDN上关于泛型的例子
- DataGrid实现自定义分页
- system.data.sqlclient
- windows2003密码忘记了该如何处理?
- 【Linux device driver】设备驱动程序概述(一)
- 漂亮女孩必知道的138件事情
- 今天终于回来了
- Windows下使用Eclipse+CDT编写C/C++程序
- 在這幽靜的環境,有歌聲(梅花三弄)陪伴,寫這自己的代碼﹐那是多么美好的事情呀
- 把共享库(SO)加载到指定的内存地址
- 使用ADO.NET下的SqlBulkCopy类执行批量复制操作
- FCS编程之Application对象
- Spider3 出预告片了