• 【Linux device driver】设备驱动程序概述(一)


    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)进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。


    1.2 编写驱动程序的一些基本概念

            1.2.1 发送和接收


    这是一个网络设备最基本的功能。
    OS必须要提供两个机制:
    (1)找到驱动程序的发送函数
    (2)驱动程序把收到的数据送给系统。

    1.2.2 中断
    操作系统在硬件中断发生后调用驱动程序的处理程序。Linux支持中断的共享,即多个设备共享一个中断。

    1.2.3 时钟
    在网络驱动程序中,如果硬件没有中断功能,定时器可以提供轮询(poll)方式对硬件进行存取。或者是实现某些协议时需要的超时重传等

    上一篇:《[linux driver]用I/O命令访问PCI总线设备配置空间
    下一篇:《【Linux device driver】网络设备驱动程序(二)

  • 相关阅读:
    C++解决单纯形表
    VS2010 MFC Excel(3)
    VS2010 MFC Excel(1)
    VS2010 MFC 读取Excel(2)
    读取数量不定的输入数据
    牛顿插值
    连接数据库
    雅克比迭代
    NOIP模拟 24
    NOIP模拟 23
  • 原文地址:https://www.cnblogs.com/fengyv/p/2423927.html
Copyright © 2020-2023  润新知