• Linux设备驱动与整个硬件系统的关系


    Linux设备驱动与整个硬件系统的关系

    1、 设备的分类及特点

    计算机系统的硬件主要由CPU、存储器和外设组成。

    随着IC(Integrated circuit)制作工艺的发展,目前芯片的集成度越来越高,往往在CPU内部集成了存储器和外设适配器。

        驱动针对的对象是存储器和外设(包括CPU内部集成的存储器和外设),而不是针对CPU核。

    1.1 设备分类及特点

    Linux将存储器和外设分为3个基本类:

            字符设备:指那些必须以串行顺序依次进行访问的设备。

                      不经过系统的快速缓存

            块设备  :可以用任意顺序进行访问,一块为单位进行操作。

                      经过系统的快速缓存。

            网络设备:是面向数据包的接收和发送而设计的,并不对应于文件系统的节点。

    内核与网络设备的通信与内核和字符设备、块设备的通信方式完全不同。

        但是,字符设备和块设备并没有明显的界限,如对于Flash设备,符合块设备的特点,但我们仍可以把它作为一个字符设备来访问。

    2、 Linux设备驱动与整个软硬件的关系

    如图1所示,除网络设备外,字符设备与块设备都被映射到Linux文件系统的文件和目录,通过文件系统的系统调用接口open()、write()、read()、close()等即可访问字符设备和块设备。所有的字符设备和块设备都被统一地呈现给用户。

        块设备比字符设备复杂,在它上面会首先建立一个磁盘/Flash文件系统(定义了文件和目录在存储介质上的组织)。

        应用程序使用Linux系统调用接口编程,但也可以使用C库函数,出于代码的可移植性的目的,推荐使用C库函数。

        图1,如下:

  • 相关阅读:
    条款04:确定对象在使用前已经被初始化
    条款06:若不想使用编译器自动生成的函数,就应该明确拒绝
    计算机操作系统之死锁的原因和必要条件
    条款10:令operator=返回一个reference to *this
    条款02:尽量以const,enum,inline代替#define
    条款11:在operator=处理自我赋值
    计算机操作系统之进程与线程
    堆排序
    NodeJS For Windows
    我常用的linux命令
  • 原文地址:https://www.cnblogs.com/www886/p/4241286.html
Copyright © 2020-2023  润新知